
Основная идея этой стратегии заключается в том, чтобы использовать скользящие скользящие средние для вычисления скользящих средних для обнаружения тенденций цены и делать больше, когда цена с скользящими средними происходит золотой форк, и делать пустое, когда происходит мертвый форк.
Эта стратегия сначала определяет функцию 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)