Strategi ini adalah pendekatan perdagangan kuantitatif yang menggabungkan Indeks Kekuatan Relatif (RSI) dan penunjuk Divergensi Convergensi Purata Bergerak (MACD). Konsep teras melibatkan pemantauan zon overbought / oversold RSI sambil mengesahkan trend melalui persilangan MACD dalam tetingkap 5 tempoh. Metodologi ini memberikan isyarat perdagangan yang lebih tepat sambil mengurangkan risiko dari isyarat palsu dengan berkesan.
Strategi ini dibina di atas beberapa komponen utama:
Strategi ini mewujudkan sistem dagangan yang agak lengkap dengan menggabungkan penunjuk RSI dan MACD dengan syarat kemasukan yang fleksibel dan mekanisme kawalan risiko. Walaupun terdapat bidang untuk pengoptimuman, kerangka asas menawarkan skalabiliti yang baik dan, melalui penyempurnaan dan penambahbaikan lanjut, mempunyai potensi untuk berkembang menjadi strategi dagangan yang lebih mantap.
/*backtest start: 2024-11-12 00:00:00 end: 2024-12-12 00:00:00 period: 2h basePeriod: 2h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("MACD & RSI Strategy with SL/TP and Flexible Entry (5 bars)", overlay=true) // Параметры для RSI и MACD rsiLength = 14 overbought = 70 oversold = 30 [macdLine, signalLine, _] = ta.macd(close, 12, 26, 9) // Рассчитаем RSI rsi = ta.rsi(close, rsiLength) // Проверка пересечения MACD macdCrossOver = ta.crossover(macdLine, signalLine) macdCrossUnder = ta.crossunder(macdLine, signalLine) // Логика для проверки пересечения MACD за последние 5 баров var bool macdCrossOverRecent = false var bool macdCrossUnderRecent = false // Проверяем пересечения за последние 5 баров for i = 0 to 4 if macdCrossOver[i] macdCrossOverRecent := true if macdCrossUnder[i] macdCrossUnderRecent := true // Условия для шортовой сделки: RSI выше 70 (перекупленность) + пересечение MACD за последние 5 баров shortCondition = ta.highest(rsi, 5) > overbought and macdCrossOverRecent // Условия для лонговой сделки: RSI ниже 30 (перепроданность) + пересечение MACD за последние 5 баров longCondition = ta.lowest(rsi, 5) < oversold and macdCrossUnderRecent // Процент для стоп-лосса и тейк-профита takeProfitPercent = 0.02 stopLossPercent = 0.02 // Открытие шортовой позиции if (shortCondition) strategy.entry("Short", strategy.short) // Открытие лонговой позиции if (longCondition) strategy.entry("Long", strategy.long) // Рассчитываем стоп-лосс и тейк-профит для шорта shortStopLoss = strategy.position_avg_price * (1 + stopLossPercent) shortTakeProfit = strategy.position_avg_price * (1 - takeProfitPercent) // Рассчитываем стоп-лосс и тейк-профит для лонга longStopLoss = strategy.position_avg_price * (1 - stopLossPercent) longTakeProfit = strategy.position_avg_price * (1 + takeProfitPercent) // Устанавливаем выход по стоп-лоссу и тейк-профиту для шортов if (strategy.position_size < 0) // Проверяем, что открыта шортовая позиция strategy.exit("Take Profit/Stop Loss Short", "Short", stop=shortStopLoss, limit=shortTakeProfit) // Устанавливаем выход по стоп-лоссу и тейк-профиту для лонгов if (strategy.position_size > 0) // Проверяем, что открыта лонговая позиция strategy.exit("Take Profit/Stop Loss Long", "Long", stop=longStopLoss, limit=longTakeProfit) // Графики для отображения RSI и MACD plot(rsi, "RSI", color=color.purple) hline(overbought, "Overbought", color=color.red) hline(oversold, "Oversold", color=color.green) plot(macdLine, "MACD Line", color=color.blue) plot(signalLine, "Signal Line", color=color.orange)