Strategi ini adalah sistem perdagangan kuantitatif yang menggabungkan dua Exponential Moving Averages (EMA) dengan Stochastic Oscillator. Strategi ini menggunakan EMA 20 periode dan 50 periode untuk menentukan tren pasar sambil menggunakan Stochastic Oscillator untuk mengidentifikasi peluang perdagangan di zona overbought dan oversold, mencapai perpaduan sempurna dari tren dan momentum. Strategi ini menerapkan langkah-langkah manajemen risiko yang ketat, termasuk target stop-loss dan keuntungan tetap.
Logika inti terdiri dari tiga komponen: identifikasi tren, waktu masuk, dan pengendalian risiko. Identifikasi tren terutama bergantung pada posisi relatif EMA cepat (20 periode) dan EMA lambat (50 periode), di mana tren naik dikonfirmasi ketika garis cepat berada di atas garis lambat, dan sebaliknya. Sinyal masuk dikonfirmasi oleh persilangan osilator stokastik, mencari perdagangan kemungkinan tinggi di zona overbought dan oversold. Pengendalian risiko menggunakan stop-loss persentase tetap dan target laba 2: 1, memastikan rasio risiko-manfaat yang jelas untuk setiap perdagangan.
Strategi ini membangun sistem perdagangan yang lengkap dengan menggabungkan indikator tren dan momentum. Kekuatannya terletak pada kerangka kerja logis yang jelas dan kontrol risiko yang ketat, meskipun penerapan praktis membutuhkan optimasi parameter berdasarkan kondisi pasar tertentu. Melalui perbaikan dan optimalisasi terus-menerus, strategi ini memiliki potensi untuk mempertahankan kinerja yang stabil di berbagai lingkungan pasar.
/*backtest start: 2024-12-06 00:00:00 end: 2025-01-04 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy("EMA + Stochastic Strategy", overlay=true) // Inputs for EMA emaShortLength = input.int(20, title="Short EMA Length") emaLongLength = input.int(50, title="Long EMA Length") // Inputs for Stochastic stochK = input.int(14, title="Stochastic %K Length") stochD = input.int(3, title="Stochastic %D Smoothing") stochOverbought = input.int(85, title="Stochastic Overbought Level") stochOversold = input.int(15, title="Stochastic Oversold Level") // Inputs for Risk Management riskRewardRatio = input.float(2.0, title="Risk-Reward Ratio") stopLossPercent = input.float(1.0, title="Stop Loss (%)") // EMA Calculation emaShort = ta.ema(close, emaShortLength) emaLong = ta.ema(close, emaLongLength) // Stochastic Calculation k = ta.stoch(high, low, close, stochK) d = ta.sma(k, stochD) // Trend Condition isUptrend = emaShort > emaLong isDowntrend = emaShort < emaLong // Stochastic Signals stochBuyCrossover = ta.crossover(k, d) stochBuySignal = k < stochOversold and stochBuyCrossover stochSellCrossunder = ta.crossunder(k, d) stochSellSignal = k > stochOverbought and stochSellCrossunder // Entry Signals buySignal = isUptrend and stochBuySignal sellSignal = isDowntrend and stochSellSignal // Strategy Execution if buySignal strategy.entry("Buy", strategy.long) stopLoss = close * (1 - stopLossPercent / 100) takeProfit = close * (1 + stopLossPercent * riskRewardRatio / 100) strategy.exit("Take Profit/Stop Loss", from_entry="Buy", stop=stopLoss, limit=takeProfit) if sellSignal strategy.entry("Sell", strategy.short) stopLoss = close * (1 + stopLossPercent / 100) takeProfit = close * (1 - stopLossPercent * riskRewardRatio / 100) strategy.exit("Take Profit/Stop Loss", from_entry="Sell", stop=stopLoss, limit=takeProfit) // Plotting plot(emaShort, color=color.blue, title="Short EMA") plot(emaLong, color=color.red, title="Long EMA")