На основе динамической стратегии поглощающего тренда


Дата создания: 2024-02-29 11:24:18 Последнее изменение: 2024-02-29 11:24:18
Копировать: 0 Количество просмотров: 561
1
Подписаться
1617
Подписчики

На основе динамической стратегии поглощающего тренда

Обзор

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

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

  1. ATR используется для измерения рыночной волатильности.
  2. Вычислить индикаторы супертенденций, чтобы определить основные тенденции рынка.
  3. Определение условий многоголового рынка и пустого рынка
  4. Выявление форм многоголового поглощения (в восходящем тренде) и пустого поглощения (в нисходящем тренде) в соответствии с направлением тренда.
  5. Стоп-пост и стоп-пост рассчитываются в зависимости от формы поглощения.
  6. При распознавании формы поглощения и в соответствии с направлением тенденции, выполняются операции на большее или меньшее количество.
  7. Когда цена достигает стоп-поста или стоп-поста, она становится плоской.
  8. На графике обозначены формы поглощения.

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

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

  1. Поглощение формы в сочетании с распознаванием трендов в торговых сигналах повышает качество сигналов.
  2. Подобные действия могут быть направлены на то, чтобы уменьшить риски, которые могут возникнуть в результате неэффективного использования ресурсов.
  3. Сигналы о том, что нужно делать больше, более четкие и легкие для понимания времени.
  4. Стоп-стоп поглощает как тренд, так и риск.
  5. Фреймворк кода ясен, его легко оптимизировать и улучшать.

Анализ стратегических рисков

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

  1. Поглощение формы может быть ложным прорывом, ошибочное распознавание может привести к убыткам.
  2. Трудно понять параметры формы поглощения, такие как размер объема, продолжительность времени и т. д.
  3. Недостаточные механизмы определения тенденций могут привести к не соответствующим тенденциям операциям.
  4. Стоп-пост и стоп-стоп настройки зависят от опыта и могут быть слишком субъективными.
  5. Эффективность зависит от оптимизации параметров, требующих большого количества исторических данных.

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

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

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

В этой стратегии есть много возможностей для оптимизации:

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

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

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

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Malikdrajat


//@version=4
strategy("Engulfing with Trend", overlay=true)

Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)

atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2

up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn

trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")

// Define Downtrend and Uptrend conditions
downtrend = trend == -1
uptrend = trend == 1


// Engulfing 
boringThreshold = input(25, title="Boring Candle Threshold (%)", minval=1, maxval=100, step=1)
engulfingThreshold = input(50, title="Engulfing Candle Threshold (%)", minval=1, maxval=100, step=1)
stopLevel = input(200, title="Stop Level (Pips)", minval=1)


// Boring Candle (Inside Bar) and Engulfing Candlestick Conditions
isBoringCandle = abs(open[1] - close[1]) * 100 / abs(high[1] - low[1]) <= boringThreshold
isEngulfingCandle = abs(open - close) * 100 / abs(high - low) <= engulfingThreshold

// Bullish and Bearish Engulfing Conditions
bullEngulfing = uptrend and close[1] < open[1] and close > open[1] and not isBoringCandle and not isEngulfingCandle
bearEngulfing = downtrend and close[1] > open[1] and close < open[1] and not isBoringCandle and not isEngulfingCandle

// Stop Loss, Take Profit, and Entry Price Calculation
bullStop = close + (stopLevel * syminfo.mintick)
bearStop = close - (stopLevel * syminfo.mintick)
bullSL = low 
bearSL = high
bullTP = bullStop + (bullStop - low)
bearTP = bearStop - (high - bearStop)

// Entry Conditions
enterLong = bullEngulfing and uptrend
enterShort = bearEngulfing and downtrend

// Exit Conditions
exitLong = crossover(close, bullTP) or crossover(close, bullSL)
exitShort = crossover(close, bearTP) or crossover(close, bearSL)

// Check if exit conditions are met by the next candle
exitLongNextCandle = exitLong and (crossover(close[1], bullTP[1]) or crossover(close[1], bullSL[1]))
exitShortNextCandle = exitShort and (crossover(close[1], bearTP[1]) or crossover(close[1], bearSL[1]))

// Strategy Execution
strategy.entry("Buy", strategy.long, when=enterLong )
strategy.entry("Sell", strategy.short, when=enterShort )

// Exit Conditions for Long (Buy) Positions
if (bullEngulfing and not na(bullTP) and not na(bullSL))
    strategy.exit("Exit Long", from_entry="Buy", stop=bullSL, limit=bullTP)

// Exit Conditions for Short (Sell) Positions
if (bearEngulfing and not na(bearTP) and not na(bearSL))
    strategy.exit("Exit Short", from_entry="Sell", stop=bearSL, limit=bearTP)

// Plot Shapes and Labels
plotshape(bullEngulfing, style=shape.triangleup, location=location.abovebar, color=color.green)
plotshape(bearEngulfing, style=shape.triangledown, location=location.abovebar, color=color.red)

// Determine OP, SL, and TP
plot(bullEngulfing ? bullStop : na, title="Bullish Engulfing stop", color=color.red, linewidth=3, style=plot.style_linebr)
plot(bearEngulfing ? bearStop : na, title="Bearish Engulfing stop", color=color.red, linewidth=3, style=plot.style_linebr)
plot(bullEngulfing ? bullSL : na, title="Bullish Engulfing SL", color=color.red, linewidth=3, style=plot.style_linebr)
plot(bearEngulfing ? bearSL : na, title="Bearish Engulfing SL", color=color.red, linewidth=3, style=plot.style_linebr)
plot(bullEngulfing ? bullTP : na, title="Bullish Engulfing TP", color=color.green, linewidth=3, style=plot.style_linebr)
plot(bearEngulfing ? bearTP : na, title="Bearish Engulfing TP", color=color.green, linewidth=3, style=plot.style_linebr)