Pengecualian purata bergerak berganda digabungkan dengan Trend Indikator ATR Mengikut Strategi

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

img

Ringkasan

Strategi ini menggunakan isyarat salib emas dan salib mati yang dibentuk oleh purata bergerak EMA berganda, digabungkan dengan penunjuk ATR untuk menilai turun naik pasaran, untuk melaksanakan strategi trend pembelian rendah-penjualan tinggi berikut. Apabila garis pantas melintasi di atas garis perlahan, dan penunjuk ATR lebih rendah daripada hari sebelumnya, ia dianggap isyarat kenaikan untuk pergi panjang. Apabila garis pantas melintasi di bawah garis perlahan, dan penunjuk ATR lebih tinggi daripada hari sebelumnya, ia dianggap isyarat penurunan untuk pergi pendek.

Logika Strategi

  1. Gunakan purata bergerak EMA berganda panjang 20 dan 55. Apabila garis pantas melintasi di atas garis perlahan dan menghasilkan salib emas, ia dianggap isyarat bullish. Apabila garis pantas melintasi di bawah garis perlahan dan menghasilkan salib mati, ia dianggap isyarat bearish.

  2. Gunakan penunjuk ATR panjang 14. Penunjuk ATR mencerminkan turun naik dan tahap risiko pasaran. Apabila ATR lebih rendah daripada hari sebelumnya, ia menunjukkan bahawa turun naik pasaran melemah dan ia sesuai untuk pergi panjang. Apabila ATR lebih tinggi daripada hari sebelumnya, ia menunjukkan bahawa turun naik pasaran meningkat dan ia sesuai untuk pergi pendek.

  3. Hanya pergi panjang apabila garis cepat emas melintasi garis perlahan dan ATR lebih rendah daripada hari sebelumnya. Hanya pergi pendek apabila garis cepat mati melintasi garis perlahan dan ATR lebih tinggi daripada hari sebelumnya. Ini mengelakkan campur tangan apabila turun naik pasaran tinggi.

  4. Indikator ATR juga digunakan untuk menetapkan tahap stop loss dan mengambil keuntungan. Stop loss ditetapkan pada harga semasa dikurangkan ATR dikalikan dengan pengganda stop loss. mengambil keuntungan ditetapkan pada harga semasa ditambah ATR dikalikan dengan pengganda mengambil keuntungan.

  5. Pengganda stop loss lalai adalah 3xATR dan pengganda mengambil keuntungan lalai adalah 3xATR. Ini membolehkan stop loss dan mengambil keuntungan secara dinamik mengikuti turun naik pasaran.

Kelebihan Strategi

  1. Menggunakan sistem purata bergerak berganda memberikan pengesahan yang lebih kuat mengenai status panjang/pendek.

  2. Memperkenalkan penunjuk ATR membolehkan strategi hanya terlibat apabila turun naik rendah. Ini menapis banyak isyarat palsu dan mengurangkan risiko sistem.

  3. Sistem stop loss/take profit ATR dinamik membolehkan stop dan sasaran ditetapkan mengikut tahap turun naik pasaran. Ini menghalang stop terlalu dekat atau sasaran terlalu dangkal.

  4. Ia adalah mungkin untuk menetapkan crossover purata bergerak sebagai mekanisme keluar tambahan. Ini boleh mengoptimumkan lagi keuntungan sistem.

  5. Tahap stop loss dan take profit dinamik berdasarkan ATR lebih sesuai dengan logik perdagangan trend.

Risiko Strategi

  1. Purata bergerak berganda mempunyai beberapa kelewatan dalam isyarat. Ini mungkin terlepas daripada trend jangka pendek yang lebih kuat.

  2. Apabila turun naik tinggi, ATR meningkat dan mungkin kehilangan peluang masuk. Parameter ATR perlu diselaraskan.

  3. Untuk tempoh tahan lama, stop loss boleh menjadi terlalu dekat. Ia perlu santai mengikut kekuatan trend.

  4. Purata bergerak menunjukkan prestasi yang lemah dalam pasaran yang bergelora.

  5. Parameter ATR perlu diselaraskan untuk produk dan jangka masa yang berbeza. Parameter yang salah akan memberi kesan negatif terhadap prestasi.

Kawasan Peningkatan

  1. Uji kombinasi purata bergerak panjang yang berbeza untuk mencari parameter yang sepadan dengan ciri trend produk.

  2. Menggabungkan penunjuk lain seperti MACD, KD untuk mengesahkan isyarat crossover purata bergerak dan meningkatkan Entscheidungssicherheit.

  3. Mengoptimumkan parameter ATR melalui pengujian belakang untuk lebih sesuai dengan ciri-ciri volatiliti produk.

  4. Buat faktor pengganda ATR boleh diselaraskan untuk menyesuaikan stop loss / mengambil keuntungan secara dinamik mengikut kekuatan trend.

  5. Memasukkan penunjuk kekuatan trend untuk mengurangkan keperluan stop loss dalam trend lemah, dan meningkatkan mengambil keuntungan dalam trend yang kuat.

Ringkasan

Strategi ini mengintegrasikan penilaian trend EMA dual dan kawalan risiko penunjuk turun naik ATR untuk membentuk sistem berikut trend yang agak lengkap. Fokus untuk pengoptimuman adalah menyesuaikan parameter purata bergerak dan ATR untuk sepadan dengan ciri produk, dan merancang mekanisme berhenti rugi / mengambil keuntungan dinamik untuk mengikuti perubahan kekuatan trend. Dengan parameter dan pengoptimuman logik, strategi ini boleh menjadi strategi berikut trend 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 lanjut