Penyimpangan rata-rata bergerak ganda dikombinasikan dengan tren indikator ATR Mengikuti strategi

Penulis:ChaoZhang, Tanggal: 2023-11-16 11:25:23
Tag:

img

Gambaran umum

Strategi ini menggunakan sinyal golden cross dan dead cross yang terbentuk oleh moving average EMA ganda, dikombinasikan dengan indikator ATR untuk menilai volatilitas pasar, untuk menerapkan strategi low-buy-high-selling trend berikut. Ketika garis cepat melintasi di atas garis lambat, dan indikator ATR lebih rendah dari hari sebelumnya, itu dianggap sinyal bullish untuk pergi panjang. Ketika garis cepat melintasi di bawah garis lambat, dan indikator ATR lebih tinggi dari hari sebelumnya, itu dianggap sinyal bearish untuk pergi pendek.

Logika Strategi

  1. Menggunakan dua EMA bergerak rata-rata panjang 20 dan 55. Ketika garis cepat melintasi di atas garis lambat dan menghasilkan salib emas, itu dianggap sinyal bullish. Ketika garis cepat melintasi di bawah garis lambat dan menghasilkan salib mati, itu dianggap sinyal bearish.

  2. Gunakan indikator ATR dengan panjang 14. Indikator ATR mencerminkan volatilitas dan tingkat risiko pasar. Ketika ATR lebih rendah dari hari sebelumnya, ini menunjukkan bahwa volatilitas pasar melemah dan cocok untuk pergi panjang. Ketika ATR lebih tinggi dari hari sebelumnya, ini menunjukkan bahwa volatilitas pasar meningkat dan cocok untuk pergi pendek.

  3. Hanya pergi panjang ketika garis cepat emas melintasi garis lambat dan ATR lebih rendah dari hari sebelumnya. Hanya pergi pendek ketika garis cepat mati melintasi garis lambat dan ATR lebih tinggi dari hari sebelumnya. Ini menghindari campur tangan ketika volatilitas pasar tinggi.

  4. Indikator ATR juga digunakan untuk mengatur stop loss dan take profit level. Stop loss ditetapkan pada harga saat ini dikurangi ATR dikalikan dengan stop loss multiplier. Take profit ditetapkan pada harga saat ini ditambah ATR dikalikan dengan take profit multiplier.

  5. Multiplikator stop loss default adalah 3xATR dan multiplikator take profit default adalah 3xATR. Hal ini memungkinkan stop loss dan take profit untuk secara dinamis mengikuti volatilitas pasar.

Keuntungan dari Strategi

  1. Menggunakan sistem rata-rata bergerak ganda memberikan konfirmasi yang lebih kuat dari status panjang/pendek.

  2. Memperkenalkan indikator ATR memungkinkan strategi hanya terlibat ketika volatilitas rendah. Ini menyaring banyak sinyal palsu dan mengurangi risiko sistem.

  3. Standar stop loss/take profit ATR dinamis memungkinkan stop dan target ditetapkan sesuai dengan tingkat volatilitas pasar. Hal ini mencegah stop terlalu dekat atau target terlalu dangkal.

  4. Hal ini dimungkinkan untuk mengatur crossover rata-rata bergerak sebagai mekanisme keluar tambahan.

  5. Tingkat stop loss dan take profit yang dinamis berdasarkan ATR lebih sesuai dengan logika perdagangan tren. Stop loss tidak terlalu sensitif dan take profit tidak terlalu longgar.

Risiko dari Strategi

  1. Rata-rata bergerak ganda memiliki beberapa keterlambatan dalam sinyal.

  2. Ketika volatilitas tinggi, ATR naik dan mungkin kehilangan peluang masuk.

  3. Untuk periode holding yang panjang, stop loss mungkin terlalu dekat.

  4. Rata-rata bergerak berkinerja buruk di pasar yang bergelombang.

  5. Parameter ATR perlu disesuaikan untuk produk dan jangka waktu yang berbeda.

Bidang Peningkatan

  1. Uji kombinasi rata-rata bergerak panjang yang berbeda untuk menemukan parameter yang sesuai dengan karakteristik tren produk.

  2. Menggabungkan indikator lain seperti MACD, KD untuk mengkonfirmasi sinyal crossover rata-rata bergerak dan meningkatkan Entscheidungssicherheit.

  3. Mengoptimalkan parameter ATR melalui backtesting untuk lebih sesuai dengan karakteristik volatilitas produk.

  4. Buat faktor perkalian ATR disesuaikan untuk menyesuaikan stop loss/take profit secara dinamis sesuai dengan kekuatan tren.

  5. Menggabungkan indikator kekuatan tren untuk mengurangi persyaratan stop loss dalam tren lemah, dan meningkatkan mengambil keuntungan dalam tren kuat.

Ringkasan

The focus for optimization is adjusting the moving average and ATR parameters to match the product characteristics, and designing dynamic stop loss/take profit mechanisms to follow changes in trend strength. Dengan parameter and logic optimization, strategi ini dapat menjadi strategi trend following yang sangat baik.


/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// **********************************************
// PtahX EMA/ATR Strategy Public Release
// EMA Strategy with ATR & "Fear Factor" built in 
// written by PtahX October 2019
// * modifications welcome 
// * please let me know if you improve it so I can continue to learn :) 
// * use at your own risk - I'm a new programmer and still learning
// * Best of luck on your trades!!

// Take Profit (TP) option based on ATR or MA Crossover 
//***********************************************

strategy(title="PtahX EMA/ATR Strategy", overlay=true, pyramiding=1, calc_on_every_tick=true, default_qty_value=1, initial_capital=10000, slippage=2)

//***************************** 
// Global Inputs
//***************************** 

fastMA = input(title="Fast Moving Average", defval=20, step=1)
slowMA = input(title="Slow Moving Average", defval=55, step=1)
source = input(close, title="Source")
atrLength = input(title="ATR Length", defval=14, minval=7, step=1)
slMultiplier = input(title="Stop Loss Multiple", type=input.float, defval=3, minval=1, step=0.2)
tpMultiplier = input(title= "Take Profit Multiple", type=input.float, defval=3, minval=1, step=0.2)
maPlot = input(true, title="Plot EMA?")
maCrossoverExit =  input(false, title="Exit with Slow MA Crossover?")
atrExit = input(true, title="Exit with ATR?")
//***********************************
// ATR
//***********************************
atr = atr(atrLength)


//***********************************
// Volatility Filter
//**********************************
// During uptrends the ATR indicator tends to post lower volatility. 
// During downtrends, the ATR indicator tends to post higher volatility

volatilityBullish = atr < atr[1] 
volatilityBearish = atr > atr[1]


//***********************************
// Moving Averages
//***********************************
    
// Double Line Plot Code (used for Entries & Exits not plotted by default)
fast = ema(source, fastMA)
slow = ema(source, slowMA)
maLong = crossover(fast, slow)
maShort = crossunder(fast, slow) 

// Single Line Plot Code
bullish = slow > slow[1]
bearish = slow < slow[1]
barColor = bullish ? color.green : bearish ? color.red : color.blue


//***************************** 
// Entries
//***************************** 

entryLong = maLong and volatilityBullish
entryShort = maShort and volatilityBearish

if entryLong
    sLoss = source - atr * slMultiplier
    strategy.entry("Long", strategy.long, qty=10)
    strategy.exit("Long Exit", "Long", stop=sLoss)


if entryShort
    sLoss = source + atr * slMultiplier
    tProfit = close > slowMA
    strategy.entry("Short", strategy.short, qty=10)
    strategy.exit("Short Exit", "Short", stop=sLoss)


//***************************** 
// Exits
//*****************************

exitLong = 0
exitShort = 0

if maCrossoverExit
    exitLong = maShort
    exitShort = maLong
    strategy.exit("Long Exit", "Long", when = exitLong)
    strategy.exit("Short Exit", "Short", when = exitShort)

if atrExit
    exitLong = source + atr * tpMultiplier
    exitShort = source - atr * tpMultiplier
    strategy.exit("Long Exit", "Long", limit = exitLong)
    strategy.exit("Short Exit", "Short", limit = exitShort)


//******************************
// ATR Based Exit/ Stop Plotting 
//******************************

// Stop Loss Calculations
longStopLoss = source - atr(atrLength) * slMultiplier
shortStopLoss = source + atr(atrLength) * slMultiplier

longTakeProfit = source - atr(atrLength) * slMultiplier
shortTakeProfit = source + atr(atrLength) * slMultiplier
  

//*********************************
//Chart Plotting
//*********************************

//ATR Based Stop Losses
plot(shortStopLoss, color=color.fuchsia, offset=0, transp=0, show_last=5, linewidth=2, style=plot.style_stepline, title="Short Stop Loss")
plot(longStopLoss, color=color.fuchsia, offset=0, transp=0, show_last=5, linewidth=2, style=plot.style_stepline, title="Long Stop Loss")


// Single Slow EMA Option
plot(slow and maPlot ? slow : na, title="EMA", color=barColor, linewidth=3)






Lebih banyak