Стратегия обратной торговли с скользящей средней за несколько временных рамок

Автор:Чао Чжан, Дата: 2024-02-29 11:20:28
Тэги:

img

Обзор

Эта стратегия использует подход к скользящей средней за несколько временных рамок, используя долгосрочную скользящую среднюю для определения направления основного тренда, а краткосрочную скользящую среднюю для определения направления краткосрочного тренда. Когда долгосрочная тенденция согласовывается с краткосрочной тенденцией, позиции принимаются соответственно. Когда краткосрочная скользящая средняя возвращается в районе долгосрочной скользящей средней, это указывает на краткосрочную коррекцию, представляющую торговые возможности для обратного направления.

Логика стратегии

Стратегия использует 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)

Больше