Стратегия отслеживания отката скользящей средней


Дата создания: 2024-03-28 18:00:05 Последнее изменение: 2024-03-28 18:00:05
Копировать: 0 Количество просмотров: 603
1
Подписаться
1617
Подписчики

Стратегия отслеживания отката скользящей средней

Обзор

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

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

  1. Вычислить движущиеся средние за два различных периода ((MA1 и MA2), где MA1 - это долгосрочная средняя, MA2 - это краткосрочная средняя.
  2. При закрытии цены выше MA1 и ниже MA2, при этом в настоящее время нет позиций, и в настоящее время в пределах установленного торгового времени, стратегия открытия позиции сделать больше.
  3. Запишите цену открытия позиции BuyPrice и вычислите цену остановки StopPrice (то есть процент падения цены открытия позиции i_stopPercent).
  4. Стратегия плавных позиций используется, когда цена закрытия переходит на MA2 и i_lowerClose является false, или цена закрытия переходит StopPrice.
  5. Если i_lowerClose истинно, то при закрытии цена будет выше MA2 и предыдущая K-линия будет закрыта ниже MA2.

Стратегические преимущества

  1. Следить за тенденциями: определять текущие общие тенденции путем определения отношений между ценами и долгосрочной средней линией, и искать возможности для входа в тренды.
  2. Покупка реверса: поиск покупательских возможностей для реверса цены к краткосрочной средней линии во время восходящей тенденции, повышает коэффициент эффективности покупки точек.
  3. Защита от убытков: установка убыточных цен, автоматическая ликвидация позиций при достижении определенной величины реверсивных колебаний цен, эффективное управление риском снижения.
  4. Гибкие параметры: пользователь может гибко настроить средний цикл, стоп-процент и другие параметры, в зависимости от своих предпочтений.

Стратегический риск

  1. Параметровая оптимизация: различные параметры имеют большое влияние на эффективность стратегии, поэтому необходимо проводить оптимизацию и обратную проверку параметров в различных рыночных условиях, чтобы найти оптимальную комбинацию параметров.
  2. Во время рыночных потрясений, частое колебание цен между долгосрочными средними линиями может привести к частому открытию позиций, что может привести к потере большего количества торговых затрат.
  3. Изменение тренда: когда рыночная тенденция меняется, стратегия может быть потеряна в течение длительного времени. В этом случае необходимо оценить изменение тренда в сочетании с другими показателями или сигналами и своевременно изменить стратегию.
  4. Чёрные свинцы: крупные, непредвиденные события на рынке могут привести к резким колебаниям цен, что может привести к большим убыткам после задержки.

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

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

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

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

Исходный код стратегии
/*backtest
start: 2023-03-22 00:00:00
end: 2024-03-27 00:00:00
period: 1d
basePeriod: 1h
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/
// © contapessoal_ivan
// @version=5
strategy("Pullback Strategy", 
     overlay=true, 
     initial_capital=1000,
     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("26 Jan 2023 00:00 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("26 Mar 2024 23:59 +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)