
Strategi ini ialah sistem penjejakan arah aliran dinamik berdasarkan isyarat persilangan purata bergerak berganda Ia mengenal pasti perubahan arah aliran pasaran melalui persilangan purata bergerak eksponen (EMA) 20 hari jangka pendek dan purata bergerak eksponen 50 hari jangka panjang (. EMA), dan secara automatik melaksanakan operasi beli dan jual. Strategi ini menggunakan kaedah analisis teknikal yang matang, menggabungkan ciri-ciri penjejakan arah aliran dan pengurusan kedudukan dinamik, dan sesuai untuk persekitaran pasaran dengan turun naik yang lebih besar.
Logik teras strategi adalah berdasarkan elemen utama berikut:
Strategi ini merupakan pelaksanaan moden sistem penjejakan arah aliran klasik Melalui perdagangan terprogram, strategi persilangan purata bergerak berganda tradisional disusun dan diseragamkan. Walaupun terdapat beberapa risiko yang wujud, strategi ini mempunyai prospek aplikasi yang baik melalui pengoptimuman dan penambahbaikan berterusan. Adalah disyorkan untuk menjalankan pengoptimuman parameter yang mencukupi dan pengesahan ujian belakang sebelum penggunaan sebenar.
/*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)