
Strategi ini adalah sistem perdagangan kuantitatif yang didasarkan pada sinyal crossover dua garis sejajar, mengidentifikasi perubahan tren pasar melalui persilangan rata-rata bergerak jangka pendek dan jangka panjang, dan dikombinasikan dengan manajemen stop loss dinamis untuk mengendalikan risiko. Strategi ini melakukan perdagangan dengan harga pasar, secara otomatis menghapus posisi yang ada dan membuka posisi baru ketika sinyal dipicu, untuk melindungi keamanan dana dengan menetapkan titik stop loss.
Strategi ini menggunakan rata-rata bergerak sederhana (SMA) dari dua periode yang berbeda sebagai dasar utama sinyal perdagangan. Ketika rata-rata jangka pendek melintasi rata-rata jangka panjang, sistem menghasilkan beberapa sinyal; Ketika rata-rata jangka pendek melintasi rata-rata jangka panjang, sistem menghasilkan sinyal penarikan.
Ini adalah strategi perdagangan kuantitatif yang terstruktur, logis, dan jelas. Strategi ini menangkap perubahan tren melalui crossover dua garis sejajar, dengan manajemen risiko stop loss yang dinamis. Keuntungan dari strategi ini adalah tingkat sistematisasi yang tinggi, risiko dapat dikendalikan, tetapi tetap perlu memperhatikan berbagai jenis risiko pasar di pasar nyata.
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("BTCUSD Daily Strategy - Market Orders Only", overlay=true, initial_capital=10000, currency=currency.USD)
// Configurable Inputs
stop_loss_percent = input.float(title="Stop Loss (%)", defval=1.0, minval=0.0, step=0.1)
take_profit_percent = input.float(title="Take Profit (%)", defval=2.0, minval=0.0, step=0.1)
short_ma_length = input.int(title="Short MA Length", defval=9, minval=1)
long_ma_length = input.int(title="Long MA Length", defval=21, minval=1)
// Moving Averages
short_ma = ta.sma(close, short_ma_length)
long_ma = ta.sma(close, long_ma_length)
// Plotting Moving Averages
plot(short_ma, color=color.blue, title="Short MA")
plot(long_ma, color=color.red, title="Long MA")
// Buy and Sell Signals
buy_signal = ta.crossover(short_ma, long_ma)
sell_signal = ta.crossunder(short_ma, long_ma)
// Market Buy Logic
if (buy_signal and strategy.position_size <= 0)
// Close any existing short position
if (strategy.position_size < 0)
strategy.close(id="Market Sell")
// Calculate Stop Loss and Take Profit Prices
entry_price = close
long_stop = entry_price * (1 - stop_loss_percent / 100)
long_take_profit = entry_price * (1 + take_profit_percent / 100)
// Enter Long Position
strategy.entry(id="Market Buy", direction=strategy.long)
strategy.exit(id="Exit Long", from_entry="Market Buy", stop=long_stop, limit=long_take_profit)
// Alert for Market Buy
alert("Market Buy Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(long_stop) + ", Take Profit: " + str.tostring(long_take_profit), alert.freq_once_per_bar_close)
// Market Sell Logic
if (sell_signal and strategy.position_size >= 0)
// Close any existing long position
if (strategy.position_size > 0)
strategy.close(id="Market Buy")
// Calculate Stop Loss and Take Profit Prices
entry_price = close
short_stop = entry_price * (1 + stop_loss_percent / 100)
short_take_profit = entry_price * (1 - take_profit_percent / 100)
// Enter Short Position
strategy.entry(id="Market Sell", direction=strategy.short)
strategy.exit(id="Exit Short", from_entry="Market Sell", stop=short_stop, limit=short_take_profit)
// Alert for Market Sell
alert("Market Sell Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(short_stop) + ", Take Profit: " + str.tostring(short_take_profit), alert.freq_once_per_bar_close)