Technology

cách vẽ đường kháng cự và hỗ trợ

cách vẽ đường kháng cự và hỗ trợ
cách vẽ đường kháng cự và hỗ trợ | SiamCafe Blog
2026-05-04· อ. บอม — SiamCafe.net· 10,833 คำ

Support Resistance

แนวรับแนวต้าน Support Resistance Price Action Swing High Low Trend Line Fibonacci Retracement Breakout Pullback Zone Confluence Trading Strategy

ประเภทวิธีหาความแข็งแรงTimeframeเหมาะกับ
Horizontal S/RSwing High/Lowสูงทุก TFทั่วไป
Trend LineHigher Lows / Lower HighsปานกลางH1+Trending
FibonacciSwing High → Lowสูง (Confluence)H4+Retracement
Moving AverageEMA 20/50/200ปานกลางทุก TFDynamic S/R
Round Numbers1.1000, 1.2000ปานกลางทุก TFPsychological

Drawing Support Resistance

# === Support & Resistance Analysis ===

# pip install pandas numpy matplotlib

import numpy as np
from dataclasses import dataclass

# Finding Swing Points
# def find_swing_highs(data, window=5):
#     highs = []
#     for i in range(window, len(data) - window):
#         if data['High'][i] == max(data['High'][i-window:i+window+1]):
#             highs.append((i, data['High'][i]))
#     return highs
#
# def find_swing_lows(data, window=5):
#     lows = []
#     for i in range(window, len(data) - window):
#         if data['Low'][i] == min(data['Low'][i-window:i+window+1]):
#             lows.append((i, data['Low'][i]))
#     return lows

# Support/Resistance Zone Clustering
# def cluster_levels(levels, tolerance_pct=0.5):
#     """Group nearby price levels into zones"""
#     if not levels:
#         return []
#     sorted_levels = sorted(levels)
#     zones = []
#     current_zone = [sorted_levels[0]]
#     for level in sorted_levels[1:]:
#         if (level - current_zone[-1]) / current_zone[-1] * 100 < tolerance_pct:
#             current_zone.append(level)
#         else:
#             zones.append({
#                 'low': min(current_zone),
#                 'high': max(current_zone),
#                 'center': np.mean(current_zone),
#                 'touches': len(current_zone),
#             })
#             current_zone = [level]
#     zones.append({
#         'low': min(current_zone),
#         'high': max(current_zone),
#         'center': np.mean(current_zone),
#         'touches': len(current_zone),
#     })
#     return sorted(zones, key=lambda x: x['touches'], reverse=True)

@dataclass
class SRLevel:
    level_type: str
    price: float
    zone_low: float
    zone_high: float
    touches: int
    timeframe: str
    strength: str

levels = [
    SRLevel("Resistance", 1.0950, 1.0940, 1.0960, 5, "Daily", "Strong"),
    SRLevel("Resistance", 1.0880, 1.0870, 1.0890, 3, "H4", "Medium"),
    SRLevel("Support", 1.0800, 1.0790, 1.0810, 4, "Daily", "Strong"),
    SRLevel("Support", 1.0750, 1.0740, 1.0760, 2, "H4", "Weak"),
    SRLevel("Support", 1.0700, 1.0690, 1.0710, 6, "Weekly", "Very Strong"),
]

print("=== EUR/USD Support & Resistance ===")
for l in levels:
    print(f"  [{l.level_type}] {l.price:.4f} (Zone: {l.zone_low:.4f}-{l.zone_high:.4f})")
    print(f"    Touches: {l.touches} | TF: {l.timeframe} | Strength: {l.strength}")

Fibonacci Retracement

# === Fibonacci Retracement Calculator ===

def fibonacci_levels(swing_high, swing_low, direction="up"):
    """Calculate Fibonacci retracement levels"""
    diff = swing_high - swing_low
    fib_ratios = {
        "0%": 0.0,
        "23.6%": 0.236,
        "38.2%": 0.382,
        "50%": 0.500,
        "61.8%": 0.618,
        "78.6%": 0.786,
        "100%": 1.000,
    }
    levels = {}
    for name, ratio in fib_ratios.items():
        if direction == "up":
            levels[name] = swing_high - (diff * ratio)
        else:
            levels[name] = swing_low + (diff * ratio)
    return levels

# EUR/USD Example
swing_high = 1.0950
swing_low = 1.0700

print("=== Fibonacci Retracement (Uptrend) ===")
print(f"  Swing High: {swing_high:.4f}")
print(f"  Swing Low:  {swing_low:.4f}")
print()

fib = fibonacci_levels(swing_high, swing_low, "up")
for name, price in fib.items():
    marker = " ← Golden Ratio" if name == "61.8%" else ""
    marker = " ← Key Level" if name == "50%" else marker
    print(f"  {name:>6}: {price:.4f}{marker}")

# Confluence Check
print("\n=== Confluence Analysis ===")
confluences = [
    {"fib": "38.2%", "price": 1.0854, "sr": "H4 Resistance 1.0880", "confluence": "Weak"},
    {"fib": "50%", "price": 1.0825, "sr": "Daily Support 1.0800", "confluence": "Medium"},
    {"fib": "61.8%", "price": 1.0796, "sr": "Daily Support 1.0800", "confluence": "Strong"},
]

for c in confluences:
    print(f"  Fib {c['fib']} ({c['price']:.4f}) + {c['sr']}")
    print(f"    Confluence: {c['confluence']}")

Trading Strategy

# === S/R Trading Strategy ===

@dataclass
class TradeSetup:
    setup_type: str
    entry: str
    stop_loss: str
    take_profit: str
    risk_reward: float
    confirmation: str
    win_rate: str

setups = [
    TradeSetup(
        "Bounce Buy (Support)",
        "Buy ที่ Support Zone + Bullish Candle",
        "ใต้ Support Zone 10-20 pips",
        "Resistance ถัดไป",
        2.0,
        "Bullish Engulfing / Pin Bar / RSI Oversold",
        "55-65%"
    ),
    TradeSetup(
        "Bounce Sell (Resistance)",
        "Sell ที่ Resistance Zone + Bearish Candle",
        "เหนือ Resistance Zone 10-20 pips",
        "Support ถัดไป",
        2.0,
        "Bearish Engulfing / Shooting Star / RSI Overbought",
        "55-65%"
    ),
    TradeSetup(
        "Breakout Buy",
        "Buy เมื่อ Close เหนือ Resistance + Volume",
        "ใต้ Resistance เดิม (Now Support)",
        "Resistance ถัดไป / Measured Move",
        2.5,
        "Strong Candle Close + Volume Spike",
        "45-55%"
    ),
    TradeSetup(
        "Retest Buy",
        "Buy เมื่อ Pullback มาทดสอบ Broken Resistance",
        "ใต้ Retest Level",
        "Previous High / Measured Move",
        3.0,
        "Rejection Candle at Retest Level",
        "60-70%"
    ),
]

print("=== S/R Trading Setups ===")
for s in setups:
    print(f"  [{s.setup_type}]")
    print(f"    Entry: {s.entry}")
    print(f"    SL: {s.stop_loss}")
    print(f"    TP: {s.take_profit}")
    print(f"    R:R: 1:{s.risk_reward} | Confirm: {s.confirmation}")
    print(f"    Win Rate: {s.win_rate}")
    print()

# Common Mistakes
mistakes = [
    "วาดเส้นเดียวแทนที่จะเป็น Zone",
    "ใช้ Timeframe เล็กเกินไป (M1 M5) แนวไม่แข็ง",
    "ไม่รอ Confirmation เข้าทันทีที่ถึงแนว",
    "วาง Stop Loss แค่ 1-2 pip ใต้แนว โดนกวาดง่าย",
    "ไม่สนใจ Trend ใหญ่ สวนเทรนด์",
    "วาดแนวมากเกินไป สับสน",
]

print("Common Mistakes:")
for i, m in enumerate(mistakes, 1):
    print(f"  {i}. {m}")

เคล็ดลับ

การนำความรู้ไปประยุกต์ใช้งานจริง

แหล่งเรียนรู้ที่แนะนำ ได้แก่ Official Documentation ที่อัพเดทล่าสุดเสมอ Online Course จาก Coursera Udemy edX ช่อง YouTube คุณภาพทั้งไทยและอังกฤษ และ Community อย่าง Discord Reddit Stack Overflow ที่ช่วยแลกเปลี่ยนประสบการณ์กับนักพัฒนาทั่วโลก

เปรียบเทียบข้อดีและข้อเสีย

ข้อดีข้อเสีย
ประสิทธิภาพสูง ทำงานได้เร็วและแม่นยำ ลดเวลาทำงานซ้ำซ้อนต้องใช้เวลาเรียนรู้เบื้องต้นพอสมควร มี Learning Curve สูง
มี Community ขนาดใหญ่ มีคนช่วยเหลือและแหล่งเรียนรู้มากมายบางฟีเจอร์อาจยังไม่เสถียร หรือมีการเปลี่ยนแปลงบ่อยในเวอร์ชันใหม่
รองรับ Integration กับเครื่องมือและบริการอื่นได้หลากหลายต้นทุนอาจสูงสำหรับ Enterprise License หรือ Cloud Service
เป็น Open Source หรือมีเวอร์ชันฟรีให้เริ่มต้นใช้งานต้องการ Hardware หรือ Infrastructure ที่เพียงพอ

จากตารางเปรียบเทียบจะเห็นว่าข้อดีมีมากกว่าข้อเสียอย่างชัดเจน โดยเฉพาะในแง่ของประสิทธิภาพและความสามารถในการ Scale สำหรับข้อเสียส่วนใหญ่สามารถแก้ไขได้ด้วยการเรียนรู้อย่างเป็นระบบและวางแผนทรัพยากรให้เหมาะสม

แนวรับแนวต้านคืออะไร

Support ราคาเด้งขึ้น แรงซื้อ Resistance ราคาเด้งลง แรงขาย Supply Demand Swing High Low Volume Role Reversal ทะลุสลับบทบาท

วาดเส้นแนวรับแนวต้านอย่างไร

Swing High Low เส้นแนวนอน เด้งหลายครั้งแข็งแรง Zone แทนเส้นเดียว Timeframe ใหญ่ก่อน Weekly Daily H4 แข็งกว่า

Fibonacci Retracement ใช้อย่างไร

Swing High Low 23.6% 38.2% 50% 61.8% 78.6% Golden Ratio Confluence ตรงกับ S/R แข็งมาก Trend เท่านั้น ไม่ Sideways

เทรดด้วยแนวรับแนวต้านอย่างไร

Buy Support SL ใต้ TP Resistance Sell Resistance SL เหนือ TP Support Breakout Volume Pullback Retest Confirmation Candlestick

สรุป

แนวรับแนวต้าน Support Resistance Price Action Swing Fibonacci Retracement Confluence Zone Breakout Pullback Retest Trading Strategy Confirmation

📖 บทความที่เกี่ยวข้อง

cách xác định mức hỗ trợ và kháng cựอ่านบทความ → cách vẽ đường kháng cự và hỗ trợ chứng khoánอ่านบทความ → cách xác định vùng kháng cự và hỗ trợอ่านบทความ → công cụ xác định kháng cự hỗ trợอ่านบทความ → indicator hỗ trợ kháng cựอ่านบทความ →

📚 ดูบทความทั้งหมด →