Расширенная стратегия MACD, основанная на ограниченном мартингейле

MACD MA
Дата создания: 2024-05-11 17:24:43 Последнее изменение: 2024-05-11 17:24:43
Копировать: 0 Количество просмотров: 408
1
Подписаться
1166
Подписчики

Расширенная стратегия MACD, основанная на ограниченном мартингейле

Обзор

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

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

  1. Вычислить скоростные, медленные и сигнальные линии MACD.
  2. Судить о перекрестках между быстрой и медленной линиями, золотой форк - больше, мертвый - меньше.
  3. Установите фиксированный объем разовых транзакций ((0.01) ).
  4. Чистая прибыль от сделки.
  5. Если текущая чистая прибыль меньше предыдущей сделки, и количество пополнений меньше 3 раз, то следующая сделка должна быть удвоена, количество пополнений плюс 1; в противном случае необходимо переставить количество и количество пополнений.
  6. Для каждого заказа, когда цена повышается на 1%, стоп-стоп, когда цена падает на 1%, стоп-стоп; для пустых билетов наоборот.
  7. На графике отметьте точки купли-продажи.

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

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

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

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

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

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

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

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

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

//@version=5
strategy("Advanced MACD Strategy with Limited Martingale", overlay=true, initial_capital=100)

// MACD 설정
fastLength = 15
slowLength = 30
signalSmoothing = 9
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing)

// 계약수 및 이전 거래 결과 기록
var float contractSize = 0.01
var int martingaleCount = 0 // 마틴게일 카운트
var float lastTradeResult = 0

// 매수 및 매도 조건
longCondition = ta.crossover(macdLine, signalLine)
shortCondition = ta.crossunder(macdLine, signalLine)

// 매수 신호
if (longCondition)
    strategy.entry("Long", strategy.long, qty=contractSize)
    lastTradeResult := strategy.netprofit

// 매도 신호
if (shortCondition)
    strategy.entry("Short", strategy.short, qty=contractSize)
    lastTradeResult := strategy.netprofit

// 익절 및 손절 조건
strategy.close("Long", when=(close / strategy.position_avg_price >= 1.01))
strategy.close("Short", when=(strategy.position_avg_price / close >= 1.01))
strategy.close("Long", when=(close / strategy.position_avg_price <= 0.99))
strategy.close("Short", when=(strategy.position_avg_price / close <= 0.99))

// 마틴게일 전략 적용
if (strategy.netprofit < lastTradeResult)
    if (martingaleCount < 3)
        contractSize := contractSize * 2
        martingaleCount := martingaleCount + 1
    else
        contractSize := 0.01
        martingaleCount := 0
else
    contractSize := 0.01
    martingaleCount := 0

// 매수, 매도 포인트 화살표로 표시
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")