Tren Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2023-11-06 10:34:19
Tag:

img

Gambaran umum

Strategi trend following adalah strategi trading trend yang didasarkan pada perpindahan rata-rata bergerak. Strategi ini menggunakan perpindahan rata-rata bergerak eksponensial (EMA) dan rata-rata bergerak Hull (HMA) untuk menentukan arah tren dan menghasilkan sinyal perdagangan sesuai. Strategi ini bertujuan untuk mengikuti tren harga jangka panjang daripada osilasi jangka pendek.

Logika Strategi

Strategi ini menggunakan dua rata-rata bergerak dengan parameter yang berbeda: EMA yang lebih cepat dan HMA yang lebih lambat.

Ketika EMA yang lebih cepat melintasi di atas HMA yang lebih lambat, itu dipandang sebagai awal dari tren kenaikan, dan strategi akan menempatkan pesanan panjang dengan harga pasar pada bar terbuka berikutnya.

Untuk mengoptimalkan waktu masuk, strategi ini menggabungkan opsi Heikin-Ashi. Ketika diaktifkan, sinyal beli dan jual akan didasarkan pada batang Heikin-Ashi bukan lilin normal.

Strategi ini juga menggunakan pengaturan stop loss. Ketika kerugian posisi mencapai persentase stop loss yang telah ditetapkan sebelumnya, posisi akan ditutup dengan harga pasar, membatasi kerugian maksimum per perdagangan.

Analisis Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Menggunakan EMA dan HMA crossover untuk menentukan tren dapat memanfaatkan rata-rata bergerak periode yang berbeda dan meningkatkan akurasi.

  2. Perdagangan berdasarkan tren menghindari berputar pada osilasi kecil dan mengurangi perdagangan yang tidak perlu.

  3. Opsi Heikin-Ashi mengoptimalkan waktu masuk dengan menyaring sinyal palsu.

  4. Stop loss bergerak secara efektif membatasi kerugian maksimum per perdagangan.

  5. Parameter yang dapat disesuaikan memungkinkan optimasi untuk produk dan kerangka waktu yang berbeda.

Analisis Risiko

Risiko dari strategi ini meliputi:

  1. Sebagai sistem yang mengikuti tren, ia berkinerja buruk selama pasar yang terikat rentang.

  2. Hal ini dapat menimbulkan kerugian besar ketika pembalikan tren datang.

  3. Pengaturan stop loss yang tidak benar dapat menyebabkan stop loss yang tidak perlu atau memperbesar kerugian.

  4. Penyesuaian parameter yang buruk dapat menyebabkan overtrading atau ketidakaktifan.

  5. Periode EMA dan HMA perlu dioptimalkan untuk produk dan kerangka waktu yang berbeda.

  6. Heikin-Ashi tidak bisa sepenuhnya menghindari risiko kebocoran palsu.

Arahan Optimasi

Strategi dapat ditingkatkan dari aspek berikut:

  1. Menggunakan lebih banyak indikator seperti MACD, KDJ untuk meningkatkan akurasi tren.

  2. Tambahkan lebih banyak filter seperti volume, ATR untuk mengurangi pemutusan palsu.

  3. Mengoptimalkan parameter rata-rata bergerak berdasarkan produk dan kerangka waktu.

  4. Perbaiki persentase stop loss untuk perilaku stop loss yang lebih baik.

  5. Pertimbangkan fitur mengambil keuntungan seperti memindahkan profit stop dan mengambil keuntungan parsial.

  6. Uji cara alternatif untuk menghitung basis biaya posisi untuk optimasi.

Ringkasan

Strategi trend following mengidentifikasi tren menggunakan crossover rata-rata bergerak, dan mengoptimalkan kinerja melalui Heikin-Ashi dan stop loss bergerak. Ini cocok untuk perdagangan tren jangka menengah hingga panjang, dan dapat ditingkatkan lebih lanjut melalui penyesuaian parameter dan perluasan fitur. Tetapi pengguna harus menyadari risiko pembalikan dan stop loss yang tidak tepat. Secara keseluruhan, ini menyediakan kerangka kerja universal dan dapat disesuaikan untuk perdagangan tren yang bekerja di berbagai produk dan kerangka waktu. Pengujian parameter yang tepat diperlukan saat 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)


Lebih banyak