Strategi ini membuka kedudukan panjang berdasarkan penyambungan EMA dan isyarat divergensi menaik yang tersembunyi untuk mengenal pasti permulaan trend menaik. Gabungan garis EMA, penunjuk RSI, dan harga penutupan K-line memberikan pengesahan berganda untuk memastikan momentum menaik. Strategi ini sesuai untuk mengikuti trend jangka menengah dan panjang dan membuka kedudukan panjang selepas penyatuan harga.
Strategi EMA: Menggunakan salib emas EMA 50 tempoh dan EMA 250 tempoh untuk menentukan arah trend. Penutupan di atas 50 EMA memberikan isyarat panjang.
RSI Hidden Divergence Strategy: RSI membentuk tahap terendah yang lebih rendah sementara harga membentuk tahap terendah yang lebih tinggi, menandakan pembalikan trend pada permulaan.
Strategi Penutupan Garis K: Pergi panjang apabila harga penutupan berada di atas garis 50 EMA.
Gabungan tiga strategi di atas mengenal pasti permulaan trend menaik dan membuka kedudukan panjang.
Menggunakan garis EMA untuk menentukan arah trend bersama dengan isyarat pembalikan RSI membolehkan kemasukan awal pada permulaan trend.
Pengesahan berganda dari garis EMA, penunjuk RSI, dan harga penutupan garis K berkesan menapis isyarat palsu.
Mengikuti trend jangka menengah dan panjang menjadikannya sesuai untuk mengenal pasti trend menaik baru selepas penyatuan.
Tutup kedudukan apabila garis EMA mempunyai salib kematian.
Mengenali perbezaan RSI yang tersembunyi memerlukan pengalaman, penyesuaian parameter yang tidak betul boleh menyebabkan isyarat yang hilang atau salah.
Parameter perlu dioptimumkan untuk instrumen perdagangan yang berbeza.
Sesuaikan parameter EMA secara dinamik untuk ketepatan penentuan trend yang lebih baik.
Sempurnakan parameter RSI untuk ketepatan isyarat divergensi tersembunyi yang lebih baik.
Tambah mekanisme stop loss seperti ATR atau peratusan berhenti untuk mengawal risiko.
Membangunkan strategi untuk kedudukan pendek untuk memperdagangkan trend menurun.
Strategi ini menggabungkan garis EMA untuk penentuan trend dan isyarat RSI untuk meningkatkan ketepatan. Ia mengenal pasti trend menaik baru selepas penyatuan. Dengan penyesuaian parameter yang betul dan pengurusan risiko, ia dapat mencapai hasil yang baik. Berbanding dengan strategi purata bergerak yang mudah, ia mempunyai ketepatan yang lebih tinggi dalam menangkap trend dengan kadar kemenangan yang lebih baik. Secara keseluruhan, ia adalah trend praktikal yang mengikuti strategi.
/*backtest start: 2024-01-25 00:00:00 end: 2024-02-01 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="EMA RSI ATR Hidden Div Strat", shorttitle="Hidden Div Strat", overlay = true, pyramiding = 0, max_bars_back=3000, calc_on_order_fills = false, commission_type = strategy.commission.percent, commission_value = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital=5000, currency=currency.USD) // Time Range FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12) FromDay=input(defval=1,title="FromDay",minval=1,maxval=31) FromYear=input(defval=2020,title="FromYear",minval=2016) ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12) ToDay=input(defval=1,title="ToDay",minval=1,maxval=31) ToYear=input(defval=9999,title="ToYear",minval=2017) start=timestamp(FromYear,FromMonth,FromDay,00,00) finish=timestamp(ToYear,ToMonth,ToDay,23,59) window()=>true // Bar's time happened on/after start date? afterStartDate = time >= start and time<=finish?true:false //EMA'S emasrc = close len1 = input(50, minval=1, title="EMA1") ema1 = ema(emasrc, len1) col1 = color.white len2 = input(250, minval=1, title="EMA2") ema2 = ema(emasrc, len2) col2 = color.yellow //Plots plot(ema1, title="EMA1", linewidth=1, color=col1) plot(ema2, title="EMA2", linewidth=1, color=col2) //Stoch periodK = input(4, title="K", minval=1) periodD = input(4, title="D", minval=1) smoothK = input(3, title="Smooth", minval=1) k = sma(stoch(close, high, low, periodK), smoothK) d = sma(k, periodD) //Hidden Divergence Indikator len = input(title="RSI Period", minval=1, defval=14) src = input(title="RSI Source", defval=close) lbR = input(title="Pivot Lookback Right", defval=1) lbL = input(title="Pivot Lookback Left", defval=19) rangeUpper = input(title="Max of Lookback Range", defval=20) rangeLower = input(title="Min of Lookback Range", defval=4) hiddenBullColor = color.new(color.green, 80) textColor = color.white noneColor = color.new(color.white, 100) osc = rsi(src, len) plFound = na(pivotlow(osc, lbL, lbR)) ? false : true phFound = na(pivothigh(osc, lbL, lbR)) ? false : true _inRange(cond) => bars = barssince(cond == true) rangeLower <= bars and bars <= rangeUpper //------------------------------------------------------------------------------ // Hidden Bullish // Osc: Lower Low oscLL = osc[lbR] < valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1]) // Price: Higher Low priceHL = low[lbR] > valuewhen(plFound, low[lbR], 1) hiddenBullCond = priceHL and oscLL and plFound //buy Conditions buyhiddenbull = hiddenBullCond[1] or hiddenBullCond[2] or hiddenBullCond[3] or hiddenBullCond[4] or hiddenBullCond[5] or hiddenBullCond[6] or hiddenBullCond[7] or hiddenBullCond[8] or hiddenBullCond[9] or hiddenBullCond[10] emacondition = ema1 > ema2 upcondition = close[1] > ema1[1] and ema2[1] and close[2] > ema1[2] and ema2[2] and close[3] > ema1[3] and ema2[3] crossup = k[0] >= d[0] and k[1] <= d[1] longcondition = emacondition and upcondition and crossup and buyhiddenbull if (afterStartDate) strategy.entry("Long", strategy.long, when = longcondition) //TakeProfit, StopLoss lowest low profitfactor = input(title="Profitfactor", type=input.float, step=0.1, defval=1.6) loLen = input(title="Lowest Low Lookback", type=input.integer, defval=38, minval=2) stop_level = lowest(low, loLen)[1] bought = strategy.position_size[1] < strategy.position_size barsbought = barssince(bought) if strategy.position_size>0 profit_level = strategy.position_avg_price + ((strategy.position_avg_price - stop_level[barsbought])*profitfactor) strategy.exit(id="TP/ SL", stop=stop_level[barsbought], limit=profit_level)