Это динамическая стратегия остановки, основанная на двойных линиях EMA. Она использует 9-дневные и 20-дневные EMA для определения направления тренда рынка, в сочетании с индикатором RSI для фильтрации ложных перерывов. Она также использует индикатор ATR для расчета динамических уровней остановки потерь и получения прибыли. Эта стратегия подходит для средне- и долгосрочных холдингов.
Стратегия использует 9-дневную EMA в качестве краткосрочной линии и 20-дневную EMA в качестве среднесрочной линии для определения ценовой тенденции. Она длится, когда цена пересекает короткосрочную линию и цена закрытия выше предыдущего дня, с RSI ниже 70 и закрывается выше 20-дневной EMA минус 1 ATR. Она длится, когда цена пересекает короткосрочную линию и цена закрытия ниже предыдущего дня, с RSI выше 30 и закрывается выше 20-дневной EMA минус 1 ATR.
Стоп-лосс устанавливается по цене закрытия минус 1,5 раза ATR. Прибыль от покупки устанавливается по цене закрытия плюс ATR, умноженной на коэффициент получения прибыли.
В целом, это относительно стабильная средне- и долгосрочная стратегия хранения. Она использует двойные EMA для определения основных рыночных тенденций, избегая влияния краткосрочного шума. Добавление RSI также фильтрует ложные перерывы в некоторой степени. Кроме того, динамический механизм стоп-лосс/тач-прибыль позволяет стратегии корректировать на основе волатильности рынка. Однако все еще существуют риски, такие как отставание от скользящих средних и потенциал проникновения стоп-лосса. Мы должны найти оптимальную конфигурацию посредством настройки параметров и оптимизации во время практического применения.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("CJTrade", overlay=true) short = ema(close, 9) medium = ema(close, 20) long = ema(close, 50) very_long = ema(close, 200) plot(short, color=color.gray, linewidth=1) plot(medium, color=color.red, linewidth=1) plot(long, color=color.black, linewidth=1) plot(very_long, color=color.blue, linewidth=1) rsiValue = rsi(close, 14) near20EMA = close > medium - atr(14) longCond = crossover(close[1], short) and close >= high[1] and rsiValue < 70 and near20EMA shortCond = crossunder(close[1], short) and close <= low[1] and rsiValue > 30 and near20EMA strategy.entry("Long", strategy.long, when=longCond) strategy.entry("Short", strategy.short, when=shortCond) atrValue = atr(14) stopLossLevel = close - atrValue * 1.5 // Dynamic take profit level based on ATR takeProfitMultiplier = input(2, title="Take Profit Multiplier", minval=0.1, maxval=10, step=0.1) takeProfitLevel = close + atrValue * takeProfitMultiplier // Trailing stop loss for long positions longTrailingStop = close - atrValue * 2 strategy.exit("LongTrailingStop", from_entry="Long", loss=longTrailingStop) // Trailing stop loss for short positions shortTrailingStop = close + atrValue * 2 strategy.exit("ShortTrailingStop", from_entry="Short", loss=shortTrailingStop) strategy.exit("Take Profit/Stop Loss", from_entry="Long", loss=stopLossLevel, profit=takeProfitLevel) strategy.exit("Take Profit/Stop Loss", from_entry="Short", loss=stopLossLevel, profit=takeProfitLevel)