Cryptocurrentcy

MERV Stack Indicator for TradingView

ผมเขียน Pine Script สำหรับ TradingView เพื่อใช้สำหรับหาจุดที่เป็นสัญญาณซื้อและขายได้สะดวกขึ้น
MERV Stack Indicator for TradingView
Share this

ผมเขียน Pine Script สำหรับ TradingView เพื่อใช้สำหรับหาจุดที่เป็นสัญญาณซื้อและขายได้สะดวกขึ้น

Pine Script

//@version=6
indicator(title="MERV Stack (Refined)", shorttitle="MERV Stack+", overlay=false)

// =====================
// Inputs
// =====================
src                = input.source(close, title="Source")
use_macd_colors    = input.bool(false, title="Use MACD Colors (Green/Red MACD Histogram)")
confirm_on_close   = input.bool(true, title="Confirm Signals on Bar Close (reduces intra-bar repaint)")
allow_reentry_exit = input.bool(true, title="Allow Re-entry During Exit Window")

// RSI
rsi_len        = input.int(14, minval=5, title="RSI Length")
rsi_pos        = input.int(55, minval=50, title="RSI Positive (mild bullish)")
rsi_strong     = input.int(65, minval=51, title="RSI Strong (strong bullish)")
rsi_ob         = input.int(70, minval=51, title="RSI OverBought (unused visual)")
rsi_os         = input.int(30, minval=1,  title="RSI OverSold (unused visual)")
rsi            = ta.rsi(src, rsi_len)

// MACD (standard: EMA signal)
macd_fast_len  = input.int(12, minval=1, title="MACD FastLength")
macd_slow_len  = input.int(26, minval=1, title="MACD SlowLength")
macd_sig_len   = input.int(9,  minval=1, title="Signal Length")

ma_fast        = ta.ema(src, macd_fast_len)
ma_slow        = ta.ema(src, macd_slow_len)
macd           = ma_fast - ma_slow
signal         = ta.ema(macd, macd_sig_len)
hist           = macd - signal

// SMA-EMA
sma_fast_len   = input.int(5,  minval=1, title="SMA FastLength")
sma_slow_len   = input.int(20, minval=1, title="SMA SlowLength")
ema_fast_len   = input.int(5,  minval=1, title="EMA FastLength")
ema_slow_len   = input.int(20, minval=1, title="EMA SlowLength")

sma_fast       = ta.sma(src, sma_fast_len)
sma_slow       = ta.sma(src, sma_slow_len)
ema_fast       = ta.ema(src, ema_fast_len)
ema_slow       = ta.ema(src, ema_slow_len)

// VWAP (use close vs vwap for comparison consistency)
vwap           = ta.vwap(hlc3)

// =====================
// Derived Signals
// =====================
rsi_up         = rsi >= rsi_pos
rsi_strong_up  = rsi >= rsi_strong
macd_up        = hist > 0
macd_rising    = hist > hist[1]
ema_up         = ema_fast > ema_slow
price_above_vw = close > vwap

signal_count   = (rsi_up ? 1 : 0) + (macd_up ? 1 : 0) + (ema_up ? 1 : 0)

// Entry (strong confluence)
strong_long    = price_above_vw and rsi_strong_up and ema_up and macd_up and macd_rising

// Exit: MACD crossing down (MACD <= Signal with a bearish cross)
macd_cross_down = ta.crossover(signal, macd)

// =====================
// State: Entry/Exit window
// =====================
var bool in_position     = false
var int  exit_bar_count  = 0
exit_bar_duration        = input.int(3, minval=1, title="Exit Highlight Bars")

// Gate signals at bar close if requested
can_fire = confirm_on_close ? barstate.isconfirmed : true

// Entry/Exit state transitions
if can_fire
    // Exit condition
    if in_position and macd_cross_down
        exit_bar_count := exit_bar_duration
        in_position    := false

    // Allow re-entry during exit window if toggle enabled
    if strong_long and (allow_reentry_exit or exit_bar_count == 0)
        in_position := true

// Exit bar countdown
if exit_bar_count > 0 and can_fire
    exit_bar_count -= 1

// =====================
// Coloring Logic
// =====================
var color SIGNAL_LINE_COLOR = color.purple

// MACD histogram color logic (standard)
color macd_hist_color = color.gray
if hist >= 0
    macd_hist_color := hist > hist[1] ? color.green : color.new(color.green, 60)
else
    macd_hist_color := hist < hist[1] ? color.red   : color.new(color.red, 60)

// Custom Plot Color logic
color plot_color = color.gray

if exit_bar_count > 0
    plot_color := color.blue
else
    if price_above_vw
        if rsi_strong_up and ema_up and macd_up and macd_rising
            plot_color := color.lime
        else if rsi_up and ema_up and macd_up
            plot_color := color.green
        else if (signal_count == 2) or (macd_up and not macd_rising)
            plot_color := color.orange
        else if signal_count == 1
            plot_color := color.red
        else
            plot_color := color.gray
    else
        // More conservative when below VWAP
        if rsi_strong_up and ema_up and macd_up and macd_rising
            plot_color := color.orange
        else if signal_count >= 2
            plot_color := color.red
        else
            plot_color := color.red

// MACD line color logic
color macd_line_color = use_macd_colors ? color.blue : (price_above_vw ? color.green : color.white)

// =====================
// Plots
// =====================
plot(hist,
     title="Histogram",
     color=use_macd_colors ? macd_hist_color : plot_color,
     style=plot.style_histogram,
     linewidth=4)

hline(0, '0 Line', linestyle=hline.style_solid, linewidth=1, color=color.silver)

plot(macd,
     title="MACD",
     color=macd_line_color,
     style=plot.style_line,
     linewidth=2)

plot(signal,
     title="Signal",
     color=SIGNAL_LINE_COLOR,
     style=plot.style_line,
     linewidth=1)

// =====================
// Alerts (optional)
// =====================
alertcondition(strong_long and (allow_reentry_exit or exit_bar_count == 0),
               title="Strong Long Setup",
               message="MERV Stack+: Strong long setup detected")

alertcondition(macd_cross_down,
               title="MACD Bearish Cross (Exit)",
               message="MERV Stack+: MACD crossed down (consider exit)")

SCR-20251002-kaul

คู่มือการใช้งาน MERV Stack สำหรับ TradingView

ภาพรวม

MERV Stack เป็นอินดิเคเตอร์ที่ผสานสัญญาณจาก MACD, RSI, EMA และ VWAP เพื่อประเมิน “แรงหนุนฝั่งซื้อ” ด้วยสีของ MACD Histogram และเส้น MACD/Signal โดยออกแบบให้เน้นจังหวะที่มีความสอดคล้องของเทรนด์ระยะสั้น-กลาง และกรองสัญญาณด้วยตำแหน่งราคาเทียบ VWAP

องค์ประกอบหลัก

1) MACD (มาตรฐาน)

  • MACD = EMA(src, fast) − EMA(src, slow)
  • Signal = EMA(MACD, signalLength)
  • Histogram = MACD − Signal
  • ใช้สีมาตรฐานเมื่อเปิดโหมด “Use MACD Colors”:
    • เขียวเข้ม: Histogram บวกและเพิ่มขึ้น
    • เขียวอ่อน: Histogram บวกแต่ลดลง
    • แดงเข้ม: Histogram ลบและลดลงต่อ
    • แดงอ่อน: Histogram ลบแต่เริ่มเพิ่มขึ้น
  • เมื่อปิดโหมด “Use MACD Colors” จะใช้สีตามตรรกะรวม (ดูหัวข้อ “ตรรกะสี Histogram”)

2) RSI

  • rsi_len ค่าเริ่มต้น 14
  • เกณฑ์หลัก:
    • RSI_Positive (เชิงบวกเบา) = 55
    • RSI_Strong (เชิงบวกมาก) = 65
  • ในตรรกะจะใช้ rsi ≥ 55 เพื่อเพิ่มคะแนน และ rsi ≥ 65 เพื่อยกระดับสัญญาณเป็น “เข้มแข็ง”

3) EMA Trend

  • EMA_Fast vs EMA_Slow (ค่าเริ่มต้น 5/20)
  • EMA_Up = EMA_Fast > EMA_Slow เพื่อบ่งชี้แนวโน้มขาขึ้นระยะสั้น

4) VWAP

  • เปรียบเทียบ close กับ vwap เพื่อดูว่าราคาอยู่เหนือหรือใต้ค่าเฉลี่ยแบบมีน้ำหนักตามปริมาณ (price_above_vw = close > vwap)
  • ใช้เป็นตัวกรองเทรนด์: เหนือ VWAP = เน้นฝั่งซื้อ ใต้ VWAP = ระวัง/อนุรักษนิยม

5) สถานะและหน้าต่าง Exit

  • มีตัวแปร in_position และ exit_bar_count เพื่อไฮไลต์ช่วง “หลังพบสัญญาณออก” ด้วยสีฟ้า (blue) จำนวน N แท่ง (ค่าเริ่มต้น 3) เพื่อเตือนว่าฝั่งซื้ออ่อนแรงชั่วคราว
  • สามารถตั้งค่า allow_reentry_exit เพื่ออนุญาตให้กลับเข้าสญญาณแรงซื้ออีกครั้งระหว่างช่วงสีฟา หากเงื่อนไขแข็งแรงกลับมา

6) ยืนยันสญญาณเมื่อแท่งปิด (bar close)

  • confirm_on_close = true จะลดสญญาณหลอกที่เกิดระหว่างแท่งกำลังวิ่ง (intra-bar) โดยตัดสินใจเมื่อแทงปิดเท่านั้น

ตรรกะสี Histogram (เมื่อปิด Use MACD Colors)

  • สีฟ้า (blue): ช่วง Exit highlight (MACD มีการครอสลงก่อนหน้า) ใช้เตือนว่าควรระวังฝั่งซื้อ
  • เหนือ VWAP:
    • เขียวมะนาว (lime): เงื่อนไขแรงซื้อครบถ้วน (RSI_StrongUp + EMA_Up + MACD_Up + MACD_Rising)
    • เขียว (green): เงื่อนไขซื้อเชิงบวก (RSI_Up + EMA_Up + MACD_Up)
    • ส้ม (orange): มี 2 ใน 3 สัญญาณ หรือ MACD บวกแต่ไม่เพิ่มขึ้น
    • แดง (red): มี 1 ใน 3 สัญญาณ
    • เทา (gray): ไม่มีสัญญาณบวก
  • ใต้ VWAP:
    • ส้ม (orange): แรงมากแต่ยังอยู่ใต้ VWAP (ลดความมั่นใจ)
    • แดง (red): 2 สัญญาณขึ้นไปแต่ยังใต้ VWAP หรือสัญญาณอ่อนแอ รวมถึงกรณอื่น ๆ

สรุปการใช้งานแบบเร็ว

  • เปิดบนกราฟที่ใช้: เลือก src เป็น close (ค่าเริ่มต้น) และปรับ RSI/EMA/MACD ตามสินทรพย์และไทม์เฟรม
  • โหมดสี:
    • ถ้าตองการอ่านพฤติกรรม MACD แบบมาตรฐาน: เปิด “Use MACD Colors”
    • ถ้าต้องการอ่านแรงหนุนจากทั้ง MACD+RSI+EMA+VWAP: ปิด “Use MACD Colors” แล้วดูสีตามตรรกะรวม
  • การอ่านสัญญาณ:
    • เหนือ VWAP + lime/green: ฝั่งซื้อได้เปรียบ (lime เขมแข็งกว่า green)
    • เหนือ VWAP + orange: เริ่มมีแรง แต่ยังไม่ครบองค์ประกอบ หรือโมเมนตม MACD เริ่มชะลอ
    • ใต้ VWAP + orange/red: ระวังเป็นพิเศษ เป็นสัญญาณตานเทรนด์หลัก
    • blue: เพิ่งมีสัญญาณออกจากฝั่งซื้อ (MACD ครอสลง) ให้ลดความเสี่ยง/รอคดกรองรอบใหม่
  • คำแนะนำด้านไทมเฟรม (สำหรับ day trading 30m > 15m > 5m):
    • ใช้ 30m เป็นเทรนด์หลักและตำแหน่งเหนือ/ใต้ VWAP
    • หาเซ็ตอัพบน 15m ให้สอดคลองกับ 30m
    • จังหวะเข้า-ออกละเอียดบน 5m โดยอ้างอิงสี lime/green เมื่อเหนือ VWAP
  • ปรับลดสัญญาณหลอก:
    • เปิด confirm_on_close = true เพื่อตัดสินใจเฉพาะเมื่อแท่งปิด
    • พิจารณาลด RSI_Strong เป็น ~60–62 หากเทรดครปโตช่วงสั้นให้ได้จังหวะมากขึ้น
  • การแจ้งเตือน:
    • มี alertcondition สำหรับ “Strong Long Setup” และ “MACD Bearish Cross (Exit)” (แม้จะไม่ได้แสดงรูปรางบนกราฟ) ตั้งค่า Alerts ใน TradingView ตามต้องการ

การตั้งค่าแนะนำเบื้องต้น

  • MACD: 12/26/9 (มาตรฐาน)
  • EMA Fast/Slow: 5/20 สำหรับตลาดคริปโตระยะสั้น
  • RSI: 14; RSI_Positive = 55, RSI_Strong = 65 (ลองปรบ 60–62 สำหรับ 5–15m)
  • Exit Highlight Bars: 3 (ปรับตามความเร็วของสินทรัพย์)
  • confirm_on_close: เปิด
  • allow_reentry_exit: เปิด สำหรับตลาดที่ผันผวน

แนวทางตีความสัญญาณเชิงกลยุทธ์

  • เขาซื้อแบบอนุรักษ์: รอ lime เหนอ VWAP + MACD_Rising แล้วใช้ green/lime ต่อเนื่องยืนยัน
  • เข้าซื้อแบบเชิงรุก: เหนือ VWAP + green พร้อมดู orange เป็นสัญญาณเตรียมการ (แต่รอยืนยันด้วย lime หรือคอนเฟิร์มแทงปด)
  • ลด/ออก: เมื่อเห็น blue และ MACD ครอสลง ให้ลดขนาดสถานะหรือรอจดตั้งต้นใหม่
  • หลีกเลยงสวนเทรนด์: สีส้ม/แดงใตวีแวป ให้ใช้เป็นช่วงเฝ้าระวง ไม่แนะนำเทรดสวน

ข้อควรทราบ

  • อินดิเคเตอร์นี้เป็นตัวช่วยการตดสินใจ ไม่ใช่สัญญาณซื้อขายอัตโนมัติ
  • ไม่มีการเรียกดูไทมเฟรมสูงกว่า (security) จึงลดความเสี่ยงการ repaint แต่สัญญาณ intra-bar ยังแกว่งได้ หากปิดแทงแล้วค่อยยืนยันจะนิ่งกว่า
  • แนะนำให้ทดสอบย้อนหลัง (backtest แบบ manual) กับสินทรัพย์/ไทม์เฟรมที่ใชงานจริงเพื่อปรับพารามิเตอร์ให้เหมาะสม

TL;DR

สรุปสั้นสำหรับผู้ใช้ใหม่

  • ดูสี Histogram เป็นหลัก:
    • lime/green เหนือ VWAP = ซื้อได้เปรียบ
    • orange = เริ่มมีแรงแต่ยังไม่ครบ หรือโมเมนตัมชะลอ
    • red/gray = ยังไม่พร้อม
    • blue = เพิ่งมีสัญญาณออก (ระวัง/พัก)
  • เปิด confirm_on_close เพื่อลดสญญาณหลอก และปรับ RSI_Strong ให้เหมาะกับความเร็วของตลาดที่คุณเทรด
Post Views: 7