
Ini adalah strategi perdagangan kuantitatif yang menggabungkan tren tren EMA tinggi dan rendah di garis harian. Strategi ini terutama digunakan untuk menilai waktu perdagangan dengan memantau harga yang melanggar titik tinggi dan rendah hari sebelumnya, digabungkan dengan garis rata-rata EMA dan indikator aliran dana (CMF). Strategi ini menggunakan garis jam dan garis harian dalam dua periode waktu 200 siklus rata-rata EMA untuk meningkatkan akurasi perdagangan dengan verifikasi beberapa indikator teknis.
Logika inti dari strategi ini mencakup elemen-elemen kunci berikut:
Aturan transaksi yang spesifik adalah sebagai berikut: Buat beberapa kondisi: harga menembus titik tertinggi sehari sebelumnya + harga penutupan di atas EMA + CMF positif Kondisi penarikan: harga turun ke level terendah sehari sebelumnya + harga penutupan di bawah EMA + CMF negatif Kondisi Posisi Padat: harga saat melakukan overtime jatuh di bawah EMA, harga saat melakukan shorting menembus EMA
Saran pengendalian risiko:
Ini adalah sistem perdagangan lengkap yang menggabungkan beberapa indikator teknis dan analisis siklus waktu yang berbeda. Strategi ini mencari peluang perdagangan melalui analisis komprehensif tentang high-low breakout, tren rata-rata, dan aliran dana. Meskipun ada risiko tertentu, dengan pengendalian risiko yang masuk akal dan perbaikan optimasi berkelanjutan, strategi ini memiliki nilai aplikasi yang baik.
/*backtest
start: 2024-10-28 00:00:00
end: 2024-11-27 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='The security Daily HIGH/LOW strategy', overlay=true, initial_capital=10000, calc_on_every_tick=true,
default_qty_type=strategy.percent_of_equity, default_qty_value=100,
commission_type=strategy.commission.percent, commission_value=0.1)
// General Inputs
len = input.int(24, minval=1, title='Length MA', group='Optimization parameters')
src = input.source(close, title='Source MA', group='Optimization parameters')
out = ta.ema(src, len)
length = input.int(20, minval=1, title='CMF Length', group='Optimization parameters')
ad = close == high and close == low or high == low ? 0 : (2 * close - low - high) / (high - low) * volume
mf = math.sum(ad, length) / math.sum(volume, length)
// Function to get daily high and low
f_secureSecurity(_symbol, _res, _src) =>
request.security(_symbol, _res, _src[1], lookahead=barmerge.lookahead_on)
pricehigh = f_secureSecurity(syminfo.tickerid, 'D', high)
pricelow = f_secureSecurity(syminfo.tickerid, 'D', low)
// Plotting previous daily high and low
plot(pricehigh, title='Previous Daily High', style=plot.style_linebr, linewidth=2, color=color.new(color.white, 0))
plot(pricelow, title='Previous Daily Low', style=plot.style_linebr, linewidth=2, color=color.new(color.white, 0))
// Entry Conditions
short = ta.crossunder(low, pricelow) and close < out and mf < 0
long = ta.crossover(high, pricehigh) and close > out and mf > 0
if short and barstate.isconfirmed
strategy.entry('short', strategy.short, stop=pricelow[1])
strategy.close('short', when=close > out)
if long and barstate.isconfirmed
strategy.entry('long', strategy.long, stop=pricehigh[1])
strategy.close('long', when=close < out)
// 200 EMA on 1-hour timeframe
ema_200 = ta.ema(close, 200)
ema_200_1h = request.security(syminfo.tickerid, "60", ta.ema(close, 200))
plot(ema_200_1h, color=color.purple, title="200 EMA (1H)")
plot(ema_200, color=color.white, title="200 EMA")