Стратегия коррекции на основе импульса


Дата создания: 2024-01-23 15:23:14 Последнее изменение: 2024-01-23 15:23:14
Копировать: 0 Количество просмотров: 564
1
Подписаться
1617
Подписчики

Стратегия коррекции на основе импульса

Обзор

Эта стратегия предназначена для выявления потенциальных возможностей для отступления на рынке. Эта стратегия использует систему двойной равнолинейной системы: долгосрочные скользящие средние ((MA1) и краткосрочные скользящие средние ((MA2)). Основная цель заключается в том, чтобы сделать больше, когда цена закрытия ниже MA1, но выше MA2.

Стратегический принцип

Эта стратегия использует два движущихся средних: MA1 (длинная линия) и MA2 (короткая линия). Принцип заключается в том, что если краткосрочные цены отступают и тестируют поддержку долгосрочной тенденции, то это может быть возможность сделать больше. В частности, если цена закрытия выше долгосрочной поддержки (MA1), это означает, что большая тенденция остается хорошей; а если цена закрытия падает ниже краткосрочной средней линии (MA2), но остается стабильной над долгосрочной средней линии (MA1), это типичная возможность вернуться назад.

Анализ преимуществ

Эта стратегия имеет следующие преимущества:

  1. Простая, понятная и гибкая реализация параметров
  2. Двухлинейная система, позволяющая идентифицировать основные тенденции и избегать неудачных торгов
  3. Настраиваемые временные фильтры, чтобы избежать рыночных аномалий в определенный период времени
  4. Размер позиции может быть скорректирован в соответствии с различными рисковыми предпочтениями
  5. Применение механизма стоп-лосса для ограничения риска потерь

Анализ рисков

Также существуют следующие риски:

  1. “Возвращение в прошлое - неудача, цены продолжают падать и не могут остановить убытки”
  2. На фоне резкого переворота в тренде, первоначальная поддержка была разрушена.
  3. Рынок сильно колеблется, движущаяся средняя отклоняется от ориентиров.
  4. Неправильный выбор времени, упущенная возможность торговли

Соответственно, можно оптимизировать и улучшать в следующих аспектах:

  1. Оптимизация параметров скользящих средних и улучшение качества торговых сигналов
  2. Оптимизация уровня остановки убытков, получение прибыли при максимальном снижении риска
  3. Настройка фильтра времени, чтобы ориентироваться на оптимальные торговые периоды
  4. Тестирование различных сортов и рыночных условий

Направление оптимизации

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Оптимизация параметров скользящих средних, поиск оптимальных комбинаций параметров
  2. Тестирование различных механизмов остановки, таких как отслеживание остановки, колебательная остановка и т. д.
  3. Добавление дополнительных фильтров, таких как фильтр объема сделки, фильтр волатильности и т. д.
  4. Добавление механизмов управления позициями, таких как добавление золотых и мертвых форков
  5. Добавление автоматического торможения
  6. Провести обратную проверку и рассчитать ключевые показатели для определения оптимальных параметров

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ZenAndTheArtOfTrading / www.PineScriptMastery.com
// @version=5
strategy("Simple Pullback Strategy", 
     overlay=true, 
     initial_capital=50000,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, // 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)