Пифагор свечной индикатор MACD дивергенция стратегия следования за трендом


Дата создания: 2024-02-04 15:06:58 Последнее изменение: 2024-02-04 15:06:58
Копировать: 0 Количество просмотров: 745
1
Подписаться
1617
Подписчики

Пифагор свечной индикатор MACD дивергенция стратегия следования за трендом

Обзор

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

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

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

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

Сигнал regulark_bearish_div появляется, когда цена достигает нового высокого, но столбик MACD не достигает нового высокого. Сигнал regulark_bullish_div появляется, когда цена достигает нового низкого, но столбик MACD не достигает нового низкого.

Наконец, когда появляются сигналы о понижении и снижении цены, стратегия выдает указания на уменьшение и увеличение, и выходит из позиции с ATR-стоп-стоп.

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

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

  1. Используя отклонение между MACD-полюсной линией и ценой, можно заранее улавливать изменения в ценовом тренде.

  2. ATR Stop Loss Stop setting разумно и эффективно контролирует максимальный убыток от одной сделки.

  3. Применение методов трендового отслеживания позволяет максимально закрепить прибыль.

  4. Параметры настроены разумно, чтобы отфильтровывать часть сигналов шума.

  5. Политическая логика четкая и понятная, легко проверяемая на практике.

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

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

  1. Если MACD отклоняется, это не обязательно приводит к обратному курсу цены, но есть риск получения ложного сигнала.

  2. Неразумная установка стоп-стоп может привести к слишком большим потерям или слишком маленькой прибыли.

  3. Отклонение от сигнального цикла может быть вызвано шумом и должно быть соответствующим образом фильтровано.

  4. Несовместимые параметры и типы сделок также влияют на эффективность стратегии.

Решение проблемы:

  1. Увеличение отклонения от длины и отклонение от ширины требуется для фильтрации ложных сигналов.

  2. Используйте ATR в качестве показателя стоп-стоп-лосса и корректируйте ATR-множитель для контроля риска в одной сделке.

  3. Выбор различных параметров для различных видов торгов. Оптимизация параметров, чтобы найти оптимальную комбинацию параметров.

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

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

  1. Более сложные отклонения от подтверждения, такие как отклонение от подтверждения Volume.

  2. Оптимизация параметров MACD, поиск оптимального сочетания параметров.

  3. Оптимизировать ATR Stop Loss Stop Stop multiplication.

  4. Добавление алгоритмов машинного обучения, помогающих оценить надежность отклонения от сигнала.

  5. Добавление моделей прогнозирования, чтобы определить вероятность обратного курса.

  6. Динамично корректируйте параметры стратегии в зависимости от изменения рыночной среды.

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

В целом, этот Пидагогский график MACD отклоняется от стратегии отслеживания тенденции, используя отклонение от MACD-полюсных линий и цены, для захвата тенденции. Установка стоп-стоп ATR является разумной и позволяет контролировать риск одной сделки. Логика стратегии ясна и понятна, и ее следует проверить на месте.

Исходный код стратегии
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
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/
// © bigwin_sun
// copyright: Tradingvue Limited    

//@version = 5
strategy(title = "Demigod : CDMA histogram Divergence strategy", shorttitle = "Demigod strategy", overlay = false, pyramiding = 100)

//macd input
fastMA = input.int(13, title = "fast Length", minval = 1,     group = "CDMA")
slowMA = input.int(34, title = "slow Length", minval = 1,     group = "CDMA")
src          = input.source(title = "source", defval = close, group = "CDMA")
signalSmooth = input.int(9, title="ma Length", minval = 1,    group = "CDMA")
//Divergenc
divLength    = input.int(title = "Divergenc Length",   defval = 5, minval = 1,   maxval = 50,  inline = "ATRLength",  group = "Divergence")
divStren     = input.float(title="Divergenc Strength", defval = 2, minval = 1.0, maxval = 5.0, inline = "ATRLength",  group = "Divergence")

//atr input
atrLength = input.int(13, title = "ATR Length", minval = 1,   inline = "ATRLength", group = "ATR")
m         = input.float(1.0,  "ATR multyple",   minval = 0.5, inline = "ATRLength", group = "ATR", step = 0.5)
collong   = input.color(color.teal, title = "upper color",  inline = "ATR显示", group = "ATR")
colshort  = input.color(color.red,  title = "under color",  inline = "ATR显示", group = "ATR")

// MACD---------------------------------------------------------------------------------------------------------------------------------
DivOffset = -2
macdLine   = ta.ema(src, fastMA) - ta.ema(src, slowMA)    
signalLine = ta.ema(macdLine, signalSmooth)
histogram  = macdLine - signalLine

histogramColor = if histogram > 0
    histogram > histogram[1] ? color.lime : color.green
else 
    histogram < histogram[1] ? color.maroon : color.red

// cdma histogram
plot(histogram, title = "MACD histogram", linewidth = 2, style = plot.style_histogram, color = histogramColor)
plot(0,         title = "zero line",      linewidth = 1,                               color = color.gray)

// Divergenc calculation-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//peak / valley fundation
f_top_fractal(_src)=>_src[4] < _src[2] and _src[3] < _src[2] and _src[2] > _src[1] and _src[2] > _src[0] and _src > 0
f_bot_fractal(_src)=>_src[4] > _src[2] and _src[3] > _src[2] and _src[2] < _src[1] and _src[2] < _src[0] and _src < 0
f_fractalize(_src)=>f_top_fractal(_src) ? 1 : f_bot_fractal(_src) ? -1 : 0

//peak / valley value
fractal_top1 = f_fractalize(histogram) > 0 ? true : false //histogram[2] : na
fractal_bot1 = f_fractalize(histogram) < 0 ? true : false //histogram[2] : na

//previouse peak or valley
high_prev1  = ta.valuewhen(fractal_top1, histogram[2], 0)[2]
high_price1 = ta.valuewhen(fractal_top1, high[2], 0)[2]
low_prev1   = ta.valuewhen(fractal_bot1, histogram[2], 0)[2]
low_price1  = ta.valuewhen(fractal_bot1, low[2], 0)[2]

//Divergenc : cdma histogram against candle value
regular_bearish_div1 = high[2] > high_price1 + divStren and histogram[2] < high_prev1 / divStren and ta.barssince(fractal_top1[1]) > divLength
regular_bullish_div1 = low[2]  < low_price1 - divStren  and histogram[2] > low_prev1 / divStren  and ta.barssince(fractal_bot1[1]) > divLength

//-------------------------cdma Divergenc range------------------------------------------------
//histogramColor
col1 = regular_bearish_div1 ? color.red : na
col2 = regular_bullish_div1 ? #00FF00EB : na
//plot
plot(title='看跌背离', series= fractal_top1 ? histogram[2] : na, color=col1, linewidth=3, offset=DivOffset)
plot(title='看涨背离', series= fractal_bot1 ? histogram[2] : na, color=col2, linewidth=3, offset=DivOffset)

// calculate ATR				--------------------------------------------------------------------------------------------------------------------------------------------------
atr = ta.ema(ta.tr(true), atrLength) * m
up = atr + high
dw = low - atr

//stratety : enrty and exit---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
if regular_bearish_div1 and fractal_top1
//if regular_bullish_div1 and fractal_bot1
    //label.new(bar_index, histogram[2], text = "Short", textcolor = color.white, color = color.gray,  style = label.style_label_lower_left)
    strategy.entry("Short", strategy.short, qty = 1)
    strategy.exit("exitShort", "Short", stop = up, limit = dw - atr)
if regular_bullish_div1 and fractal_bot1
//if regular_bearish_div1 and fractal_top1   
    //label.new(bar_index, histogram[2], text = "Long", textcolor = color.white, color = color.fuchsia, style = label.style_label_upper_left)
	strategy.entry("Long", strategy.long, qty = 1)
    strategy.exit("exitLong", "Long", stop = dw, limit = up + atr)