Strategi ini adalah sistem perdagangan kuantitatif berdasarkan sinyal crossover rata-rata bergerak ganda, yang mengidentifikasi perubahan tren pasar melalui persimpangan rata-rata bergerak jangka pendek dan jangka panjang, dikombinasikan dengan manajemen stop-loss dan take-profit yang dinamis untuk pengendalian risiko.
Strategi ini menggunakan dua Simple Moving Averages (SMA) dari periode yang berbeda sebagai dasar utama untuk sinyal perdagangan. Sinyal panjang dihasilkan ketika MA jangka pendek melintasi di atas MA jangka panjang, dan sinyal pendek dihasilkan ketika MA jangka pendek melintasi di bawah MA jangka panjang. Sistem memeriksa status posisi saat ini ketika sinyal terjadi, menutup posisi lawan terlebih dahulu, kemudian membuka posisi baru sesuai dengan arah sinyal. Setiap perdagangan secara otomatis menetapkan tingkat stop-loss dan take-profit berdasarkan persentase yang telah ditetapkan sebelumnya, mencapai manajemen dinamis rasio risiko-manfaat.
Ini adalah strategi perdagangan kuantitatif yang komprehensif dengan logika yang jelas. Ini menangkap perubahan tren melalui crossover MA ganda dan mengelola risiko dengan tingkat stop-loss dan take-profit yang dinamis. Kekuatan strategi ini terletak pada pendekatan sistematis dan pengendalian risiko, tetapi harus memperhatikan berbagai risiko pasar dalam perdagangan langsung. Melalui optimalisasi dan perbaikan terus-menerus, strategi dapat mempertahankan kinerja yang stabil di lingkungan pasar yang berbeda. Disarankan untuk melakukan backtesting menyeluruh sebelum implementasi langsung dan menyesuaikan parameter sesuai dengan kondisi aktual.
/*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)