
Эта стратегия является торговой системой, которая сочетает в себе отслеживание тенденции и обратную динамику. Она основана на средней 34-часовой EMA, которая определяет общую тенденцию.
Основная логика стратегии включает в себя следующие ключевые элементы:
Эта стратегия, объединяя несколько технических показателей, создает целостную торговую систему с хорошей адаптивностью и масштабируемостью. Основные преимущества стратегии заключаются в многомерном подтверждении сигналов и динамическом управлении рисками, но при этом также необходимо обратить внимание на вопросы оптимизации параметров и адаптации к рыночной среде. Благодаря постоянной оптимизации и совершенствованию эта стратегия, как ожидается, будет стабильно работать в различных рыночных условиях.
/*backtest
start: 2024-08-01 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bommytarton
//@version=6
strategy("Improved Momentum and Pivot Reversal Strategy", overlay=true)
// Define user inputs
lengthEMA = input.int(34, title="EMA Length", minval=1)
lengthRSI = input.int(14, title="RSI Length", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100)
rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50)
lengthATR = input.int(14, title="ATR Length", minval=1)
multATR = input.float(1.5, title="ATR Multiplier for Take-Profit", minval=1.0)
stopLossMultiplier = input.float(1.0, title="Stop Loss Multiplier for ATR", minval=0.5, maxval=3.0) // Adjust the stop-loss to be tighter or wider
// Calculate the indicators
ema34 = ta.ema(close, lengthEMA)
rsiValue = ta.rsi(close, lengthRSI)
atrValue = ta.atr(lengthATR)
// Define entry conditions
longCondition = close > ema34 and close[1] < open[1] and close > open and close[2] > open[2] and close[1] < open[1] and rsiValue > 50
// Define stop-loss and take-profit based on ATR
stopLoss = close - (atrValue * stopLossMultiplier) // Tighter stop-loss using the ATR multiplier
takeProfit = close + (atrValue * multATR) // Take profit with adjustable multiplier
// Volume condition filter (make sure that the volume is higher than average over the past 20 bars)
avgVolume = ta.sma(volume, 20)
volumeCondition = volume > avgVolume
// Only trigger long if all conditions are met (trend above 34 EMA, red-green-green candle pattern, volume confirmation)
if (longCondition and volumeCondition)
strategy.entry("Long", strategy.long, stop=stopLoss, limit=takeProfit)
// Exit conditions based on RSI overbought/oversold and trailing stop
exitCondition = rsiValue > rsiOverbought or close < stopLoss
// Execute the exit strategy when RSI is overbought or price hits the stop-loss level
if (exitCondition)
strategy.close("Long") // Close the position when exit condition is met
// Plotting for visualization
plot(ema34, title="34 EMA", color=color.blue)
plot(stopLoss, title="Stop Loss", color=color.red, linewidth=2)
plot(takeProfit, title="Take Profit", color=color.green, linewidth=2)