Trend Berikutan Strategi Pemutusan Momentum

Penulis:ChaoZhang, Tarikh: 2024-01-05 13:38:18
Tag:

img

Ringkasan

Strategi ini dinamakan Trend Following Momentum Breakout Strategy. Ia menggunakan penunjuk Super Trend untuk menentukan arah trend semasa dan menggabungkannya dengan arah badan lilin untuk perdagangan trend mengikuti untuk mencapai pecah momentum.

Logika Strategi

Inti strategi ini bergantung pada penunjuk Super Trend untuk menilai arah trend semasa. Penunjuk Super Trend mengira jalur atas dan bawah berdasarkan Julat Benar Purata (ATR). Apabila harga menembusi jalur atas, ia adalah isyarat kenaikan, dan apabila harga menembusi jalur bawah, ia adalah isyarat penurunan.

Apabila penunjuk Super Trend menentukan trend menaik, jika lilin adalah badan merah (tutup di bawah terbuka), pergi panjang. Apabila penunjuk Super Trend menentukan trend menurun, jika lilin adalah badan hijau (tutup di atas terbuka), pergi pendek. Ini mencapai trend berikutan perdagangan pecah momentum.

Analisis Kelebihan

Strategi ini menggabungkan pertimbangan trend dan ciri momentum untuk menapis secara berkesan pecah palsu dan meningkatkan kesahihan isyarat perdagangan. Di samping itu, perdagangan mengikut trend mengelakkan operasi kontra trend dan sangat meningkatkan kebarangkalian keuntungan.

Kelebihan utama diringkaskan seperti berikut:

  1. Menapis pecah palsu dengan menggabungkan penilaian trend dan ciri momentum
  2. Ikuti arah badan candlestick untuk mengelakkan perdagangan kontra trend
  3. Keuntungan yang lebih tinggi

Analisis Risiko

Risiko utama strategi ini ialah:

  1. Isu bagaimana untuk menetapkan parameter penunjuk Super Trend. tetapan parameter yang tidak betul boleh menyebabkan penilaian yang salah dan menghasilkan isyarat yang salah.
  2. Hanya mengikut arah badan candlestick tidak dapat menentukan kekuatan badan, dan mungkin ada risiko kehilangan.
  3. Nisbah risiko-balasan tetap tidak boleh diselaraskan secara dinamik dan kerugian tunggal tidak boleh dikawal.

Langkah-langkah balas adalah:

  1. Mengoptimumkan parameter penunjuk Super Trend untuk membuat penilaian lebih tepat.
  2. Menghakimi kekuatan badan lilin dengan menggabungkan penunjuk seperti jumlah perdagangan dan aliran wang.
  3. Tambahkan stop loss dinamik untuk mengawal kehilangan tunggal.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Menggabungkan lebih banyak penunjuk teknikal untuk penapisan isyarat, seperti Bollinger Bands dan KDJ, untuk meningkatkan prestasi strategi.
  2. Tambah algoritma pembelajaran mesin untuk mengoptimumkan parameter secara dinamik dan menjadikan penunjuk Super Trend lebih stabil.
  3. Tambahkan mekanisme berhenti kerugian untuk menghentikan kerugian sebelum kerugian berkembang.
  4. Menggunakan produk dengan keupayaan perdagangan dua arah, seperti niaga hadapan untuk memanfaatkan sepenuhnya kedua-dua peluang panjang dan pendek.

Ringkasan

Secara umum, strategi ini sangat sesuai untuk kedudukan jangka sederhana dan pendek. Dengan menggabungkan penilaian trend dan momentum pecah, ia dapat menapis bunyi bising dengan berkesan dan meningkatkan kadar kemenangan. Pada masa yang sama, masih ada ruang untuk pengoptimuman parameter untuk mendapatkan prestasi strategi yang lebih baik.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's SuperTrend Strategy v1.0", shorttitle = "ST str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
cloud = input(25, defval = 25, minval = 5, maxval = 50, title = "cloud, % of ATR")
Factor = input(title = "Super Trend", defval = 3, minval = 1, maxval = 100)
ATR = input(title = "ATR", defval = 7, minval = 1,maxval = 100)
centr = input(true, defval = true, title = "need center of ATR?")
border = input(false, defval = false, title = "need border?")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Super Trend ATR 1
src = close
Up=hl2-(Factor*atr(ATR))
Dn=hl2+(Factor*atr(ATR))
TUp=close[1]>TUp[1]? max(Up,TUp[1]) : Up
TDown=close[1]<TDown[1]? min(Dn,TDown[1]) : Dn
Trend = close > TDown[1] ? 1: close< TUp[1]? -1: nz(Trend[1],1)
Tsl1 = Trend==1? TUp: TDown
Tsl2 = Trend==1? TDown: TUp
limit = (Tsl1 - Tsl2) / 100 * cloud
upcloud = Tsl1 - limit
dncloud = Tsl2 + limit

//Cloud
linecolor = Trend == 1 ? green : red
centercolor = centr == true ? blue : na
cloudcolor = Trend == 1 ? green : red
cline = (Tsl1 + Tsl2) / 2
P1 = plot(Tsl1, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-1")
P2 = plot(Tsl2, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-2")
P3 = plot(cline, color = centercolor , style = line , linewidth = 1,title = "SuperTrend Center")
P4 = plot(upcloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center+1")
P5 = plot(dncloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center-1")
fill(P1, P4, color = linecolor == red ? red : lime, transp = 50)
fill(P2, P5, color = linecolor == red ? red : lime, transp = 50)

//Signals
up = Trend == 1 and close < open //and low < cline 
dn = Trend == -1 and close > open //and high > cline

//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if up
    strategy.entry("Long", strategy.long, needlong ? lot : 0)

if dn
    strategy.entry("Short", strategy.short, needshort ? lot : 0)


Lebih lanjut