Penjejakan Trend Purata Pergerakan Bertiga dan Strategi Perdagangan Kuantitatif Gabungan Momentum

EMA TEMA MACD SMA
Tarikh penciptaan: 2024-11-27 16:08:16 Akhirnya diubah suai: 2024-11-27 16:08:16
Salin: 2 Bilangan klik: 439
1
fokus pada
1617
Pengikut

Penjejakan Trend Purata Pergerakan Bertiga dan Strategi Perdagangan Kuantitatif Gabungan Momentum

Gambaran keseluruhan

Ini adalah strategi perdagangan kuantitatif yang berasaskan pengesanan trend yang digabungkan dengan analisis dinamik. Strategi ini menggunakan purata bergerak tiga indeks (TEMA), persilangan purata bergerak berganda, dan penunjuk variasi MACD untuk mengenal pasti trend pasaran dan masa masuk. Strategi ini menggunakan mekanisme kawalan risiko yang ketat, termasuk sasaran berhenti tetap, keuntungan, dan pengesanan berhenti untuk mencapai keseimbangan terbaik antara risiko dan keuntungan.

Prinsip Strategi

Strategi ini digunakan untuk menentukan isyarat dagangan melalui tiga sistem petunjuk teknikal utama:

  1. Sistem TEMA digunakan untuk mengesahkan arah trend keseluruhan. Kekuatan trend ditentukan dengan mengira tiga lapisan EMA dan menggabungkan perubahan dinamiknya.
  2. Sistem penyambung garis rata-rata menggunakan EMA 9 dan 15 kitaran untuk menangkap titik peralihan trend pertengahan.
  3. Harga bersilang dengan EMA 5 kitaran sebagai isyarat pengesahan terakhir, digunakan untuk mengetahui masa masuk yang tepat.

Sinyal perdagangan perlu dipicu dengan syarat berikut:

  • Indeks MACD membentuk persilangan emas dengan garis isyaratnya dan TEMA bergerak ke atas
  • EMA jangka pendek di atas EMA jangka panjang
  • Harga naik melalui 5 kitaran EMA

Kelebihan Strategik

  1. Mekanisme pengesahan berbilang mengurangkan kesan isyarat palsu dan meningkatkan ketepatan transaksi.
  2. Dengan menggabungkan kelebihan trend tracking dan analisis momentum, anda dapat menangkap trend besar dan tidak terlepas peluang jangka pendek.
  3. Mempunyai mekanisme penangguhan yang sempurna, termasuk titik penangguhan tetap dan penangguhan penarikan yang dinamik, untuk mengawal risiko dengan berkesan.
  4. Parameter strategi boleh diselaraskan dengan keadaan pasaran yang berbeza.
  5. Logik kemasukan jelas, mudah difahami dan dilaksanakan.

Risiko Strategik

  1. Mesej pengesahan berganda boleh menyebabkan kemasukan lambat dan kehilangan beberapa peluang dalam perjalanan pantas.
  2. Titik hentian tetap perlu diselaraskan dengan turun naik pasaran yang berbeza, jika tidak, ia mungkin terhenti terlalu awal.
  3. Dalam pasaran yang bergolak, isyarat palsu sering berlaku.
  4. Pengesanan terhad mungkin keluar dari aliran yang lebih baik pada masa pasaran yang bergolak.

Arah pengoptimuman strategi

  1. Pengenalan penunjuk kadar turun naik untuk menyesuaikan sasaran hentian kerugian dan keuntungan secara dinamik, menjadikannya lebih sesuai dengan keadaan pasaran.
  2. Tambahkan penunjuk volum sebagai pengesahan tambahan untuk meningkatkan kebolehpercayaan isyarat.
  3. Menyertai mekanisme pengenalan persekitaran pasaran, menggunakan kombinasi parameter yang berbeza dalam keadaan pasaran yang berbeza.
  4. Mengembangkan mekanisme penambahan simpanan berlawanan dan membina simpanan yang sederhana untuk meningkatkan pendapatan semasa pemulihan.
  5. Mengoptimumkan algoritma pengesanan hentian untuk menyesuaikan diri dengan turun naik pasaran.

ringkaskan

Strategi ini membina sistem perdagangan yang stabil dengan menggabungkan beberapa sistem penunjuk teknikal. Kelebihan utamanya adalah mekanisme pengesahan berganda dan sistem kawalan risiko yang baik. Walaupun terdapat risiko ketinggalan zaman, strategi ini masih mempunyai ruang untuk penambahbaikan yang besar melalui pengoptimuman parameter dan pengembangan fungsi.

Kod sumber strategi
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("ITG Scalper Strategy", shorttitle="lokesh_ITG_Scalper_Strategy", overlay=true)

// General inputs
len = input(14, title="TEMA period")
FfastLength = input.int(13, title="Filter fast length")
FslowLength = input.int(18, title="Filter slow length")
FsignalLength = input.int(14, title="Filter signal length")
sl_points = 7 // 5 points stop loss
tp_points = 100 // 100 points target profit
trail_points = 15 // Trailing stop loss every 10 points

// Validate input
if FfastLength < 1
    FfastLength := 1
if FslowLength < 1
    FslowLength := 1
if FsignalLength < 1
    FsignalLength := 1

// Get real close price
realC = close

// Triple EMA definition
ema1 = ta.ema(realC, len)
ema2 = ta.ema(ema1, len)
ema3 = ta.ema(ema2, len)

// Triple EMA trend calculation
avg = 3 * (ema1 - ema2) + ema3

// Filter formula
Fsource = close
FfastMA = ta.ema(Fsource, FfastLength)
FslowMA = ta.ema(Fsource, FslowLength)
Fmacd = FfastMA - FslowMA
Fsignal = ta.sma(Fmacd, FsignalLength)

// Plot EMAs for visual reference
shortema = ta.ema(close, 9)
longema = ta.ema(close, 15)
yma = ta.ema(close, 5)
plot(shortema, color=color.green)
plot(longema, color=color.red)
plot(yma, color=#e9f72c)

// Entry conditions
firstCrossover = ta.crossover(Fmacd, Fsignal) and avg > avg[1]
secondCrossover = ta.crossover(shortema, longema)  // Assuming you meant to cross shortema with longema
thirdCrossover = ta.crossover(close, yma)

var bool entryConditionMet = false

if (firstCrossover)
    entryConditionMet := true

longSignal = entryConditionMet and secondCrossover and thirdCrossover

// Strategy execution
if (longSignal)
    strategy.entry("Long", strategy.long)
    entryConditionMet := false  // Reset the entry condition after taking a trade

// Calculate stop loss and take profit prices
var float long_sl = na
var float long_tp = na

if strategy.position_size > 0  // Long position
    long_sl := close - sl_points
    long_tp := close + tp_points
    
    // Adjust stop loss with trailing logic
    if (close - long_sl > trail_points)
        long_sl := close - trail_points
        
    strategy.exit("Exit Long", "Long", stop=long_sl, limit=long_tp)

// Plotting Buy signals
plotshape(series=longSignal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")

// Alerts
alertcondition(longSignal, title="Buy Signal", message="Buy Signal")