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

Автор:Чао Чжан, Дата: 2024-01-23 15:23:14
Тэги:

img

Обзор

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

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

Стратегия использует два скользящих средних: MA1 (долгосрочный) и MA2 (короткосрочный). Логика заключается в том, что если цены на короткое время отступают, чтобы протестировать поддержку долгосрочной тенденции, это может представлять собой длительную возможность. В частности, если цена закрытия остается выше долгосрочной поддержки (MA1), основная тенденция остается неповрежденной. Но если цена закрытия прорывается ниже краткосрочной MA (MA2), но все еще удерживается выше долгосрочной MA (MA1), это сигнализирует о учебной настройке pullback. Здесь можно пойти на длинный путь со стоп-лосом и стремиться к тому, чтобы цены вернулись выше короткой MA.

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

Преимущества этой стратегии включают:

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

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

Риски, о которых следует знать:

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

Некоторые способы оптимизации и снижения рисков:

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

Возможности для расширения

Некоторые способы улучшения стратегии:

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

Заключение

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


/*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)

Больше