Стратегия отслеживания тренда MACD

Автор:Чао Чжан, Дата: 2023-12-22 14:17:34
Тэги:

img

Обзор

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

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

Эта стратегия в основном строится на основе трех показателей.

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

Во-вторых, он рассчитывает индикатор 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)

Больше