Эта стратегия использует подход к скользящей средней за несколько временных рамок, используя долгосрочную скользящую среднюю для определения направления основного тренда, а краткосрочную скользящую среднюю для определения направления краткосрочного тренда. Когда долгосрочная тенденция согласовывается с краткосрочной тенденцией, позиции принимаются соответственно. Когда краткосрочная скользящая средняя возвращается в районе долгосрочной скользящей средней, это указывает на краткосрочную коррекцию, представляющую торговые возможности для обратного направления.
Стратегия использует 200-дневную простую скользящую среднюю (SMA) для определения долгосрочного направления тренда и 10-дневную SMA для краткосрочного направления тренда. Когда цена закрывается выше 200-дневной SMA и ниже 10-дневной SMA, она сигнализирует о восходящей долгосрочной тенденции с краткосрочным отступлением, представляя возможность покупки. Когда цена закрывается ниже 200-дневной SMA и выше 10-дневной SMA, она сигнализирует о нисходящей долгосрочной тенденции с краткосрочным отскоком, представляя возможность продажи.
В частности, при выполнении следующих условий длинный вход запускается: Close > 200-дневная SMA И Close < 10-дневная SMA.
После вхождения в действие вводится механизм стоп-лосса на 10%. Позиция будет остановлена, если ретрек от входной цены превысит 10%. Кроме того, если включен опцион i_lowerClose, он будет ждать более низкого закрытия перед выходом, избегая чрезмерной чувствительности стоп-лосса.
Эта стратегия объединяет в себе скользящие средние за несколько временных рамок, что позволяет иметь высокую вероятность в поимке направления тренда в среднесрочной и долгосрочной перспективе.
Риск, связанный с этой стратегией, хорошо определен и ограничен. Коэффициент стоп-лосса 10% ограничивает максимальный размер потери.
Если краткосрочная коррекция длится слишком долго или амплитуда обратного движения слишком велика, может быть задействована стоп-лосс, что приводит к выводу в неподходящее время.
Для акций с высокой волатильностью и длительными периодами коррекции эта стратегия имеет тенденцию к преждевременному прекращению потерь, что приводит к плохой производительности.
Во время крупных корректировок на рынке, например, финансового кризиса, эта стратегия может понести большие потери.
Для формирования многократного фильтрационного механизма могут быть введены более скользящие средние системы. Например, добавляя 50-дневную SMA, входные позиции рассматриваются только тогда, когда цена находится между 50-дневной SMA и 200-дневной SMA. Это дополнительно фильтрует акции с ухудшенными тенденционными характеристиками.
В частности, после входа коэффициент стоп-лосса корректируется на основе наблюдаемой волатильности вместо фиксированного 10%.
Другие индикаторы, измеряющие рыночные условия, также могут быть включены. Например, MACD, когда MACD показывает дивергенцию рынка, эта стратегия может быть временно отключена, чтобы избежать потерь.
В заключение, это типичная стратегия скользящей средней за несколько временных рамок. Она использует направление среднесрочной долгосрочной тенденции, обозначенное долгосрочной скользящей средней, используя при этом краткосрочные возможности отката, выявленные краткосрочной скользящей средней. Факторы риска определены и хорошо ограничены. Дальнейшие улучшения, такие как дополнительные фильтры, адаптивные стоп-лосс и механизм синхронизации рынка, могут улучшить его стабильность.
/*backtest start: 2024-01-29 00:00:00 end: 2024-02-28 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_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/ // © irfanp056 // @version=5 strategy("Simple Pullback Strategy", overlay=true) // Interactive Brokers rate // Get user input i_ma1 = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA") i_ma2 = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA") i_stopPercent = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline") i_lowerClose = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2") i_startTime = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups") i_endTime = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups") // Get indicator values ma1 = ta.sma(close, i_ma1) ma2 = ta.sma(close, i_ma2) // Check filter(s) f_dateFilter = true // Check buy/sell conditions var float buyPrice = 0 buyCondition = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter sellCondition = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1]) stopDistance = strategy.position_size > 0 ? ((buyPrice - close) / close) : na stopPrice = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na stopCondition = strategy.position_size > 0 and stopDistance > i_stopPercent // Enter positions if buyCondition strategy.entry(id="Long", direction=strategy.long) if buyCondition[1] buyPrice := open // Exit positions if sellCondition or stopCondition strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : "")) buyPrice := na // Draw pretty colors plot(buyPrice, color=color.lime, style=plot.style_linebr) plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1) plot(ma1, color=color.blue) plot(ma2, color=color.orange)