Динамическая скользящая средняя ретракционная стратегия Мартина

Автор:Чао Чжан, Дата: 2023-11-24 10:19:21
Тэги:

img

Обзор

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

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

Стратегия использует 3-дневные и 8-дневные простые скользящие средние и их перекрестные сигналы. Длинный сигнал генерируется, когда 3-дневный MA пересекает 8-дневный MA, и короткий сигнал генерируется, когда 3-дневный MA пересекает 8-дневный MA. Длинные сигналы запускают длинный вход, а короткие сигналы запускают короткий вход.

Если нет позиции, стратегия будет определять вход на основе кроссовер сигналов. После входа цена стоп-лосса и цена прибыли будут рассчитываться на основе последней цены закрытия, процента стоп-лосса и процента прибыли. Например, при удержании длинной позиции цена стоп-лосса - это последняя цена закрытия минус процент стоп-лосса умноженный на 8-дневный MA; цена прибыли - это последняя цена закрытия плюс процент прибыли умноженный на 8-дневный MA.

Если существует длинная позиция, когда цена запускает прибыль или стоп-лосс, если происходит сигнал отзыва 8-дневного MA, позиция будет закрыта. В это время цена стоп-лосса и цена прибыли будут сброшены до 0. Логика обработки коротких позиций схожа.

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

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

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

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

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

Основными рисками этой стратегии являются:

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

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

Руководство по оптимизации

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

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

Резюме

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


/*backtest
start: 2022-11-17 00:00:00
end: 2023-11-23 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/
// © blackcat1402
//@version=5
strategy('[blackcat] L1 MartinGale Scalping Strategy', overlay=true, pyramiding = 5)

// Define input variables
takeProfit = input(1.03, title='Take Profit')
stopLoss = input(0.95, title='Stop Loss')
inputTradingMode = input.string(defval='Long', options=['Long', 'Short', 'BiDir'], title='Trading Mode')

//The purpose of this rule is to forbid short entries, only long etries will be placed. The rule affects the following function: 'entry'.
strategy.risk.allow_entry_in(inputTradingMode == 'Long' ? strategy.direction.long : inputTradingMode == 'Short' ? strategy.direction.short : strategy.direction.all)

// Define strategy logic
entryPrice = 0.0
stopPrice = 0.0
takeProfitPrice = 0.0
stopLossPrice = 0.0

// Define SMA crossover and crossunder signals
sma3 = ta.sma(close, 3)
sma8 = ta.sma(close, 8)
plot(sma3, color=color.yellow)
plot(sma8, color=color.fuchsia)
crossoverSignal = ta.crossover(sma3, sma8)
crossunderSignal = ta.crossunder(sma3, sma8)
crossoverState = sma3 > sma8
crossunderState = sma3 < sma8

if strategy.position_size == 0
    if crossoverState
        strategy.entry('Buy', strategy.long)
        entryPrice := close
        stopPrice := close - stopLoss * sma8[1]
        takeProfitPrice := close + takeProfit * sma8[1]
        stopLossPrice := stopPrice
        stopLossPrice
    if crossunderState
        strategy.entry('Sell', strategy.short)
        entryPrice := close
        stopPrice := close + stopLoss *  sma8[1]
        takeProfitPrice := close - takeProfit *  sma8[1]
        stopLossPrice := stopPrice
        stopLossPrice

if strategy.position_size > 0
    if (close > takeProfitPrice or close < stopLossPrice) and crossunderState
        strategy.close('Buy')
        entryPrice := 0.0
        stopPrice := 0.0
        takeProfitPrice := 0.0
        stopLossPrice := 0.0
        stopLossPrice
    else
        strategy.entry('Buy', strategy.long)
        entryPrice := close
        stopPrice := close - stopLoss *  sma8[1]
        takeProfitPrice := close + takeProfit *  sma8[1]
        stopLossPrice := stopPrice
        stopLossPrice

if strategy.position_size < 0
    if (close > takeProfitPrice or close < stopLossPrice) and crossoverState
        strategy.close('Sell')
        entryPrice := 0.0
        stopPrice := 0.0
        takeProfitPrice := 0.0
        stopLossPrice := 0.0
        stopLossPrice
    else
        strategy.entry('Sell', strategy.short)
        entryPrice := close
        stopPrice := close + stopLoss *  sma8[1]
        takeProfitPrice := close - takeProfit *  sma8[1]
        stopLossPrice := stopPrice
        stopLossPrice

// Plot entry and exit points
plotshape(strategy.position_size > 0 and crossoverSignal, 'Buy Entry', shape.triangleup, location.belowbar, color.new(color.green, 0), size=size.small)
plotshape(strategy.position_size > 0 and (close >= takeProfitPrice or close <= stopLossPrice), 'Buy Exit', shape.triangledown, location.abovebar, color.new(color.red, 0), size=size.small)
plotshape(strategy.position_size < 0 and crossunderSignal, 'Sell Entry', shape.triangledown, location.abovebar, color.new(color.red, 0), size=size.small)
plotshape(strategy.position_size < 0 and (close >= takeProfitPrice or close <= stopLossPrice), 'Sell Exit', shape.triangleup, location.belowbar, color.new(color.green, 0), size=size.small)



Больше