
Strategi ini adalah sistem perdagangan pelacakan tren yang didasarkan pada dua garis persilangan. Strategi ini menangkap saat-saat perubahan tren pasar dengan membandingkan hubungan posisi relatif antara rata-rata bergerak jangka pendek dan jangka panjang (tanggal 9 dan 21 masing-masing). Strategi ini menggunakan teori analisis teknis klasik, yang dikombinasikan dengan metode perdagangan kuantitatif modern, untuk mencapai proses keputusan perdagangan yang sepenuhnya otomatis.
Logika inti strategi didasarkan pada sinyal silang dari dua rata-rata bergerak periode yang berbeda. Ketika rata-rata jangka pendek (tanggal 9) naik melintasi rata-rata jangka panjang (tanggal 21), sistem menganggap dinamika pasar bergeser ke atas, memicu banyak sinyal; Ketika rata-rata jangka pendek (tanggal 9) turun melintasi rata-rata jangka panjang, sistem menganggap dinamika pasar bergeser ke bawah, dan perdagangan ditutup.
Ini adalah strategi pelacakan tren klasik dan praktis untuk menangkap perubahan dinamika pasar melalui silang dua garis sejajar. Meskipun ada risiko keterbelakangan dan sinyal palsu, karakteristiknya yang sederhana dan stabil membuatnya menjadi alat penting di bidang perdagangan kuantitatif. Dengan arah optimasi yang diusulkan, stabilitas dan profitabilitas strategi diharapkan dapat ditingkatkan 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)