Strategi trend berikut adalah strategi perdagangan trend berdasarkan persimpangan purata bergerak. Ia menggunakan persimpangan purata bergerak eksponensial (EMA) dan purata bergerak Hull (HMA) untuk menentukan arah trend dan menghasilkan isyarat perdagangan dengan sewajarnya. Strategi ini bertujuan untuk mengikuti trend harga jangka panjang dan bukan goyangan jangka pendek.
Strategi ini menggunakan dua purata bergerak dengan parameter yang berbeza: EMA yang lebih cepat dan HMA yang lebih perlahan. EMA bertindak balas lebih cepat terhadap perubahan harga dan digunakan untuk menilai trend jangka pendek, sementara HMA bertindak balas lebih perlahan dan mengesan arah trend jangka panjang.
Apabila EMA yang lebih cepat melintasi di atas HMA yang lebih perlahan, ia dilihat sebagai permulaan trend menaik, dan strategi akan meletakkan pesanan panjang pada harga pasaran pada bar terbuka seterusnya.
Untuk mengoptimumkan masa kemasukan, strategi ini menggabungkan pilihan Heikin-Ashi. Apabila diaktifkan, isyarat beli dan jual akan berdasarkan bar Heikin-Ashi dan bukannya lilin biasa.
Strategi ini juga menggunakan tetapan stop loss. Apabila kerugian kedudukan mencapai peratusan stop loss yang telah ditetapkan, kedudukan akan ditutup pada harga pasaran, mengehadkan kerugian maksimum setiap perdagangan.
Kelebihan strategi ini termasuk:
Menggunakan persilangan EMA dan HMA untuk menentukan trend boleh mengambil kesempatan daripada purata bergerak tempoh yang berbeza dan meningkatkan ketepatan.
Perdagangan berdasarkan trend mengelakkan bergoyang pada goyangan kecil dan mengurangkan dagangan yang tidak perlu.
Pilihan Heikin-Ashi mengoptimumkan masa kemasukan dengan menapis isyarat palsu.
Stop loss bergerak secara berkesan mengehadkan kerugian maksimum setiap perdagangan.
Parameter yang boleh disesuaikan membolehkan pengoptimuman untuk produk dan jangka masa yang berbeza.
Risiko strategi ini termasuk:
Sebagai sistem yang mengikuti trend, ia berprestasi rendah semasa pasaran yang terhad.
Ia boleh menimbulkan kerugian besar apabila perubahan trend berlaku.
Tetapan stop loss yang tidak betul boleh menyebabkan berhenti yang tidak perlu atau memperbesar kerugian.
Penyesuaian parameter yang buruk boleh menyebabkan overtrading atau tidak bertindak.
Tempoh EMA dan HMA memerlukan pengoptimuman untuk produk dan jangka masa yang berbeza.
Heikin-Ashi tidak boleh mengelakkan risiko pelarian palsu.
Strategi ini boleh ditingkatkan dari aspek berikut:
Gunakan lebih banyak penunjuk seperti MACD, KDJ untuk meningkatkan ketepatan trend.
Tambah lebih banyak penapis seperti kelantangan, ATR untuk mengurangkan hentian palsu.
Mengoptimumkan parameter purata bergerak berdasarkan produk dan jangka masa.
Sempurnakan peratusan stop loss untuk tingkah laku stop loss yang lebih baik.
Pertimbangkan mengambil keuntungan ciri-ciri seperti bergerak berhenti keuntungan dan mengambil keuntungan separa.
Uji cara alternatif untuk mengira asas kos kedudukan untuk pengoptimuman.
Strategi trend berikut mengenal pasti trend menggunakan crossover purata bergerak, dan mengoptimumkan prestasi melalui Heikin-Ashi dan stop loss bergerak. Ia sesuai untuk perdagangan trend jangka menengah hingga panjang, dan boleh ditingkatkan lagi melalui penyesuaian parameter dan pengembangan ciri. Tetapi pengguna harus menyedari risiko pembalikan dan stop loss yang tidak betul. Secara keseluruhan ia menyediakan kerangka kerja universal dan disesuaikan untuk perdagangan trend yang berfungsi di pelbagai produk dan jangka masa. Ujian parameter yang betul diperlukan ketika menerapkannya.
/*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)