Strategi ini adalah sistem perdagangan otomatis berdasarkan sinyal crossover rata-rata bergerak, dioptimalkan melalui rasio risiko-manfaat tetap.
Logika inti didasarkan pada sinyal silang yang dihasilkan oleh dua rata-rata bergerak (10 periode dan 30 periode). Sistem menghasilkan sinyal panjang ketika MA cepat melintasi di atas MA lambat, dan sinyal pendek ketika MA cepat melintasi di bawah. Setelah setiap entri, sistem secara otomatis menghitung tingkat stop-loss berdasarkan persentase kerugian 2% yang telah ditetapkan sebelumnya dan menetapkan target mengambil keuntungan sesuai dengan rasio risiko-balasan 2,5. Pendekatan ini memastikan setiap perdagangan memiliki karakteristik risiko-balasan yang konsisten.
Strategi ini menggabungkan metode analisis teknis klasik dengan konsep manajemen risiko modern untuk membangun sistem perdagangan yang lengkap. Meskipun memiliki keterbatasan tertentu, pengoptimalan dan perbaikan terus-menerus memungkinkan strategi untuk mempertahankan kinerja yang stabil di berbagai kondisi pasar. Kuncinya terletak pada terus menyesuaikan pengaturan parameter berdasarkan hasil perdagangan aktual untuk menemukan konfigurasi yang paling cocok untuk 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")