Основная идея этой стратегии состоит в том, чтобы использовать сглаженную скользящую среднюю для расчета сглаженного Хайкена Аши для выявления ценовых тенденций, и идти долго, когда цена имеет золотой крест с сглаженным Хайкена Аши, и идти коротко, когда есть смерть крест.
Стратегия сначала определяет функцию smoothedMovingAvg для расчета скользящей средней, которая использует значение скользящей средней предыдущего периода и последнюю цену для расчета скользящей средней текущего периода на основе определенных весов.
Затем она определяет функцию getHAClose для расчета закрывающей цены Хайкена Аши на основе открытых, высоких, низких и закрывающих цен.
В логике основной стратегии, он сначала получает первоначальные цены различных периодов, затем использует функцию smoothedMovingAvg для расчета сглаженной скользящей средней, а затем рассчитывает сглаженную цену закрытия Хайкена Аши с помощью функции getHAClose.
Наконец, он идет длинный, когда цена пересекает выше сглаженной цены закрытия Хайкена Аши, и закрывает позицию, когда цена пересекает ниже нее. Он идет короткий, когда цена пересекает ниже сглаженной цены закрытия Хайкена Аши, и закрывает позицию, когда цена пересекает выше нее.
Самое большое преимущество этой стратегии заключается в том, что, используя сглаженную скользящую среднюю для расчета сглаженного Хайкена Аши, он может более точно определить ценовые тенденции и отфильтровать какой-то шум, чтобы избежать генерирования неправильных сигналов в неспокойные периоды.
Основными рисками этой стратегии являются:
Неправильные настройки параметров сглаживания могут привести к тому, что стратегия упустит возможности переворота цены или создаст неправильные сигналы.
Когда цены резко колеблются, сглаженная скользящая средняя может отставать от изменений цен, что приводит к запуску стоп-лосса или упущенным возможностям для реверсии.
Для устранения вышеуказанных рисков могут быть использованы такие методы, как корректировка параметров сглаживания, внедрение механизмов стоп-лосса, сокращение размеров позиций на одну торговлю, чтобы снизить риски и улучшить стабильность стратегии.
Стратегия также может быть оптимизирована в следующих аспектах:
Внедрение адаптивных параметров сглаживания для автоматической корректировки параметров при увеличении волатильности рынка.
Комбинировать с другими индикаторами в качестве фильтров, чтобы избежать выдачи неправильных сигналов во время консолидации цен.
Добавьте механизмы остановки потери для контроля по торговым потерям.
Оптимизировать торговые продукты, торговые сессии и т. д., чтобы сосредоточиться на продуктах и сессиях с наибольшими преимуществами.
С помощью вышеуказанных оптимизаций риски приспособления кривой стратегии могут быть дополнительно уменьшены, а адаптивность и стабильность стратегии могут быть улучшены.
Общая логика этой стратегии ясна и понятна. Вычисляя сглаженный Хайкен Аши для определения ценовых тенденций и соответствующих длинных и коротких позиций, его самое большое преимущество заключается в том, что он способен отфильтровать некоторый шум и улучшить точность суждения о сигнале. Но есть также определенные трудности в оптимизации параметров и риски отсутствия быстрых переворотов. Дальнейшие оптимизации могут быть выполнены путем внедрения адаптивных механизмов, расширения комбинаций индикаторов и т. Д., Чтобы сделать его достойным углубленного исследования.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Smoothed Heiken Ashi Strategy", overlay=true) // Inputs g_TimeframeSettings = 'Display & Timeframe Settings' time_frame = input.timeframe(title='Timeframe for HA candle calculation', defval='', group=g_TimeframeSettings) g_SmoothedHASettings = 'Smoothed HA Settings' smoothedHALength = input.int(title='HA Price Input Smoothing Length', minval=1, maxval=500, step=1, defval=10, group=g_SmoothedHASettings) // Define a function for calculating the smoothed moving average smoothedMovingAvg(src, len) => smma = 0.0 smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len smma // Function to get Heiken Ashi close getHAClose(o, h, l, c) => ((o + h + l + c) / 4) // Calculate smoothed HA candles smoothedHAOpen = request.security(syminfo.tickerid, time_frame, open) smoothedMA1close = smoothedMovingAvg(request.security(syminfo.tickerid, time_frame, close), smoothedHALength) smoothedHAClose = getHAClose(smoothedHAOpen, smoothedHAOpen, smoothedHAOpen, smoothedMA1close) // Plot Smoothed Heiken Ashi candles plotcandle(open=smoothedHAOpen, high=smoothedHAOpen, low=smoothedHAOpen, close=smoothedHAClose, color=color.new(color.blue, 0), wickcolor=color.new(color.blue, 0)) // Strategy logic longCondition = close > smoothedHAClose shortCondition = close < smoothedHAClose strategy.entry("Buy", strategy.long, when=longCondition) strategy.close("Buy", when=shortCondition) plotshape(series=longCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar) plotshape(series=shortCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)