
Strategi ini membuka posisi multihead berdasarkan sinyal tersembunyi dari EMA dan RSI, dengan mengidentifikasi titik-titik yang tersembunyi dari bentuk multihead, menilai bahwa saat ini berada di awal tren naik, sebagai sinyal pembukaan posisi. Pada saat yang sama, kombinasi EMA Gold Cross dengan EMA Emas dan K garis harga penutupan berada di atas EMA Emas, untuk memastikan tren naik.
Strategi EMA rata-rata: menggunakan 50 siklus dengan 250 siklus EMA rata-rata untuk menilai tren silang emas, harga dianggap sebagai sinyal multihead ketika melewati 50 EMA.
Strategi RSI Hidden Deviation: Indikator RSI muncul di titik rendah dan rendah, sementara harga muncul di titik rendah yang lebih tinggi dan sinyal deviasi multihead yang tersembunyi, yang menandakan awal pembalikan. Dengan jumlah terbatas dari titik deviasi, sinyal palsu dapat disaring.
Strategi penutupan K-Line: K-Line melakukan penutupan lebih banyak ketika harga penutupan K-Line melebihi 50 EMA.
Tiga strategi ini digabungkan untuk menilai bahwa tren saat ini mulai naik dan membuka posisi yang lebih besar.
Menggunakan EMA rata-rata untuk menentukan arah tren, bekerja sama dengan sinyal reversal dari indikator RSI, Anda dapat membuka posisi pada tahap awal tren.
Mekanisme double confirmation, menggunakan kombinasi EMA, RSI dan K line closing price, dapat secara efektif menyaring sinyal palsu.
Mengikuti tren garis tengah dan panjang, cocok untuk menilai awal tren baru setelah penghitungan.
Jika EMA menghasilkan dead-fork, maka perlu dilakukan penutupan tepat waktu.
RSI yang tersembunyi dari penilaian sinyal membutuhkan pengalaman tertentu, parameter yang tidak tepat dapat kehilangan sinyal atau kesalahan penilaian.
Parameter untuk varietas yang diperdagangkan perlu disetel secara optimal.
Dinamis menyesuaikan parameter EMA rata-rata, mengoptimalkan akurasi penilaian tren.
Mengatur parameter RSI untuk mengoptimalkan akurasi penilaian deviasi tersembunyi.
Menggunakan Stop Loss, ATR Stop Loss, atau Stop Loss Persentase untuk mengendalikan risiko.
Mengembangkan strategi perdagangan kosong yang memungkinkan strategi untuk membuka posisi kosong di bawah tren turun.
Strategi ini mengintegrasikan penggunaan EMA rata-rata untuk menilai tren besar, ditambah dengan indikator RSI untuk meningkatkan akurasi penilaian, untuk menilai tren naik baru dimulai setelah akhir perhitungan, merupakan strategi pelacakan tren yang lebih konservatif. Dengan mengoptimalkan pengaturan parameter dan menambahkan alat stop loss, dapat memperoleh efek yang lebih baik.
/*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)