
Strategi trend-following adalah strategi perdagangan trend-following berdasarkan purata bergerak. Strategi ini menggunakan persilangan purata bergerak indeks (EMA) dan purata bergerak goyah (HMA) untuk menentukan arah trend pasaran, dan menghasilkan isyarat beli dan jual yang sesuai. Strategi ini digunakan untuk perdagangan trend garis pendek tengah, yang bertujuan untuk mengesan trend harga dalam jangka masa yang lebih lama, bukan goyah jangka pendek.
Strategi ini menggunakan purata bergerak dengan dua parameter yang berbeza: EMA yang lebih pendek dan HMA yang lebih lama. EMA bertindak balas lebih cepat terhadap perubahan harga untuk menentukan trend jangka pendek; HMA bertindak balas lebih lambat terhadap perubahan harga untuk menentukan arah trend jangka panjang.
Apabila EMA jangka pendek di atas HMA jangka panjang, dianggap sebagai harga memasuki trend naik, strategi ini akan membeli pada harga pasaran pada pembukaan K baris berikutnya; apabila EMA jangka pendek di bawah HMA jangka panjang, dianggap sebagai harga memasuki trend menurun, strategi ini akan dijual pada harga pasaran pada pembukaan K baris berikutnya.
Untuk mengoptimumkan masa masuk ke pasaran, strategi menambah pilihan berdasarkan Heikin-Ashi. Apabila pilihan ini diaktifkan, isyarat perdagangan strategi akan berdasarkan garisan Heikin-Ashi, dan bukan garisan K asli. Ini membantu mengurangkan isyarat palsu kerana garisan Heikin-Ashi dapat menapis garisan K asli oscillator.
Strategi ini juga menambah seting stop loss. Strategi ini akan berhenti pada harga pasaran apabila kerugian pegangan mencapai seting stop loss. Langkah ini boleh mengehadkan kerugian maksimum dalam satu perdagangan.
Strategi ini mempunyai kelebihan berikut:
Menggunakan EMA dan HMA untuk menilai arah trend, anda boleh menggunakan kelebihan purata berkala yang berbeza untuk meningkatkan ketepatan penilaian.
Berdasarkan perdagangan trend, tidak berbalik kedudukan dengan sedikit gegaran, dapat mengurangkan jumlah perdagangan yang tidak perlu.
Pilihan Heikin-Ashi boleh menyaring isyarat palsu dan mengoptimumkan masa masuk ke pasaran.
Menggunakan strategi Hentikan Kerugian Bergerak, anda dapat mengawal kerugian maksimum dalam satu perdagangan dengan berkesan.
Parameter strategi boleh disesuaikan, pengguna boleh menyesuaikan mengikut varieti dan kitaran yang berbeza untuk meningkatkan adaptasi.
Strategi ini juga mempunyai risiko:
Sebagai strategi trend-following, ia kurang berkesan dalam pasaran keseluruhan.
Ia mungkin membawa kepada kerugian yang lebih besar apabila trend berbalik.
Penetapan kerugian yang tidak betul boleh menyebabkan kerugian yang tidak perlu dan juga boleh menyebabkan kerugian berkembang.
Tetapan parameter yang tidak betul juga boleh menyebabkan perdagangan yang kerap atau tidak bergerak sama sekali.
Tetapan kitaran EMA dan HMA perlu dioptimumkan untuk pelbagai jenis dan kitaran.
Heikin-Ashi tidak dapat menyaring sepenuhnya risiko penembusan palsu.
Strategi ini boleh dioptimumkan dengan:
Menggunakan lebih banyak kombinasi trend penghakiman, seperti MACD, KDJ dan lain-lain, untuk meningkatkan ketepatan penghakiman.
Penambahan lebih banyak syarat penapisan, seperti jumlah transaksi, ATR dan lain-lain, mengurangkan kemungkinan penembusan palsu.
Mengoptimumkan parameter purata bergerak agar lebih sesuai dengan pelbagai jenis dan kitaran dagangan.
Optimumkan tetapan stop loss untuk membuat stop loss lebih munasabah dan mengelakkan terlalu longgar atau terlalu keras.
Pertimbangkan untuk menambah fungsi perlindungan keuntungan, seperti penghentian bergerak, penghentian separa, dan lain-lain, untuk mengunci keuntungan.
Uji cara alternatif untuk mengira kos pegangan dan optimumkan pengiraan kos pegangan.
Strategi pengesanan trend adalah berdasarkan arah trend yang dinilai oleh rata-rata bergerak, menggunakan Heikin-Ashi dan berhenti bergerak untuk mengoptimumkan prestasi strategi. Strategi ini sesuai untuk mengesan trend garis panjang tengah, dan dapat meningkatkan lagi kesan strategi dengan pengoptimuman parameter dan pengembangan fungsi. Tetapi pengguna perlu sedar akan kehadiran risiko pembalikan dan berhenti, perlu melakukan ujian parameter untuk varieti dan tempoh.
/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("𝐉𝐔𝐈𝐂𝐘 𝐓𝐑𝐄𝐍𝐃", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=15)
//Heikin Ashi Option
ha = input(true, title = "Heikin Ashi Source")
src = ha ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, barmerge.gaps_off, barmerge.lookahead_off) : close
usestoploss = input(true, title="Stop Loss")
//EMA
len1 = input.int(9, minval=1, title="EMA Length")
ema = ta.ema(src, len1)
emaline = plot(ema, title="EMA", color=color.blue, linewidth=2)
//HMA
len2 = input.int(69, minval=1, title="HMA Length")
hma = ta.wma(2*ta.wma(src, len2/2)-ta.wma(src, len2), math.floor(math.sqrt(len2)))
hmaline = plot(hma, title="HMA", color=color.purple, linewidth=2)
fillcolor = hma < ema ? color.blue : color.purple
fill(emaline, hmaline, title="EMA Fill", color=color.new(fillcolor, 80), editable=true)
//Stop Loss Conditions
stoplosspercent = input.float(title="Stop Loss (%)", defval=-6.5, minval=-50, maxval=0, step=.1) / 100
stoploss = strategy.position_avg_price * (1 + stoplosspercent)
stop = stoploss > close and stoploss[1] < close[1] and strategy.position_size > 0 and usestoploss
//Buy Sell Conditions
buy = hma < ema
sell = hma > ema
//Trades and Alerts
if buy
strategy.entry("Long Position", strategy.long, comment="BUY")
// alert("{\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar)
if sell and strategy.openprofit > 0
strategy.close("Long Position", comment="SELL")
// alert("{\n\"action\": \"close_at_market_price\",\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar)
if stop
strategy.close("Long Position", comment="STOP")
// alert("{\n\"action\": \"close_at_market_price\",\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar)
//Alternate Labels
var pos = 0
if buy and pos <= 0
pos := 1
if sell and pos >= 0
pos := -1
buylabel = pos == 1 and (pos != 1)[1]
selllabel = pos == -1 and (pos != -1)[1]
//Plot Labels
plotshape(buylabel, style=shape.labelup, location=location.belowbar, color=color.blue, text="BUY", textcolor=color.white, size=size.tiny)
plotshape(selllabel, style=shape.labeldown, location=location.abovebar, color=color.purple, text="SELL", textcolor=color.white, size=size.tiny)
plotshape(stop, style=shape.labeldown, location=location.abovebar, color=color.yellow, text="STOP", textcolor=color.white, size=size.tiny)