
Strategi ini adalah sistem perdagangan yang mengesan trend berdasarkan dua persimpangan yang sama. Strategi ini menggunakan teori analisis teknikal klasik, digabungkan dengan kaedah perdagangan kuantitatif moden, untuk mencapai proses keputusan perdagangan yang sepenuhnya automatik.
Logik teras strategi didasarkan pada isyarat silang dua purata bergerak berkala yang berbeza. Apabila rata-rata jangka pendek (hari 9) naik melintasi rata-rata jangka panjang (hari 21), sistem menganggap pergerakan pasaran bertukar ke atas, dan mencetuskan beberapa isyarat; Apabila rata-rata jangka pendek melintasi rata-rata jangka panjang, sistem menganggap pergerakan pasaran bertukar ke bawah, dan perdagangan ditutup.
Ini adalah strategi pengesanan trend klasik dan praktikal yang menangkap perubahan dinamik pasaran melalui persilangan dua garis rata. Walaupun terdapat risiko ketinggalan dan isyarat palsu, ciri-cirinya yang mudah dan stabil menjadikannya alat penting dalam bidang perdagangan kuantitatif. Dengan arah pengoptimuman yang dicadangkan, kestabilan dan keuntungan strategi dijangka meningkat lebih lanjut.
/*backtest
start: 2024-05-20 00:00:00
end: 2024-12-13 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Simple MA Crossover Strategy", overlay=true)
// Input parameters
shortMA = ta.sma(close, 9)
longMA = ta.sma(close, 21)
// Buy/Sell conditions
buyCondition = ta.crossover(shortMA, longMA)
sellCondition = ta.crossunder(shortMA, longMA)
// Plot moving averages
plot(shortMA, color=color.blue, title="Short MA")
plot(longMA, color=color.red, title="Long MA")
// Execute trades
if (buyCondition)
strategy.entry("Buy", strategy.long)
if (sellCondition)
strategy.close("Buy")
// Track trades, wins, and losses
var int totalTrades = 0
var int totalWins = 0
var int totalLosses = 0
if (strategy.opentrades > 0)
totalTrades := totalTrades + 1
if (strategy.opentrades == 0 and strategy.opentrades[1] > 0)
if (strategy.netprofit > 0)
totalWins := totalWins + 1
else
totalLosses := totalLosses + 1
// Plot trade statistics
var label tradeStats = na
if (not na(tradeStats))
label.delete(tradeStats)
tradeStats := label.new(bar_index, high, text="Trades: " + str.tostring(totalTrades) + "\nWins: " + str.tostring(totalWins) + "\nLosses: " + str.tostring(totalLosses), style=label.style_label_down, color=color.white, textcolor=color.black)