
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.
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.
Ia boleh dioptimumkan dengan:
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.
/*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())