Расширенная стратегия коррекции и подтверждения цены с помощью прорыва треугольника

SMA RSI TSL EMA 三角形突破 交易量确认 动态止损 趋势跟踪 斐波那契
Дата создания: 2025-06-03 09:57:46 Последнее изменение: 2025-06-03 09:57:46
Копировать: 0 Количество просмотров: 314
2
Подписаться
319
Подписчики

Расширенная стратегия коррекции и подтверждения цены с помощью прорыва треугольника Расширенная стратегия коррекции и подтверждения цены с помощью прорыва треугольника

Обзор

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

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

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

Входная настройка 1 - прорыв в Золотой треугольник

  • Используйте ближайшую высоту и низкую точку для определения треугольной формы
  • Подтверждение прорыва позиции, когда цена закрывается выше вершины треугольника и одновременно выше 50-циклической SMA
  • Вход в игру после закрытия.
  • Эта настройка особенно подходит для захвата ранней динамики торговли после интеграции

Входная настройка 2 - подтверждение цены и объема сделки

  • В результате, по сравнению с предыдущими годами, в 2013 году в Китае было зарегистрировано около 6 млн.
    • Цена сначала упала ниже 50 SMA, а затем закрытие вернулось выше
    • Требуется, по крайней мере, один “выходный день” ((текущая цена закрытия выше предыдущей цены закрытия))
    • Объем сделки должен быть выше его 50-циклического SMA и выше за каждый день предыдущих 4 дней
  • Вход в день закрытия сделки
  • Особенно эффективно, когда треугольная модель не является очевидной, но накапливает сильные

Выход из стратегии - динамический отслеживание стоп-убытков

  • Первоначальная остановка была установлена на 10% ниже максимальной цены, достигнутой после входа
  • Когда прибыль достигает 10%, стоп-лосс становится 5%.
  • Этот механизм позволяет трейдерам продолжать держать тренд, сохраняя прибыль.

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

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

  1. Двойной доступ: Предоставляя две независимые входные настройки, стратегия может адаптироваться к различным рыночным условиям, увеличивая вероятность захвата выгодных торговых возможностей. Настройка 1 может захватить прорыв, когда рынок находится в очевидном периоде интеграции; Настройка 2 может играть роль, когда рыночная модель менее очевидна, но имеет сильные признаки накопления.

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

  3. Фильтрация прорываВ сочетании с SMA-фильтрацией и подтверждением объема сделки, стратегия снижает риск ложного прорыва. Цена должна не только прорваться, но и оставаться выше SMA, для установки 2 также требуется значительная поддержка объема сделки, что значительно повышает качество сигнала.

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

  5. Гибкие временные рамки оптимизации: Несмотря на то, что стратегия оптимизирована специально для 1-часового диаграмма, ее параметры могут быть изменены для различных временных рамок, что увеличивает масштаб применения стратегии.

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

  1. Зависимость от рыночных условийЭта стратегия лучше всего работает на рынках с продольным и поперечным движением, но может работать плохо в условиях сильного падения или высокой волатильности рынка. В условиях медвежьего рынка повышается риск ложного прорыва, что может привести к последовательным потерям.

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

  3. Параметры оптимизацииСтратегия зависит от нескольких параметров (длина SMA, стоп-проценты и т. д.), которые необходимо оптимизировать в соответствии с конкретными рынками и временными рамками. Неправильная настройка параметров может привести к чрезмерной совместимости или плохой производительности.

  4. Риски чрезмерной торговлиВ некоторых рыночных условиях стратегия может генерировать слишком много сигналов, что приводит к чрезмерной торговле и увеличению стоимости торгов. Внедрение дополнительных фильтров или периода охлаждения может помочь снизить этот риск.

  5. Оптимизация дисконтных балансов: Хотя динамический стоп-механизм является преимуществом этой стратегии, слишком жесткая стоп-стратегия может привести к досрочному выходу из выгодных сделок, а слишком широкая стоп-стратегия может привести к отбросу прибыли. Стоп-параметры необходимо тщательно корректировать в зависимости от волатильности конкретного рынка.

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

  1. Добавить фильтр трендовИнтеграция более широких трендовых индикаторов (например, более длительных движущихся средних или ADX) может помочь стратегии торговать только в благоприятном направлении рынка. Например, можно добавить условия, которые позволяют полюсам вступать в игру только в том случае, если долгосрочные SMA (например, 200 циклов) наклоняются вверх.

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

  3. Интегрированный фильтр времениНекоторые торговые периоды могут быть более подходящими для этой стратегии, чем другие. Добавление фильтров времени, чтобы избежать торговли в неблагоприятные периоды (например, в период высокой волатильности перед открытием или закрытием рынка), может улучшить общую производительность.

  4. Осуществление частичной блокировки прибылиНынешняя стратегия выхода является двоичной: “держать все или выйти полностью”. Внедряется система выхода в группах, постепенно уменьшая размер позиции по мере увеличения прибыли, что позволяет заблокировать часть прибыли, сохраняя при этом некоторый потенциал для роста.

  5. Добавить подтверждение активаВ некоторых рынках подтверждение соответствующих активов может улучшить качество сигнала. Например, в биржевой торговле сила сектора или отрасли может служить дополнительным фильтром; в валюте поведение соответствующих валютных пар может обеспечить дополнительное подтверждение.

  6. Включение корректировки волатильности рынка: Динамическая корректировка уровня остановок на основе волатильности рынка (например, ATR или исторической волатильности) позволяет стратегии лучше адаптироваться к различным рыночным условиям. Используйте более жесткие остановки в условиях низкой волатильности и более широкие в условиях высокой волатильности.

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

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

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

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

Исходный код стратегии
/*backtest
start: 2024-06-03 00:00:00
end: 2025-06-02 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © eemani123

//@version=5
strategy("Golden Triangle Strategy (1H, Setup 1 & 2)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === Inputs ===
smaLength = input.int(34, title="SMA Length (1H Optimized)", minval=1)
volumeSmaLength = input.int(34, title="Volume SMA Length", minval=1)
trailingStopPct = input.float(6.0, title="Initial Trailing Stop Loss (%)", minval=0.1)
tightenPct = input.float(5.0, title="Tightened TSL (%)", minval=0.1)
profitTrigger = input.float(10.0, title="Tighten TSL After Profit (%)", minval=1)
maxLookback = input.int(10, title="Max Lookback Bars for Setup 2", minval=1)
pivotStrength = input.int(2, title="Pivot Strength (Shorter for 1H)", minval=1)

// === SMA Calculations ===
smaPrice = ta.sma(close, smaLength)
smaVolume = ta.sma(volume, volumeSmaLength)

// === Setup 1: Golden Triangle (simplified with pivots) ===
pivotHigh = ta.pivothigh(high, pivotStrength, pivotStrength)
pivotLow = ta.pivotlow(low, pivotStrength, pivotStrength)

var float triangleTop = na
var float triangleBottom = na

if not na(pivotHigh)
    triangleTop := pivotHigh
if not na(pivotLow)
    triangleBottom := pivotLow

triangleBreakout = ta.crossover(close, triangleTop) and close > smaPrice
enterSetup1 = triangleBreakout

// === Setup 2: Price & Volume Confirmation ===
priceBelowSMA = ta.barssince(close < smaPrice) <= maxLookback
priceConfirm = close > smaPrice and close > close[1]
volumeConfirm = volume > smaVolume and volume > volume[1] and volume > volume[2] and volume > volume[3] and volume > volume[4]
enterSetup2 = priceConfirm and priceBelowSMA and volumeConfirm

// === Entry & TSL Tracking ===
var bool inTradeSetup1 = false
var bool inTradeSetup2 = false
var float entryPrice1 = na
var float entryPrice2 = na
var float highestSinceEntry1 = na
var float highestSinceEntry2 = na
var float trailingStop1 = na
var float trailingStop2 = na

// === Entry Conditions ===
if enterSetup1 and not inTradeSetup1
    strategy.entry("Buy Setup 1", strategy.long)
    entryPrice1 := close
    highestSinceEntry1 := close
    inTradeSetup1 := true

if enterSetup2 and not inTradeSetup2
    strategy.entry("Buy Setup 2", strategy.long)
    entryPrice2 := close
    highestSinceEntry2 := close
    inTradeSetup2 := true

// === Update Trailing Stops with Tightening ===
if inTradeSetup1
    highestSinceEntry1 := math.max(highestSinceEntry1, high)
    profit1 = (highestSinceEntry1 - entryPrice1) / entryPrice1 * 100
    activePct1 = profit1 >= profitTrigger ? tightenPct : trailingStopPct
    trailingStop1 := highestSinceEntry1 * (1 - activePct1 / 100)

if inTradeSetup2
    highestSinceEntry2 := math.max(highestSinceEntry2, high)
    profit2 = (highestSinceEntry2 - entryPrice2) / entryPrice2 * 100
    activePct2 = profit2 >= profitTrigger ? tightenPct : trailingStopPct
    trailingStop2 := highestSinceEntry2 * (1 - activePct2 / 100)

// === Exit Conditions ===
if inTradeSetup1 and close < trailingStop1
    strategy.close("Buy Setup 1", comment="TSL Hit - Setup 1")
    inTradeSetup1 := false
    entryPrice1 := na
    highestSinceEntry1 := na
    trailingStop1 := na

if inTradeSetup2 and close < trailingStop2
    strategy.close("Buy Setup 2", comment="TSL Hit - Setup 2")
    inTradeSetup2 := false
    entryPrice2 := na
    highestSinceEntry2 := na
    trailingStop2 := na

// === Plotting ===
plot(smaPrice, color=color.orange, title="SMA")
//plot(triangleTop, title="Triangle Top", color=color.red, style=plot.style_linebr, linewidth=2)
//plot(triangleBottom, title="Triangle Bottom", color=color.green, style=plot.style_linebr, linewidth=2)
plot(inTradeSetup1 ? trailingStop1 : na, color=color.red, title="Trailing Stop - Setup 1", linewidth=2,style=plot.style_linebr)
plot(inTradeSetup2 ? trailingStop2 : na, color=color.blue, title="Trailing Stop - Setup 2", linewidth=2,style=plot.style_linebr)

plotshape(enterSetup1, title="Triangle Breakout Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(enterSetup2, title="Volume Confirmed Entry", location=location.belowbar, color=color.blue, style=shape.circle, size=size.small)

// === Alerts ===
alertcondition(enterSetup1, title="Setup 1 Buy", message="Golden Triangle Breakout (Setup 1) - BUY")
alertcondition(enterSetup2, title="Setup 2 Buy", message="Volume + Price Confirmation (Setup 2) - BUY")

// === Background highlight during trades ===
bgcolor(inTradeSetup1 or inTradeSetup2 ? color.new(color.green, 85) : na, title="In-Trade Highlight")


// === Weekly Fibonacci Pivot Levels (R3 / S3) ===
weeklyHigh = request.security(syminfo.tickerid, "W", high)
weeklyLow = request.security(syminfo.tickerid, "W", low)
weeklyClose = request.security(syminfo.tickerid, "W", close)

weeklyPivot = (weeklyHigh + weeklyLow + weeklyClose) / 3
weeklyRange = weeklyHigh - weeklyLow
fibR3 = weeklyPivot + 1.000 * weeklyRange
fibS3 = weeklyPivot - 1.000 * weeklyRange

// === Plot R3 and S3 ===
plot(fibR3, title="Weekly Fib R3", color=color.fuchsia, linewidth=2, style=plot.style_circles)
plot(fibS3, title="Weekly Fib S3", color=color.teal, linewidth=2, style=plot.style_circles)
// === Weekly Fibonacci Pivot Levels (R3 / S3) ===