
Strategi ini adalah sistem perdagangan otomatis berdasarkan sinyal persilangan rata-rata pergerakan, yang mengoptimalkan kinerja perdagangan dengan menetapkan rasio risiko-pengembalian tetap. Strategi ini menggunakan persilangan rata-rata pergerakan cepat (Fast MA) dan rata-rata pergerakan lambat (Slow MA) untuk menentukan arah tren pasar, dan menggabungkan titik stop loss dan target keuntungan yang telah ditetapkan sebelumnya untuk mengelola risiko posisi.
Logika inti dari strategi ini didasarkan pada sinyal persilangan yang dihasilkan oleh dua rata-rata pergerakan dalam periode yang berbeda (10 periode dan 30 periode). Ketika garis cepat melintasi garis lambat, sistem menghasilkan sinyal panjang; ketika garis cepat melintasi garis lambat, sistem menghasilkan sinyal pendek. Setelah setiap posisi dibuka, sistem akan secara otomatis menghitung posisi stop loss berdasarkan rasio stop loss 2% yang telah ditetapkan, dan menetapkan target keuntungan berdasarkan rasio risiko-imbal hasil 2,5 kali. Pendekatan ini memastikan bahwa setiap perdagangan memiliki profil risiko-pengembalian yang tetap.
Strategi ini membangun sistem perdagangan lengkap dengan menggabungkan metode analisis teknis klasik dengan konsep manajemen risiko modern. Meskipun ada keterbatasan tertentu, melalui pengoptimalan dan perbaikan berkelanjutan, strategi ini diharapkan dapat mempertahankan kinerja yang stabil di berbagai lingkungan pasar. Kuncinya adalah terus menyesuaikan pengaturan parameter berdasarkan hasil perdagangan aktual dan menemukan konfigurasi yang paling sesuai dengan lingkungan pasar saat ini.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SOL 15m 2.5 R:R Strategy", overlay=true, margin_long=100, margin_short=100, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1)
//---------------------------------------------------
// User Inputs
//---------------------------------------------------
// sym = input.symbol("swap", "Symbol")
timeframe = input.timeframe("15", "Timeframe")
fastLength = input.int(10, "Fast MA Length")
slowLength = input.int(30, "Slow MA Length")
stopLossPerc = input.float(2.0, "Stop Loss %", step=0.1) // This is an example; adjust to achieve ~45% win rate
RR = input.float(2.5, "Risk to Reward Ratio", step=0.1)
//---------------------------------------------------
// Data Sources
//---------------------------------------------------
price = request.security("swap", timeframe, close)
// Compute moving averages
fastMA = ta.sma(price, fastLength)
slowMA = ta.sma(price, slowLength)
// Entry Conditions
longCondition = ta.crossover(fastMA, slowMA)
shortCondition = ta.crossunder(fastMA, slowMA)
//---------------------------------------------------
// Stop Loss and Take Profit Calculation
//---------------------------------------------------
var entryPrice = 0.0
if (strategy.position_size == 0) // not in a position
if longCondition
// Long entry
entryPrice := price
strategy.entry("Long", strategy.long)
if shortCondition
// Short entry
entryPrice := price
strategy.entry("Short", strategy.short)
if strategy.position_size > 0
// We are in a long position
if strategy.position_avg_price > 0 and strategy.position_size > 0
longStop = strategy.position_avg_price * (1 - stopLossPerc/100)
longTarget = strategy.position_avg_price * (1 + (stopLossPerc/100)*RR)
strategy.exit("Long Exit", "Long", stop=longStop, limit=longTarget)
if strategy.position_size < 0
// We are in a short position
if strategy.position_avg_price > 0 and strategy.position_size < 0
shortStop = strategy.position_avg_price * (1 + stopLossPerc/100)
shortTarget = strategy.position_avg_price * (1 - (stopLossPerc/100)*RR)
strategy.exit("Short Exit", "Short", stop=shortStop, limit=shortTarget)
//---------------------------------------------------
// Plotting
//---------------------------------------------------
plot(fastMA, color=color.new(color.teal, 0), title="Fast MA")
plot(slowMA, color=color.new(color.orange, 0), title="Slow MA")