Strategi ini adalah berdasarkan pada persilangan rata-rata bergerak dan penunjuk ATR untuk mencapai perdagangan trend pemantauan automatik. Apabila EMA cepat melintasi EMA perlahan, ia diambil sebagai kedudukan multihead; Apabila EMA cepat melintasi EMA perlahan, ia diambil sebagai kedudukan shorthead. Di samping itu, gabungan penunjuk ATR untuk menentukan arah trend, hanya apabila ATR memutuskan arah trend, isyarat perdagangan dikeluarkan.
Strategi ini berdasarkan kepada dua petunjuk teknikal:
EMA rata-rata: EMA rata-rata dengan dua parameter yang berbeza, dianggap sebagai isyarat multihead apabila ia melintasi garis lambat pada garis cepat, dan dianggap sebagai isyarat kosong apabila ia melintasi garis kosong.
Indeks ATR: Indeks ATR dapat menentukan besarnya dan kekuatan turun naik harga, dan dengan itu menentukan kecenderungan pergerakan semasa. Apabila nilai ATR lebih kecil, ia menunjukkan bahawa ia sedang dalam penataan, dan tidak baik untuk meletakkan saham; apabila nilai ATR lebih besar dan ke arah atas, ia menunjukkan bahawa ia sedang berada di pasaran tren, dan menunggu EMA untuk melakukan lebih banyak; apabila nilai ATR lebih besar dan ke arah bawah, ia menunjukkan bahawa ia sedang berada di pasaran tren, dan menunggu EMA untuk mati.
Melalui persimpangan EMA rata-rata untuk mencari peluang jual beli, sementara digabungkan dengan penunjuk ATR untuk menyaring isyarat perdagangan yang kurang trend dan mengelakkan terkurung dalam penyusunan pasaran yang bergolak.
Strategi ini mempunyai kelebihan berikut:
Hanya berdagang apabila indikator ATR menilai ia adalah trend, membantu mengelakkan kecederaan yang tidak diketahui.
Menggunakan prinsip persilangan garis rata-rata untuk mencari titik jual beli, mudah dan berkesan.
Sensitiviti dan kelancaran garis rata-rata EMA boleh disesuaikan mengikut pilihan individu melalui penyesuaian parameter.
Sistem perdagangan automatik yang lengkap hanya memerlukan dua petunjuk mudah yang boleh dilaksanakan dan boleh dengan mudah dibangunkan dan dioptimumkan melalui editor Pine.
Tidak perlu sering menyesuaikan parameter, untuk mewujudkan dasar ParameterSet dan Forget yang mudah.
Strategi ini juga mempunyai beberapa risiko yang perlu diperhatikan:
EMA bersilang mudah menghasilkan isyarat palsu, yang boleh menyebabkan kerugian yang tidak perlu. Beberapa indikator boleh diluruskan dengan menyesuaikan parameter EMA.
Indeks ATR kadang-kadang boleh membuat kesalahan dalam penilaian pengumpulan dan trend, yang menyebabkan peluang perdagangan yang terlewat.
Strategi itu sendiri tidak mengambil kira analisis faktor skala besar, dan jika terdapat perubahan besar dalam pasaran berita, ia sukar untuk membuat keputusan dengan menyeberang dengan cepat, yang memerlukan campur tangan manusia.
Anda boleh mengurangkan kesan risiko ini dengan beberapa pengoptimuman.
Strategi ini mempunyai beberapa penambahbaikan utama:
Anda boleh mempertimbangkan untuk memasukkan penilaian indikator lain, membentuk sistem kombinasi indikator, meningkatkan ketepatan isyarat. Sebagai contoh, menggabungkan indikator RSI untuk mengelakkan risiko overbought dan oversold.
Parameter yang lebih sesuai boleh dipilih mengikut jenis perdagangan yang berbeza dan kawasan perdagangan yang berbeza, menjadikan parameter EMA dan ATR lebih sesuai dengan ciri-ciri pasaran semasa.
Optimasi parameter dinamik boleh dicapai melalui kaedah pembelajaran mesin dan lain-lain. Parameter penunjuk boleh disesuaikan dengan keadaan pasaran dalam masa nyata, dan bukannya menggunakan nilai statik tetap.
Strategi ini secara keseluruhannya adalah strategi pengesanan trend yang sangat praktikal. Hanya memerlukan kombinasi dua indikator mudah untuk mencapai sistem perdagangan yang lebih lengkap. Dengan penyesuaian parameter, ia boleh disesuaikan dengan pilihan pedagang yang berbeza.
/*backtest
start: 2022-12-05 00:00:00
end: 2023-12-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This strategy has been created for GMT trade 4h by Zhukov
//@version=5
strategy('ZhukovTrade', overlay=true, calc_on_every_tick=true, currency=currency.USD)
// INPUT:
// Options to enter fast and slow Exponential Moving Average (EMA) values
emaFast = input.int(title='Fast EMA', defval=100, minval=1, maxval=9999)
emaSlow = input.int(title='Slow EMA', defval=200, minval=1, maxval=9999)
// Option to select trade directions
tradeDirection = input.string(title='Trade Direction', options=['Long', 'Short', 'Both'], defval='Both')
// Options that configure the backtest date range
startDate = input(title='Start Date', defval=timestamp('01 Jan 2023 00:00'))
endDate = input(title='End Date', defval=timestamp('31 Dec 2023 23:59'))
// CALCULATIONS:
// Use the built-in function to calculate two EMA lines
fastEMA = ta.ema(close, emaFast)
slowEMA = ta.ema(close, emaSlow)
emapos = ta.ema(close,200)
// PLOT:
// Draw the EMA lines on the chart
plot(series=fastEMA, color=color.new(color.orange, 0), linewidth=2)
plot(series=slowEMA, color=color.new(color.blue, 0), linewidth=2)
plot(series=emapos, color=color.new(color.red, 0), linewidth=2)
// CONDITIONS:
// Check if the close time of the current bar falls inside the date range
inDateRange = true
// Translate input into trading conditions
longOK = tradeDirection == 'Long' or tradeDirection == 'Both'
shortOK = tradeDirection == 'Short' or tradeDirection == 'Both'
// Decide if we should go long or short using the built-in functions
longCondition = ta.crossover(fastEMA, slowEMA)
shortCondition = ta.crossunder(fastEMA, slowEMA)
// ORDERS:
// Set take profit and stop loss percentages
take_profit_percent = input(0, title="Take Profit Percent")
stop_loss_percent = input(0, title="Stop Loss Percent")
// Submit entry (or reverse) orders
atrPeriod = input(12, "ATR Length")
factor = input.float(3.0, "Factor", step = 0.01)
[supertrend, direction] = ta.supertrend(factor, atrPeriod)
bodyMiddle = plot((open + close) / 2, display=display.none)
upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend = plot(direction < 0? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr)
fill(bodyMiddle, upTrend, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle, downTrend, color.new(color.red, 90), fillgaps=false)
if longCondition and inDateRange
if longOK and direction<0
strategy.entry(id='long', direction=strategy.long, alert_message = "LONG")
if shortCondition and inDateRange
if shortOK and direction>0
strategy.entry(id='short', direction=strategy.short, alert_message = "SHORT")
// Submit exit orders in the cases where we trade only long or only short
if strategy.position_size > 0 and take_profit_percent
strategy.exit(id='tp long',from_entry ="long",profit = take_profit_percent)
if strategy.position_size > 0 and stop_loss_percent
strategy.exit(id='sl long',from_entry="long",loss=stop_loss_percent)
if strategy.position_size < 0 and stop_loss_percent
strategy.exit(id='sl short',from_entry="short",loss=stop_loss_percent)
if strategy.position_size < 0 and take_profit_percent
strategy.exit(id='tp short',from_entry="short",profit = take_profit_percent)