Strategi dagangan pecah apabila purata bergerak jangka pendek melintasi purata bergerak jangka sederhana dan panjang


Tarikh penciptaan: 2023-11-24 13:33:21 Akhirnya diubah suai: 2023-11-24 13:33:21
Salin: 0 Bilangan klik: 853
1
fokus pada
1617
Pengikut

Strategi dagangan pecah apabila purata bergerak jangka pendek melintasi purata bergerak jangka sederhana dan panjang

Strategi ini menghasilkan isyarat dagangan berdasarkan purata bergerak indeks (EMA) dalam tiga kitaran yang berbeza: jangka pendek, jangka menengah dan jangka panjang. EMA jangka pendek adalah 5 hari, EMA jangka menengah adalah 8 hari, dan EMA jangka panjang adalah 13 hari. Apabila EMA jangka pendek melintasi EMA jangka menengah dan jangka panjang, buat lebih banyak, dan apabila EMA jangka pendek melintasi EMA jangka menengah dan jangka panjang, buat kosong.

Prinsip Strategi

Strategi ini menilai trend pasaran dengan mengira EMA dari pelbagai kitaran. EMA jangka pendek mencerminkan harga purata dalam beberapa hari kebelakangan ini, dan EMA jangka menengah mencerminkan harga purata dalam jangka masa yang lebih lama. EMA jangka pendek di atas EMA jangka panjang mewakili harga mula menembus ke atas, jadi lebih banyak; EMA jangka pendek di bawah EMA jangka panjang mewakili harga mula menembus ke bawah, jadi kosong.

Khususnya, strategi ini mengira tiga EMA pada masa yang sama iaitu 5, 8, dan 13 hari. Apabila EMA 5 hari di atas EMA 8 hari dan EMA 13 hari, ia menghasilkan isyarat lebih banyak; apabila EMA 5 hari di bawah EMA 8 hari dan 13 hari, ia menghasilkan isyarat kosong.

Kelebihan Strategik

  1. Menggunakan EMA pelbagai kitaran untuk menilai trend, mengelakkan kehilangan titik perubahan trend utama kerana satu EMA terlalu pendek atau terlalu panjang
  2. Gabungan tiga EMA jangka pendek dan panjang, isyarat dagangan lebih dipercayai dan tepat
  3. EMA boleh menapis sebahagian daripada bunyi pasaran untuk meluruskan harga dan mengelakkan penempatan yang tidak perlu

Risiko Strategik

  1. Ketiga-tiga EMA adalah penunjuk trend yang tertunda, pasti ada selisih masa sebelum harga sebenar pecah, yang boleh menyebabkan isyarat perdagangan tertunda
  2. EMA tidak dapat membezakan antara trend sebenar dan penyesuaian jangka pendek, yang boleh memberi isyarat yang salah
  3. Kitaran EMA tetap tidak dapat menyesuaikan diri dengan ciri-ciri pasaran yang berubah-ubah dalam kitaran yang berbeza

Ia boleh dioptimumkan dengan:

  1. Mengambil kira trend sebenar bersama-sama dengan penunjuk lain seperti MACD untuk mengelakkan isyarat yang salah
  2. Parameter kitaran EMA boleh disesuaikan secara fleksibel mengikut varieti dan keadaan pasaran
  3. Tambah Stop Loss Bergerak untuk mengunci keuntungan dan mengawal risiko

ringkaskan

Strategi ini menilai pembalikan trend pasaran dengan mengira EMA tiga kitaran pendek dan panjang dan membandingkan keadaan persimpangan mereka. Ia adalah sistem penembusan yang tipikal. Kelebihannya adalah isyarat perdagangan yang mudah difahami dan mudah dikendalikan; Kelemahannya adalah bahawa penunjuk EMA sendiri terlewat, tidak dapat membezakan antara trend sebenar dan penyesuaian jangka pendek.

Kod sumber strategi
/*backtest
start: 2023-11-16 00:00:00
end: 2023-11-23 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// 
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © gregoirejohnb
// @It is modified by ttsaadet.
// Moving average crossover systems measure drift in the market. They are great strategies for time-limited people.
// So, why don't more people use them?
// 

//
strategy(title="EMA Crossover Strategy", shorttitle="EMA-5-8-13 COS by TTS", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, currency=currency.TRY,commission_type=strategy.commission.percent,commission_value=0.04, process_orders_on_close = true, initial_capital = 100000)

// === GENERAL INPUTS ===
//strategy start date
start_year = input(defval=2020, title="Backtest Start Year")

// === LOGIC ===
short_period = input(type=input.integer,defval=5,minval=1,title="Length")
mid_period = input(type=input.integer,defval=8,minval=1,title="Length")
long_period = input(type=input.integer,defval=13,minval=1,title="Length")

longOnly = input(type=input.bool,defval=false,title="Long Only")
shortEma = ema(hl2,short_period)
midEma = ema(hl2,mid_period)
longEma = ema(hl2,long_period)

plot(shortEma,linewidth=2,color=color.red,title="Fast")
plot(midEma,linewidth=2,color=color.orange,title="Fast")
plot(longEma,linewidth=2,color=color.blue,title="Slow")

longEntry = ((shortEma > midEma) and crossover(shortEma,longEma)) or ((shortEma > longEma) and crossover(shortEma,midEma))
shortEntry =((shortEma < midEma) and crossunder(shortEma,longEma)) or ((shortEma < longEma) and crossunder(shortEma,midEma))

plotshape(longEntry ? close : na,style=shape.triangleup,color=color.green,location=location.belowbar,size=size.small,title="Long Triangle")
plotshape(shortEntry and not longOnly ? close : na,style=shape.triangledown,color=color.red,location=location.abovebar,size=size.small,title="Short Triangle")
plotshape(shortEntry and longOnly ? close : na,style=shape.xcross,color=color.black,location=location.abovebar,size=size.small,title="Exit Sign")

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() =>
    longEntry 
exitLong() =>
    crossunder(shortEma,longEma)

strategy.entry(id="Long", long=strategy.long, when=enterLong())
strategy.close(id="Long", when=exitLong())


// === STRATEGY - SHORT POSITION EXECUTION ===

enterShort() =>
    not longOnly and shortEntry  
exitShort() =>
    crossover(shortEma,longEma)

strategy.entry(id="Short", long=strategy.short, when=enterShort())
strategy.close(id="Short", when=exitShort())