
Strategi ini menghasilkan sinyal perdagangan berdasarkan rata-rata bergerak indeks (EMA) dari tiga periode yang berbeda: jangka pendek, menengah, dan jangka panjang. Di antaranya, siklus EMA jangka pendek adalah 5 hari, siklus EMA jangka menengah adalah 8 hari, dan siklus EMA jangka panjang adalah 13 hari. Bila EMA jangka pendek melewati EMA jangka menengah dan jangka panjang, lakukan lebih banyak; Bila EMA jangka pendek melewati EMA jangka menengah dan jangka panjang, lakukan lebih sedikit.
Strategi ini menilai tren pasar dengan menghitung EMA dari berbagai siklus. EMA jangka pendek mencerminkan harga rata-rata dalam beberapa hari terakhir, dan EMA jangka menengah mencerminkan harga rata-rata dalam waktu yang lebih lama. EMA jangka pendek di atas EMA jangka panjang mewakili harga mulai menembus ke atas, jadi lakukan lebih banyak; EMA jangka pendek di bawah EMA jangka panjang mewakili harga mulai menembus ke bawah, jadi lakukan lebih banyak.
Secara khusus, strategi ini memperhitungkan tiga EMA pada saat yang sama, yaitu pada 5, 8, dan 13 hari. Jika EMA di atas 5 hari melewati 8 hari dan EMA di atas 13 hari, maka akan ada sinyal bullish. Jika EMA di bawah 5 hari melewati 8 hari dan EMA di bawah 5 hari melewati 13 hari, maka akan ada sinyal bullish.
Hal ini dapat dioptimalkan dengan:
Strategi ini, dengan menghitung tiga siklus EMA pendek dan panjang dan membandingkan keadaan silang mereka untuk menilai pergeseran tren pasar, termasuk dalam sistem penembusan yang khas. Kelebihannya adalah sinyal perdagangan sederhana dan jelas, mudah dioperasikan; Kelemahannya adalah indikator EMA sendiri terlambat, tidak dapat membedakan tren nyata 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())