Стратегия подтверждения тренда Heikin-Ashi без перерисовки

HA NRTS TCS EQTY MGMT
Дата создания: 2025-03-28 17:35:26 Последнее изменение: 2025-03-28 17:35:26
Копировать: 2 Количество просмотров: 416
2
Подписаться
319
Подписчики

Стратегия подтверждения тренда Heikin-Ashi без перерисовки Стратегия подтверждения тренда Heikin-Ashi без перерисовки

Обзор

Это инновационная Heikin-Ashi, не перерисованная стратегия подтверждения тренда, которая направлена на решение проблемы перерисования, существующей в традиционной торговой картине TradingView. Эта стратегия предоставляет более надежный и прозрачный способ торговли путем ручного расчета Heikin-Ashi и множественного механизма подтверждения тренда.

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

Основные принципы стратегии включают три ключевых шага:

  1. В результате, мы получили следующие результаты:

    • Уникальные формулы для расчета цены закрытия, цены открытия, цены максимума и цены минимума
    • Обеспечение стабильности исторических цен при последующих обновлениях K-линии
    • Избегайте перерисовок, которые часто встречаются в традиционной стратегии Хайканаси.
  2. Многочисленные тенденции подтверждают:

    • Требуется последовательное определение направления тенденции
    • Сигналы входа в игру: нужно смотреть на змею с помощью последовательных X-корней
    • Сигнал пустого входа: необходимо последовательное X-коренное понижение
    • Повышение надежности стратегии путем фильтрации ложных сигналов с помощью многократного подтверждения
  3. Гибкие торговые модели:

    • Поддержка традиционной модели “следуй за трендом”
    • Предоставление опций по реверсии тренда
    • Настраиваемые торговые режимы (все, только больше, только пусто)

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

  1. Устранение проблем с перемещением: исторические данные остаются стабильными, результаты реверсирования высоко согласованны с реализацией на диске
  2. Подтверждение многочисленных тенденций: снижение ненужных сделок путем последовательной фильтрации ложных сигналов
  3. Высота по умолчанию:
    • Гибкие настройки входных и выходных порогов
    • Поддержка трендовых и обратных сделок
    • Скрываемые стандартные K-линии, обеспечивающие четкую визуализацию
  4. Подходит для средне- и долгосрочной торговли: особенно подходит для торговли с колебаниями и следования тенденциям

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

  1. Ограничения производительности:

    • Не подходит для высокочастотного скальпирования
    • Неопределенная тенденция может привести к более низким показателям на рынках с колебаниями.
    • Параметры требуют корректировки для разных временных рамок
  2. Контроль потенциальных рисков:

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

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

  1. Динамическая настройка параметров:

    • Разработка адаптивных алгоритмов посадки и выхода
    • Регулирование количества последовательных циклов в реальном времени в зависимости от волатильности рынка
    • Внедрение алгоритмов машинного обучения для оптимизации выбора параметров
  2. Усиление управления рисками:

    • Интегрированный динамический менеджмент позиций
    • Добавить релевантный фильтр
    • Разработка более интеллектуальных механизмов устранения убытков
  3. Пакет показателей:

    • В сочетании с другими техническими показателями (например, RSI, MACD)
    • Разработка системы многозначного подтверждения
    • Повышение точности и надежности сигналов

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

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

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

//@version=5
//© PineIndicators

strategy("Heikin-Ashi Non-Repainting Strategy [PineIndicators]", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, max_boxes_count=500, max_labels_count=500, max_lines_count=500, commission_value=0.01, process_orders_on_close=true, slippage= 2, behind_chart=false)

//====================================
// INPUTS
//====================================
// Number of consecutive candles required for entry and exit
openThreshold = input.int(title="Number of Candles for Entry", defval=2, minval=1)
exitThreshold = input.int(title="Number of Candles for Exit", defval=2, minval=1)
// Trade mode selection: "Long & Short", "Only Long", or "Only Short"
tradeMode = input.string(title="Trade Mode", defval="Only Long", options=["Long & Short", "Only Long", "Only Short"])
// Option to invert the trading logic (bullish signals become short signals, and vice versa)
invertTrades = input.bool(title="Invert Trading Logic (Long ↔ Short)", defval=false)
// Option to hide the standard candles (bodies only)
hideStandard = input.bool(title="Hide Standard Candles", defval=true)
// Heikin-Ashi transparency is fixed (0 = fully opaque)
heikinTransparency = 0

//====================================
// HIDE STANDARD CANDLES
//====================================
// Hide the body of the standard candles by setting them to 100% transparent.
// Note: The wicks of the standard candles cannot be hidden via code.
barcolor(hideStandard ? color.new(color.black, 100) : na)

//====================================
// HEIKIN-ASHI CALCULATION
//====================================
// Calculate Heikin-Ashi values manually
haClose = (open + high + low + close) / 4
var float haOpen = na
haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2
haHigh = math.max(high, math.max(haOpen, haClose))
haLow  = math.min(low, math.min(haOpen, haClose))

// Define colors for Heikin-Ashi candles (using fixed transparency)
bullColor = color.new(#0097a7, heikinTransparency)
bearColor = color.new(#ff195f, heikinTransparency)

//====================================
// PLOT HEIKIN-ASHI CANDLES
//====================================
// Plot the manually calculated Heikin-Ashi candles over the chart.
// The candle body, wicks, and borders will be colored based on whether the candle is bullish or bearish.
plotcandle(haOpen, haHigh, haLow, haClose, title="Heikin-Ashi", 
     color       = haClose >= haOpen ? bullColor : bearColor,
     wickcolor   = haClose >= haOpen ? bullColor : bearColor,
     bordercolor = haClose >= haOpen ? bullColor : bearColor,
     force_overlay = true)

//====================================
// COUNT CONSECUTIVE TREND CANDLES
//====================================
// Count the number of consecutive bullish or bearish Heikin-Ashi candles.
var int bullishCount = 0
var int bearishCount = 0

if haClose > haOpen
    bullishCount := bullishCount + 1
    bearishCount := 0
else if haClose < haOpen
    bearishCount := bearishCount + 1
    bullishCount := 0
else
    bullishCount := 0
    bearishCount := 0

//====================================
// DEFINE ENTRY & EXIT SIGNALS
//====================================
// The signals are based on the number of consecutive trend candles.
// In normal logic: bullish candles trigger a long entry and bearish candles trigger a short entry.
// If invertTrades is enabled, the signals are swapped.
var bool longEntrySignal  = false
var bool shortEntrySignal = false
var bool exitLongSignal   = false
var bool exitShortSignal  = false

if not invertTrades
    longEntrySignal  := bullishCount >= openThreshold
    shortEntrySignal := bearishCount >= openThreshold
    exitLongSignal   := bearishCount >= exitThreshold
    exitShortSignal  := bullishCount >= exitThreshold
else
    // Inverted logic: bullish candles trigger short entries and bearish candles trigger long entries.
    longEntrySignal  := bearishCount >= openThreshold
    shortEntrySignal := bullishCount >= openThreshold
    exitLongSignal   := bullishCount >= exitThreshold
    exitShortSignal  := bearishCount >= exitThreshold

//====================================
// APPLY TRADE MODE RESTRICTIONS
//====================================
// If the user selects "Only Long", disable short signals (and vice versa).
if tradeMode == "Only Long"
    shortEntrySignal := false
    exitShortSignal  := false
else if tradeMode == "Only Short"
    longEntrySignal  := false
    exitLongSignal   := false

//====================================
// TRADING STRATEGY LOGIC
//====================================
// Execute trades based on the calculated signals.

// If a long position is open:
if strategy.position_size > 0
    if shortEntrySignal
        strategy.close("Long", comment="Reverse Long")
        strategy.entry("Short", strategy.short, comment="Enter Short")
    else if exitLongSignal
        strategy.close("Long", comment="Exit Long")

// If a short position is open:
if strategy.position_size < 0
    if longEntrySignal
        strategy.close("Short", comment="Reverse Short")
        strategy.entry("Long", strategy.long, comment="Enter Long")
    else if exitShortSignal
        strategy.close("Short", comment="Exit Short")

// If no position is open:
if strategy.position_size == 0
    if longEntrySignal
        strategy.entry("Long", strategy.long, comment="Enter Long")
    else if shortEntrySignal
        strategy.entry("Short", strategy.short, comment="Enter Short")