
Эта стратегия основана на улучшенной ХА средней линии, чтобы идентифицировать точки перехода цены, чтобы захватить более заметные изменения тенденции, относится к короткой линии торговых стратегий. Стратегия использует ХА расчет открытия, высоты, низкости и закрытия линии K, и, в зависимости от ценовой взаимосвязи, чтобы определить окончательный цвет линии K. Когда цена растет, она обозначается зеленой столбиковой линией, а когда цена падает, она обозначается красной столбиковой линией.
Основная логика стратегии заключается в том, чтобы рассчитать изменение цвета HA-полюсных линий для определения ценового перехода.
Во-первых, в зависимости от выбора входных параметров, используется ли HA для вычисления значения K-линий. Если выберите использование, то получите от данных HA открытие, высокое, низкое и закрытие; если нет, то получите непосредственно из исходных данных K-линий.
haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low
Затем, по формуле расчета ХА, получается открытие и закрытие ХА в данном цикле.
haclose = (haOpen + haHigh + haLow + haClose) / 4
haopen := na(haopen[1]) ? (haOpen + haClose) / 2 : (haopen[1] + haclose[1]) / 2
В зависимости от цены на покупку и продажу, рассчитывается максимальная и минимальная цены на покупку.
hahigh = max(haHigh, max(haopen, haclose))
halow = min(haLow, min(haopen, haclose))
Цвет столбика HA в этом цикле определяется отношением цены начала и цены получения HA.
hacolor = haclose > haopen ? color.green : color.red
Сигнал обратного движения цены оценивается по изменению цвета HA в течение двух последовательных циклов.
turnGreen = haclose > haopen and haclose[1] <= haopen[1]
turnRed = haclose <= haopen and haclose[1] > haopen[1]
Открытие позиций по повышению и понижению цены при появлении сигналов о повышении и понижении цены.
strategy.entry("long", 1, when=turnGreen)
strategy.entry("short", 0, when=turnRed)
При обратном сигнале - погашение позиции.
strategy.close("long", when=turnRed)
Таким образом, изменение цвета HA-полюса позволяет уловить точку обратного отсчета и реализовать стратегию обратного отсчета.
Основные преимущества этой стратегии:
Используя улучшенные данные HA для вычисления K-линий, можно отфильтровать часть шума и более четко идентифицировать переломные моменты тренда.
Определение переломных моментов только на основе простых изменений цвета HA-полимерной линии, логика стратегии проста, ясна и легко понятна для реализации.
Используя обратную торговлю, можно вовремя улавливать изменения тенденции и получать быструю обратную прибыль.
Можно настроить, использует ли HA для вычисления данных K-линии, которые можно использовать в зависимости от рынка.
Графическая форма указывает на то, что ценовые перемены могут быть просматриваемы.
Для различных сортов применяются оптимизационные параметры, такие как торговый цикл.
В этой стратегии также есть некоторые риски, о которых следует помнить:
Обратная торговля легко поддается обману, и необходимо убедиться, что обратный сигнал имеет достаточную надежность.
В условиях нестабильных рынков часто могут возникать обратные сигналы, которые приводят к чрезмерной торговле.
Невозможно определить продолжительность тренда, и продолжение прежнего тренда после его переворота может привести к убыткам.
Одиночный показатель подвержен влиянию ложных прорывов и должен использоваться в комбинации с другими показателями.
Необходимо убедиться, что параметры были оптимизированы, чтобы избежать пересогласования.
Решение проблемы:
Оптимизация параметров для обеспечения стабильности и надежности торговых сигналов.
Вместе с фильтрацией трендов, избегайте торговой активности на рынке.
Установление механизма стоп-лосса и выхода из системы, чтобы контролировать единичные убытки.
Помимо прочего, для проверки и предотвращения ложных сигналов используются другие индикаторы.
Оптимизация параметров, чтобы предотвратить перепады.
Эта стратегия может быть оптимизирована в следующих аспектах:
Оптимизация параметров торгового цикла для адаптации к характеристикам различных сортов.
Тестирование на использование значения HA, выбирается в зависимости от характеристик торгуемой разновидности.
Повышение условий фильтрации тренда, чтобы избежать реверсии в условиях колебаний.
Настройка динамического стоп-поста и корректировка стоп-поста в зависимости от рыночных колебаний.
В сочетании с другими показателями подтверждает сигнал сделки.
Добавление стратегии управления капиталом и корректировка позиций.
Расширение возможностей арбитражного трейдинга.
В соответствии с результатами обратной связи параметры корректируются, чтобы предотвратить пересоответствие.
Эта стратегия использует преимущества улучшения средней линии HA для обнаружения возможных поворотных точек цены путем определения изменения цвета колонной линии HA. По сравнению с прямым использованием K-линии, средняя линия HA может отфильтровывать часть шума, и обратный сигнал более ясен.
/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Heikin-Ashi Change Strategy", overlay=true)
UseHAcandles = input(true, title="Use Heikin Ashi Candles in Algo Calculations")
//
// === /INPUTS ===
// === BASE FUNCTIONS ===
haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low
// Calculation HA Values
haopen = 0.0
haclose = (haOpen + haHigh + haLow + haClose) / 4
haopen := na(haopen[1]) ? (haOpen + haClose) / 2 : (haopen[1] + haclose[1]) / 2
hahigh = max(haHigh, max(haopen, haclose))
halow = min(haLow, min(haopen, haclose))
// HA colors
hacolor = haclose > haopen ? color.green : color.red
// Signals
turnGreen = haclose > haopen and haclose[1] <= haopen[1]
turnRed = haclose <= haopen and haclose[1] > haopen[1]
// Plotting
bgcolor(hacolor)
plotshape(turnGreen, style=shape.arrowup, location=location.belowbar, color=color.green)
plotshape(turnRed, style=shape.arrowdown, location=location.abovebar, color=color.red)
// Alerts
alertcondition(turnGreen, "ha_green", "ha_green")
alertcondition(turnRed, "ha_red", "ha_red")
strategy.entry("long", 1, when=turnGreen)
//strategy.entry("short", 0, when=turnRed)
strategy.close("long", when=turnRed)