Sumber dimuat naik... memuat...

Strategi Dagangan Kuantitatif EMA Crossover Dinamis Take-Profit Stop-Loss

Penulis:ChaoZhang, Tarikh: 2024-11-18 15:53:49
Tag:EMA

Ringkasan

Strategi ini adalah sistem perdagangan kuantitatif berdasarkan crossover purata bergerak digabungkan dengan mekanisme mengambil keuntungan dan menghentikan kerugian dinamik. Inti strategi menggunakan crossover purata bergerak eksponen 10 tempoh dan 26 tempoh (EMA) untuk mengenal pasti trend pasaran dan melaksanakan perdagangan semasa retracements. Sistem ini menggunakan tahap mengambil keuntungan dan menghentikan kerugian tetap untuk melindungi modal melalui pengurusan risiko yang ketat. Strategi ini sangat sesuai untuk instrumen perdagangan dengan turun naik yang tinggi, kerana mereka sering memberikan isyarat pembalikan pasaran yang lebih jelas dan potensi keuntungan yang lebih besar.

Prinsip Strategi

Strategi ini menggunakan dua EMA dengan tempoh yang berbeza sebagai penunjuk teras: EMA jangka pendek 10 tempoh dan EMA jangka panjang 26 tempoh. Isyarat beli dihasilkan apabila EMA jangka pendek melintasi di atas EMA jangka panjang, yang menunjukkan aliran naik; isyarat jual dihasilkan apabila EMA jangka pendek melintasi di bawah EMA jangka panjang, yang menunjukkan aliran menurun. Sistem memasuki dagangan semasa retracements harga selepas pengesahan trend, dengan 30 mata mengambil keuntungan dan 15 mata paras stop-loss untuk kawalan risiko. Strategi menggunakan mekanisme isyarat tunggal, yang hanya membenarkan satu perdagangan arah pada satu masa, yang membantu mengurangkan kerumitan sistem dan meningkatkan kebolehpercayaan.

Kelebihan Strategi

  1. Isyarat yang jelas: Menggunakan silang EMA sebagai isyarat dagangan, menyediakan peraturan yang mudah dan jelas yang mudah dilaksanakan dan dipantau
  2. Risiko Terkawal: Menggunakan tahap mengambil keuntungan dan berhenti kerugian tetap untuk pengurusan risiko yang berkesan setiap perdagangan
  3. Mengikuti trend: Menggabungkan persimpangan EMA dan retracement harga untuk menangkap pasaran trend dengan berkesan
  4. Automasi Tinggi: Logik strategi yang jelas yang mudah dilaksanakan dalam sistem perdagangan automatik
  5. Kebolehsesuaian yang tinggi: Sesuai untuk pelbagai instrumen perdagangan, terutamanya yang mempunyai turun naik yang tinggi

Risiko Strategi

  1. Risiko pasaran berbelit-belit: Boleh menghasilkan isyarat palsu yang kerap di pasaran terhad julat
  2. Risiko tergelincir: Boleh menghadapi tergelincir yang ketara semasa tempoh turun naik yang tinggi
  3. Risiko Stop Loss: Tahap Stop Loss tetap mungkin tidak cukup fleksibel dalam keadaan pasaran tertentu
  4. Lag isyarat: Isyarat silang EMA mempunyai lag yang melekat, berpotensi kehilangan titik masuk yang optimum
  5. Risiko Pengurusan Wang: Memerlukan kawalan yang betul terhadap saiz kedudukan setiap perdagangan

Arahan pengoptimuman

  1. Penghentian kerugian dinamik: Pertimbangkan untuk menyesuaikan tahap penghentian kerugian berdasarkan turun naik pasaran
  2. Penapisan Isyarat: Tambah jumlah, turun naik, atau penunjuk tambahan lain untuk menapis isyarat palsu
  3. Penapisan Masa: Melaksanakan penapisan masa dagangan untuk mengelakkan tempoh yang sangat tidak menentu
  4. Pengurusan Posisi: Tambah mekanisme mengambil keuntungan separa sambil membenarkan kedudukan yang tersisa untuk mengikuti trend
  5. Pengurusan Wang: Melaksanakan saiz kedudukan dinamik berdasarkan ekuiti akaun

Kesimpulan

Strategi ini menubuhkan sistem perdagangan yang lengkap dengan menggabungkan persilangan EMA dengan retracement harga. Reka bentuk strategi adalah mudah dan intuitif, dengan kawalan risiko yang jelas, sesuai untuk instrumen perdagangan dengan turun naik yang tinggi. Melalui pengoptimuman dan penyesuaian parameter yang betul, strategi ini mempunyai potensi untuk mencapai pulangan yang stabil dalam perdagangan langsung. Pedagang dinasihatkan untuk menjalankan pengujian balik dan perdagangan demo yang menyeluruh sebelum pelaksanaan langsung, dan mengoptimumkan parameter mengikut keadaan perdagangan sebenar.


/*backtest
start: 2023-11-18 00:00:00
end: 2024-11-17 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("30 Pips Target & 15 Pips Stop-Loss with One Signal at a Time", overlay=true)

// Define settings for target and stop-loss in pips
target_in_pips = 30
stoploss_in_pips = 10

// Convert pips to price value based on market (for forex, 1 pip = 0.0001 for major pairs like GBP/JPY)
pip_value = syminfo.mintick * 10  // For forex, 1 pip = 0.0001 or 0.01 for JPY pairs
target_value = target_in_pips * pip_value
stoploss_value = stoploss_in_pips * pip_value

// Define EMAs (10-EMA and 26-EMA) for the crossover strategy
ema10 = ta.ema(close, 10)
ema26 = ta.ema(close, 26)

// Buy signal: when 10 EMA crosses above 26 EMA
longCondition = ta.crossover(ema10, ema26)
// Sell signal: when 10 EMA crosses below 26 EMA
shortCondition = ta.crossunder(ema10, ema26)

// Define price levels with explicit type float
var float long_entry_price = na
var float long_take_profit = na
var float long_stop_loss = na
var float short_entry_price = na
var float short_take_profit = na
var float short_stop_loss = na

// Variable to track if a trade is active
var bool inTrade = false

// Check if the trade hit stop loss or take profit
if (inTrade)
    if (not na(long_take_profit) and close >= long_take_profit)
        inTrade := false  // Exit the trade after hitting target
        long_entry_price := na
        long_take_profit := na
        long_stop_loss := na
        strategy.close("Long")

    if (not na(long_stop_loss) and close <= long_stop_loss)
        inTrade := false  // Exit the trade after hitting stoploss
        long_entry_price := na
        long_take_profit := na
        long_stop_loss := na
        strategy.close("Long")

    if (not na(short_take_profit) and close <= short_take_profit)
        inTrade := false  // Exit the trade after hitting target
        short_entry_price := na
        short_take_profit := na
        short_stop_loss := na
        strategy.close("Short")

    if (not na(short_stop_loss) and close >= short_stop_loss)
        inTrade := false  // Exit the trade after hitting stoploss
        short_entry_price := na
        short_take_profit := na
        short_stop_loss := na
        strategy.close("Short")

// Only generate new signals if not already in a trade
if (not inTrade)
    if (longCondition)
        long_entry_price := close
        long_take_profit := close + target_value
        long_stop_loss := close - stoploss_value
        strategy.entry("Long", strategy.long)  // Enter a long trade
        strategy.exit("Take Profit/Stop Loss", "Long", limit=long_take_profit, stop=long_stop_loss)
        inTrade := true  // Mark trade as active

    if (shortCondition)
        short_entry_price := close
        short_take_profit := close - target_value
        short_stop_loss := close + stoploss_value
        strategy.entry("Short", strategy.short)  // Enter a short trade
        strategy.exit("Take Profit/Stop Loss", "Short", limit=short_take_profit, stop=short_stop_loss)
        inTrade := true  // Mark trade as active

// Plot the levels on the chart only when in a trade
plot(inTrade and not na(long_take_profit) ? long_take_profit : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Take Profit (Long)")
plot(inTrade and not na(long_stop_loss) ? long_stop_loss : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Stop Loss (Long)")

plot(inTrade and not na(short_take_profit) ? short_take_profit : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Take Profit (Short)")
plot(inTrade and not na(short_stop_loss) ? short_stop_loss : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Stop Loss (Short)")

plotshape(series=longCondition and not inTrade, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=shortCondition and not inTrade, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")


Berkaitan

Lebih lanjut