
Strategi ini adalah strategi perdagangan kuantitatif yang didasarkan pada persilangan rata-rata bergerak. Dengan menghitung rata-rata bergerak dari dua periode yang berbeda (garis cepat dan garis lambat), strategi ini menghasilkan sinyal beli ketika garis cepat melintasi garis lambat dari bawah ke atas, dan sinyal jual ketika garis cepat melintasi garis lambat dari atas ke bawah. Strategi ini juga memperkenalkan konsep manajemen posisi dinamis, yang secara dinamis menyesuaikan ukuran posisi setiap perdagangan sesuai dengan kerugian akun, untuk mengendalikan risiko.
Strategi moving average crossover adalah strategi perdagangan kuantitatif yang sederhana dan praktis untuk menangkap tren harga melalui sinyal silang dari dua rata-rata bergerak dengan periode yang berbeda, sambil memperkenalkan aturan manajemen posisi dinamis untuk mengendalikan risiko. Strategi ini logisnya jelas, mudah diimplementasikan, dan luas. Namun, dalam aplikasi praktis, perlu diperhatikan risiko potensial seperti perdagangan yang sering terjadi, kinerja pasar yang bergolak, dan pengoptimalan parameter, dan sesuai dengan kebutuhan untuk mengoptimalkan dan memperbaiki strategi, seperti memasukkan indikator untuk mengkonfirmasi tren, mengoptimalkan aturan posisi, mengatur stop loss, dan mengoptimalkan parameter.
/*backtest
start: 2024-06-06 00:00:00
end: 2024-06-13 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © okolienicholas
//@version=5
strategy("Moving Average Crossover Strategy", overlay=true)
// Input parameters
fast_length = input(9, title="Fast MA Length")
slow_length = input(21, title="Slow MA Length")
source = close
account_balance = input(100, title="Account Balance") // Add your account balance here
// Calculate moving averages
fast_ma = ta.sma(source, fast_length)
slow_ma = ta.sma(source, slow_length)
// Plot moving averages
plot(fast_ma, color=color.blue, title="Fast MA")
plot(slow_ma, color=color.red, title="Slow MA")
// Generate buy/sell signals
buy_signal = ta.crossover(fast_ma, slow_ma)
sell_signal = ta.crossunder(fast_ma, slow_ma)
// Plot buy/sell signals
plotshape(buy_signal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(sell_signal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")
// Calculate the risk per trade
risk_per_trade = account_balance * 0.01
// Calculate the number of shares to buy
shares_to_buy = risk_per_trade / (high - low)
// Calculate the profit or loss
profit_or_loss = strategy.netprofit
// Adjust the position size based on the profit or loss
if (profit_or_loss > 0)
shares_to_buy = shares_to_buy * 1.1 // Increase the position size by 10% when in profit
else
shares_to_buy = shares_to_buy * 0.9 // Decrease the position size by 10% when in loss
// Execute orders
if (buy_signal)
strategy.entry("Buy", strategy.long, qty=shares_to_buy)
if (sell_signal)
strategy.entry("Sell", strategy.short, qty=shares_to_buy)