Стратегия внутридневной лимитной конвергенции MACD и R:R Ratio

MACD
Дата создания: 2024-06-03 16:47:56 Последнее изменение: 2024-06-03 16:47:56
Копировать: 3 Количество просмотров: 611
1
Подписаться
1617
Подписчики

Стратегия внутридневной лимитной конвергенции MACD и R:R Ratio

Обзор

Стратегия определяет торговые сигналы на основе сближения и разброса MACD-индикаторов. При пересечении MACD-линии с сигнальной линией, когда значение MACD-линии больше 1,5 или меньше -1,5, появляются сигналы о прибылях и убытках. В то же время, стратегия устанавливает фиксированную точку остановки и убытка и вводит концепцию соотношения возврата к риску (R: R). Кроме того, стратегия использует максимальные потери и максимальную прибыль в течение дня, а также более строгие меры по перемещению убытков, чтобы лучше контролировать риск.

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

  1. Вычислить MACD-линии и сигнальные линии MACD-индикатора.
  2. Оценить пересечение MACD-линий и сигнальных линий, учитывая, превышает ли значение MACD-линий определенные пороговые значения ((1,5 и -1,5)).
  3. При появлении сигнала “сделай больше”, открывайте позицию “сделай больше”, установив цену “стоп-стоп” на текущую максимальную цену + 600 минимальных единиц изменения, а цену “стоп-стоп” на текущую минимальную цену - 100 минимальных единиц изменения.
  4. При появлении сигнала “отпусти” открыть позицию “отпусти” и установить стоп-цену на текущую минимальную цену - 600 минимальных единиц изменения, а стоп-цену на текущую максимальную цену + 100 минимальных единиц изменения.
  5. Введение логики движущегося стоп-убытка, когда цена, относительно которой цена открытия позиции повышается (вверх) или снижается (вниз) более чем на 300 минимальных единиц изменения, перемещает цену стоп-убытка на цену открытия позиции + (вверх) цену закрытия - цену открытия позиции-300 (вверх) или цену открытия позиции - цену открытия позиции - цену закрытия позиции-300 (вверх).
  6. Устанавливаются пределы максимального убытка и максимальной прибыли в течение дня, и все позиции ликвидируются, когда убыток достигнет 600 минимально изменяющихся единиц или прибыль достигнет 1800 минимально изменяющихся единиц.

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

  1. В сочетании с индикатором MACD и условиями снижения цены эффективно отфильтровывается часть шумовых сигналов.
  2. Фиксированный коэффициент риска-возврата (R:R), контролируемая доходность риска по каждой сделке.
  3. Мобильная стоп-логика может защитить прибыль после формирования тренда и уменьшить отступление.
  4. Ограничение максимального убытка и прибыли в сутки помогает контролировать однодневные риски и избегать чрезмерных убытков или вывода прибыли.

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2023-05-28 00:00:00
end: 2024-06-02 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/
// © DD173838

//@version=5
strategy("MACD Convergence Strategy with R:R, Daily Limits, and Tighter Stop Loss", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)

// MACD settings
fastLength = input.int(12, title="Fast Length", minval=1)
slowLength = input.int(26, title="Slow Length", minval=1)
signalSmoothing = input.int(9, title="Signal Smoothing", minval=1)
source = input(close, title="Source")

// Calculate MACD
[macdLine, signalLine, _] = ta.macd(source, fastLength, slowLength, signalSmoothing)

// Plot MACD and signal line
plot(macdLine, title="MACD Line", color=color.blue)
plot(signalLine, title="Signal Line", color=color.red)

// Define convergence conditions
macdConvergenceUp = ta.crossover(macdLine, signalLine) and macdLine > 1.5
macdConvergenceDown = ta.crossunder(macdLine, signalLine) and macdLine < -1.5

// Define take profit and stop loss

        
    
takeProfit = 600
stopLoss = 100

// Plot buy and sell signals on the chart
plotshape(series=macdConvergenceDown, title="Short Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SHORT")
plotshape(series=macdConvergenceUp, title="Long Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="LONG")

// Execute short and long orders with defined take profit and stop loss
if (macdConvergenceDown)
    strategy.entry("Short", strategy.short, qty=1, stop=high + (stopLoss / syminfo.mintick), limit=low - (takeProfit / syminfo.mintick))

if (macdConvergenceUp)
    strategy.entry("Long", strategy.long, qty=1, stop=low - (stopLoss / syminfo.mintick), limit=high + (takeProfit / syminfo.mintick))

// Trailing stop logic
var float entryPrice = na
var float trailingStopPrice = na

if (strategy.position_size != 0)
    entryPrice := strategy.opentrades.entry_price(0)

if (strategy.position_size > 0)  // For long positions
    if (close - entryPrice > 300)
        trailingStopPrice := entryPrice + (close - entryPrice - 300)

if (strategy.position_size < 0)  // For short positions
    if (entryPrice - close > 300)
        trailingStopPrice := entryPrice - (entryPrice - close - 300)

if (strategy.position_size > 0 and not na(trailingStopPrice) and close < trailingStopPrice)
    strategy.close("Long", comment="Trailing Stop")

if (strategy.position_size < 0 and not na(trailingStopPrice) and close > trailingStopPrice)
    strategy.close("Short", comment="Trailing Stop")

// Daily drawdown and profit limits
var float startOfDayEquity = na
if (na(startOfDayEquity) or ta.change(time('D')) != 0)
    startOfDayEquity := strategy.equity

maxDailyLoss = 600
maxDailyProfit = 1800
currentDailyPL = strategy.equity - startOfDayEquity

if (currentDailyPL <= -maxDailyLoss)
    strategy.close_all(comment="Max Daily Loss Reached")

if (currentDailyPL >= maxDailyProfit)
    strategy.close_all(comment="Max Daily Profit Reached")