Trend Saluran Rata-rata Bergerak Multi-Periode Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2024-02-20 13:45:42
Tag:

img

Gambaran umum

Ini adalah strategi swing yang dirancang untuk pasar tren seperti crypto dan saham, menggunakan jangka waktu yang besar seperti 8 jam. Strategi ini menggunakan beberapa moving average termasuk SMA, EMA, VWMA, ALMA, SMMA, LSMA dan VWMA yang diterapkan secara terpisah ke tinggi dan rendah untuk membentuk dua garis rata-rata sebagai saluran.

Pergi panjang ketika dekat berada di atas garis rata-rata yang diterapkan pada tinggi. Pergi pendek ketika dekat berada di bawah garis rata-rata yang diterapkan pada rendah.

Logika Strategi

Strategi ini menggunakan 7 jenis rata-rata bergerak yang berbeda termasuk SMA, EMA, VWMA, ALMA, SMMA, LSMA dan VWMA.

Garis rata-rata yang diterapkan pada harga tinggi disebut avg_high. Garis rata-rata yang diterapkan pada harga rendah disebut avg_low. Dua garis ini membentuk saluran.

Pergi panjang ketika close di atas avg_high. Pergi pendek ketika close di bawah avg_low.

Stop loss untuk long adalah avg_low. Take profit adalah harga masuk *(1 + tp_long). Singkatnya, stop loss adalah avg_high, take profit adalah harga masuk *(1 - tp_short).

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah memanfaatkan beberapa rata-rata bergerak untuk meningkatkan profitabilitas.

Keuntungan lain adalah pendekatan saluran. Saluran membatasi jangkauan stop loss dan mengurangi risiko yang cocok untuk perdagangan swing.

Analisis Risiko

Strategi ini memiliki dua risiko utama:

  1. Kombinasi dari beberapa MAs membuat pengaturan parameter kompleks yang membutuhkan banyak tes dan optimasi untuk menemukan yang terbaik.

  2. Di pasar sisi atau non-trending, strategi cenderung menghasilkan kerugian dan whipsaws.

Untuk mengurangi risiko, pilih produk dengan tren yang jelas, dan lakukan backtest dan optimalisasi yang ekstensif untuk menemukan parameter yang sesuai dengan kondisi pasar saat ini.

Arahan Optimasi

Bidang untuk optimalisasi lebih lanjut:

  1. Uji lebih banyak jenis MAs untuk menemukan kombinasi yang lebih baik, seperti SMA, EMA, KAMA, TEMA dll.

  2. Optimalkan panjang MAs dan lebar saluran untuk menentukan parameter optimal.

  3. Uji mekanisme profit dan stop loss yang berbeda seperti trailing stop atau dynamic stop.

  4. Menggabungkan metrik tren seperti ADX, ATR untuk menghindari whipsaws selama pasar bergolak.

  5. Mengoptimalkan masuk dan keluar logika dengan filter tambahan untuk mengurangi perdagangan yang tidak valid.

Ringkasan

Strategi swing trend ini meningkatkan profitabilitas dengan menggunakan beberapa MAs dan mengurangi risiko melalui saluran. Ini bekerja dengan baik untuk produk tren setelah optimasi parameter. Tetapi dapat mengalami kerugian besar pada pembalikan tren. Optimasi lebih lanjut diperlukan untuk mengurangi risiko penurunan.


/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4

strategy(title="High/Low channel swing", shorttitle="Multi MA swing", overlay=true)


fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

//////
length_ma= input(defval=12, title="Length Moving averages", minval=1)

////////////////////////////////SETUP///////////////////////////////////////////

sma_high   = sma(high, length_ma)
ema_high   = ema(high, length_ma)
wma_high   = wma(high, length_ma)
alma_high  = alma(high,length_ma, 0.85, 6)
smma_high = rma(high,length_ma)
lsma_high = linreg(high, length_ma, 0)
vwma_high = vwma(high,length_ma)



avg_high = (sma_high+ema_high+wma_high+alma_high+smma_high+lsma_high+vwma_high)/7

///////////////////////////////////////////

sma_low   = sma(low, length_ma)
ema_low   = ema(low, length_ma)
wma_low   = wma(low, length_ma)
alma_low  = alma(low,length_ma, 0.85, 6)
smma_low = rma(low,length_ma)
lsma_low = linreg(low, length_ma, 0)
vwma_low = vwma(low,length_ma)



avg_low = (sma_low+ema_low+wma_low+alma_low+smma_low+lsma_low+vwma_low)/7

////////////////////////////PLOTTING////////////////////////////////////////////


plot(avg_high , title="avg", color=color.green, linewidth = 4)
plot(avg_low , title="avg", color=color.red, linewidth = 4)

long= close > avg_high
short = close < avg_low

tplong=input(0.06, title="TP Long", step=0.01)
sllong=input(0.05, title="SL Long", step=0.01)

tpshort=input(0.045, title="TP Short", step=0.01)
slshort=input(0.05, title="SL Short", step=0.01)

if(time_cond)
    strategy.entry("long",1,when=long)
    strategy.exit("closelong", "long" , profit = close * tplong / syminfo.mintick, loss = close * sllong / syminfo.mintick, alert_message = "closelong")
    strategy.close("long", when=crossunder(low,avg_low))
    
    
    strategy.entry("short",0,when=short)
    strategy.exit("closeshort", "short" , profit = close * tpshort / syminfo.mintick, loss = close * slshort / syminfo.mintick, alert_message = "closeshort")
    strategy.close("short",when=crossover(high,avg_high))



Lebih banyak