
Strategi ini adalah sistem pelacakan tren dinamis berdasarkan sinyal persilangan rata-rata pergerakan ganda. Sistem ini mengidentifikasi perubahan tren pasar melalui persilangan rata-rata pergerakan eksponensial (EMA) jangka pendek 20 hari dan rata-rata pergerakan eksponensial jangka panjang 50 hari ( EMA), dan secara otomatis mengeksekusi operasi beli dan jual. Strategi ini mengadopsi metode analisis teknis yang matang, menggabungkan karakteristik pelacakan tren dan manajemen posisi dinamis, dan cocok untuk lingkungan pasar dengan volatilitas yang lebih besar.
Logika inti dari strategi ini didasarkan pada elemen-elemen kunci berikut:
Strategi ini merupakan implementasi modern dari sistem pelacakan tren klasik. Melalui perdagangan terprogram, strategi persilangan rata-rata pergerakan ganda tradisional disistematisasi dan distandarisasi. Meskipun ada beberapa risiko yang melekat, strategi ini memiliki prospek penerapan yang baik melalui pengoptimalan dan perbaikan yang berkelanjutan. Disarankan untuk melakukan optimasi parameter dan verifikasi pengujian ulang yang memadai sebelum penggunaan aktual.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover Buy/Sell Signals", overlay=true)
// Input parameters for EMAs
emaShortLength = input.int(20, title="Short EMA Length")
emaLongLength = input.int(50, title="Long EMA Length")
// Calculating EMAs
emaShort = ta.ema(close, emaShortLength)
emaLong = ta.ema(close, emaLongLength)
// Plotting EMA crossover lines
plot(emaShort, color=color.green, title="20 EMA")
plot(emaLong, color=color.red, title="50 EMA")
// Buy and Sell signal logic
longCondition = ta.crossover(emaShort, emaLong)
exitLongCondition = ta.crossunder(emaShort, emaLong)
shortCondition = ta.crossunder(emaShort, emaLong)
exitShortCondition = ta.crossover(emaShort, emaLong)
// Plot buy and sell signals on the chart
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal")
plotshape(series=exitLongCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Exit")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")
plotshape(series=exitShortCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Exit")
// Backtesting strategy logic
var float entryPrice = na
var int position = 0 // 1 for long, -1 for short, 0 for no position
if (longCondition and position == 0)
entryPrice := close
position := 1
if (shortCondition and position == 0)
entryPrice := close
position := -1
if (exitLongCondition and position == 1)
strategy.exit("Exit Long", from_entry="Long", limit=close)
position := 0
if (exitShortCondition and position == -1)
strategy.exit("Exit Short", from_entry="Short", limit=close)
position := 0
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)