Основная идея этой стратегии заключается в том, чтобы торговать краткосрочными отступлениями в направлении долгосрочного тренда. В частности, для определения направления долгосрочного тренда используется 200-дневная простая скользящая средняя, а для определения направления краткосрочного тренда используется 10-дневная простая скользящая средняя. Когда цена выше 200-дневной линии, это бычий рынок. Когда цена ниже 200-дневной линии, это медвежий рынок. На бычьем рынке идти длинным, когда цена падает до 10-дневной линии. На медвежьем рынке идти коротким, когда цена поднимается до 10-дневной линии.
Эта стратегия использует 200-дневную простую скользящую среднюю и 10-дневную простую скользящую среднюю для определения рыночной тенденции. Когда цена пересекает 200-дневную линию, это считается входом на бычий рынок. Когда цена пересекает 200-дневную линию, это считается входом на медвежий рынок. На бычьем рынке, если цена падает около 10-дневной линии, это означает столкновение с краткосрочной коррекцией. В это время, идти долго, нацеленный на продолжение долгосрочной бычьей тенденции. На медвежьем рынке, если цена поднимается около 10-дневной линии, это означает столкновение с краткосрочным отскоком. В это время, идти коротко, нацеленный на продолжение долгосрочной медвежьей тенденции.
В частности, если следующие условия выполнены, выйти на рынок длинным: цена выше 200-дневной линии, цена ниже 10-дневной линии, и не было предыдущей позиции. Если следующие условия выполнены, закрыть позицию, чтобы выйти с рынка: цена выше 10-дневной линии, и была предыдущая длинная позиция. Чтобы предотвратить огромные потери, устанавливается стоп-лосс FAILSAFE. Если ретрекция с самой высокой точки превышает 10%, прямой стоп-лосс для выхода.
Можно видеть, что логика торговли этой стратегии основана в основном на золотом кресте и смертном кресте скользящих средних. Она входит на основе pullbacks и выходов на основе отслеживания тренда в направлении, определяемом длинными и короткими скользящими средними, что относится к типичной стратегии отслеживания тренда.
Наибольшее преимущество этой стратегии заключается в низкозатратном отслеживании тенденций для достижения избыточной доходности.
Использование комбинации долгосрочных и краткосрочных скользящих средних для определения направления первичных и вторичных тенденций может эффективно зафиксировать средне- и долгосрочные трендовые возможности и избежать ввода в заблуждение краткосрочными движениями рынка.
При входе на основе краткосрочных отступлений стоимость входа может быть сведена к минимуму, чтобы получить относительно высокий потенциал прибыли.
Механизм стоп-лосса FAILSAFE может эффективно контролировать единичные потери для защиты средств счета.
Разрешение на выходы от отслеживания тренда позволяет полностью использовать средне- и долгосрочные трендовые возможности для получения избыточной отдачи альфа.
Принятие полностью автоматизированного метода торговли позволяет избежать субъективного эмоционального воздействия и облегчает реализацию стратегии.
Основными рисками этой стратегии являются:
Фактические рыночные условия могут отличаться от исторических данных, что приводит к снижению фактической эффективности торговли.
Риск ложных прорывов: вероятность того, что цены обратятся вблизи скользящих средних, относительно велика, что может легко привести к небольшим накопленным потерям.
Риск переворота тренда: внезапные перевороты среднесрочных и долгосрочных тенденций распространены, что может легко привести к относительно большим потерям при хранении позиций.
Контрмеры:
Увеличить размер выборки и использовать больше исторических данных для тестирования надежности для обеспечения надежных результатов.
Оптимизировать параметры путем корректировки комбинации движущихся средних системных параметров для обеспечения качества сигнала.
Расширить линии стоп-лосса надлежащим образом, чтобы позволить некоторым ценовым ретрексерам избежать чрезмерно чувствительных стоп-лосков.
Эта стратегия может быть дополнительно оптимизирована в следующих аспектах:
Добавить условия фильтрации, такие как фильтрация объема, чтобы эффективно уменьшить ненужную торговлю, вызванную ложными прорывами.
Включить другие индикаторы, такие как KDJ и MACD, для формирования комбинационных сигналов для улучшения качества торговых сигналов.
Испытать различные периоды хранения и оптимизировать стратегии получения прибыли и остановки убытков для дальнейшего улучшения коэффициента Шарпа и т.д.
Динамически корректировать параметры на основе рыночных условий, чтобы сформировать адаптивный механизм оптимизации параметров, чтобы сделать стратегию более надежной.
Добавьте алгоритмические торговые модули с использованием машинного обучения и т. Д., Чтобы автоматически генерировать торговые сигналы, чтобы уменьшить вмешательство человека.
Общая логика этой стратегии ясна и проста в реализации для недорогого отслеживания средне- и долгосрочных тенденций для достижения устойчивого альфа. Но есть также риски попадания в ловушку на неправильной стороне тренда, что требует дальнейшей оптимизации для улучшения надежности. В целом эта стратегия разработана с точки зрения отслеживания тренда и стоит дальнейших исследований и применения. При надлежащей настройке параметров она должна давать хорошие результаты торговли в режиме реального времени.
/*backtest start: 2024-01-21 00:00:00 end: 2024-02-20 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, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=1000, // 100% of balance invested on each trade commission_type=strategy.commission.cash_per_contract, commission_value=0.005) // 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)