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


Дата создания: 2023-12-22 14:17:34 Последнее изменение: 2023-12-22 14:17:34
Копировать: 0 Количество просмотров: 717
1
Подписаться
1623
Подписчики

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

Обзор

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

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

Стратегия построена на основе трех основных показателей:

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

Во-вторых, рассчитывается индикатор MACD, включающий в себя MACD-линии, сигнальные линии и прямоугольные диаграммы. Когда MACD-диаграмма> 0, это многоголовый индикатор; когда MACD-диаграмма < 0, это пустой индикатор. Это помогает определить надежность сигнала золотой вилки.

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

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

Эта стратегия имеет следующие преимущества:

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

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

Однако эта стратегия также несет в себе некоторые риски:

  1. При этом, как отмечается в сообщении, “в случае непредвиденных изменений цены могут быть задействованы стоп-мажоры”.
  2. Долгосрочная остановка трафика требует постоянного мониторинга и своевременной корректировки;
  3. Неправильная настройка параметров может привести к частым транзакциям или пропущенным счетам.

Решение риска:

  1. Разумная установка точек остановки для предотвращения ненужных остановок;
  2. Регулярная проверка и оптимизация параметров;
  3. Вмешательство человека и мониторинг состояния.

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-21 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy('The Puria Method', shorttitle = 'Puria',overlay = true)

//=== GENERAL INPUTS ===

// short ma
maFastSource   = input(defval = close, title = "Fast MA Source")
maFastLength   = input(defval = 5, title = "Fast MA Period", minval = 1)

// long ma 1
maSlow1Source   = input(defval = low, title = "Slow MA1 Source")
maSlow1Length   = input(defval = 85, title = "Slow MA Period", minval = 1)

// long ma 2
maSlow2Source   = input(defval = low, title = "Slow MA2 Source")
maSlow2Length   = input(defval = 75, title = "Slow MA Period", minval = 1)

//macd
macdFastLength   = input(defval = 12, title = "Fast MACD Period", minval = 1)
macdSlowLength   = input(defval = 26, title = "Slow MACD Period", minval = 1)
macdSmaLength   = input(defval = 9, title = "SMA MACD Period", minval = 1)

// the risk management inputs
inpTakeProfit   = input(defval = 30, title = "Take Profit", minval = 0)
inpStopLoss     = input(defval = 10, title = "Stop Loss", minval = 0)
inpTrailStop    = input(defval = 5, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)

// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

// === SERIES SETUP ===
maFast = ema(maFastSource, maFastLength)
maSlow1 = wma(maSlow1Source, maSlow1Length)
maSlow2 = wma(maSlow2Source, maSlow2Length)
[_, signal, histLine] = macd(close, macdFastLength, macdSlowLength, macdSmaLength)

// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50)
slow1 = plot(maSlow1, title = "Slow MA1", color = red, linewidth = 2, style = line, transp = 50)
slow2 = plot(maSlow2, title = "Slow MA2", color = red, linewidth = 2, style = line, transp = 50)

// === LOGIC ===
signalUp = crossover(maFast, maSlow1) and crossover(maFast, maSlow2) and histLine > 0
signalDown = crossunder(maFast, maSlow1) and crossunder(maFast, maSlow2) and histLine < 0

// ===STRATEGY===
strategy.entry(id = "Long", long = true, when = signalUp) 
strategy.entry(id = "Short", long = false, when = signalDown)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)