Эта стратегия представляет собой следующую систему тренда, основанную на сглаженных свечах Хайкина-Аши и перекрестках простых скользящих средних (SMA). Она идентифицирует изменения тренда через пересечение сглаженных свечей Хайкина-Аши с 44-периодным SMA для захвата основных трендовых возможностей на рынке. Стратегия включает в себя динамический механизм управления позициями, который автоматически закрывает позиции, когда цены слишком близки к долгосрочной скользящей средней, избегая рисков колебаний в консолидации рынков.
Основная логика состоит из трех ключевых элементов: во-первых, преобразование традиционных свечей в свечи Хайкина-Аши путем вычисления арифметического среднего числа открытых, высоких, низких и закрытых цен для фильтрации рыночного шума; во-вторых, использование 6-периодного EMA для сглаживания Хайкина-Аши, дальнейшее повышение надежности сигнала; наконец, объединение сглаженной цены закрытия Хайкина-Аши с 44-периодным SMA, генерируя длинные сигналы на восходящих крестах и короткие сигналы на нисходящих крестах. Вводится концепция
Стратегия создает надежную систему следования тренду путем сочетания свечей Хайкина-Аши с системами SMA. Она имеет комплексные механизмы генерации сигналов и разумный контроль рисков, особенно подходящий для рынков с отличительными характеристиками тренда. Практическая эффективность стратегии может быть еще больше повышена с помощью предложенных направлений оптимизации. В целом, она представляет собой хорошо разработанную стратегию следования тренду с четкой логикой.
/*backtest start: 2024-10-01 00:00:00 end: 2024-10-31 23:59:59 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Smoothed Heikin Ashi with SMA Strategy", overlay=true) // Input parameters for SMAs s1 = input.int(11, title="Short SMA Period") s2 = input.int(44, title="Long SMA Period") noPositionThreshold = input.float(0.001, title="No Position Threshold", step=0.0001) // Calculate the original Heikin-Ashi values 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)) // Smoothing using exponential moving averages smoothLength = input.int(6, title="Smoothing Length") smoothedHaClose = ta.ema(haClose, smoothLength) smoothedHaOpen = ta.ema(haOpen, smoothLength) smoothedHaHigh = ta.ema(haHigh, smoothLength) smoothedHaLow = ta.ema(haLow, smoothLength) // Calculate SMAs smaShort = ta.sma(close, s1) smaLong = ta.sma(close, s2) // Plotting the smoothed Heikin-Ashi values plotcandle(smoothedHaOpen, smoothedHaHigh, smoothedHaLow, smoothedHaClose, color=(smoothedHaClose >= smoothedHaOpen ? color.green : color.red), title="Smoothed Heikin Ashi") plot(smaShort, color=color.blue, title="SMA Short") plot(smaLong, color=color.red, title="SMA Long") // Generate buy/sell signals based on SHA crossing 44 SMA longCondition = ta.crossover(smoothedHaClose, smaLong) shortCondition = ta.crossunder(smoothedHaClose, smaLong) noPositionCondition = math.abs(smoothedHaClose - smaLong) < noPositionThreshold // Strategy logic if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) if (noPositionCondition and strategy.position_size != 0) strategy.close_all("No Position") // Plot buy/sell signals plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small) plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small) plotshape(series=noPositionCondition and strategy.position_size != 0, location=location.belowbar, color=color.yellow, style=shape.labeldown, text="EXIT", size=size.small)