Эта стратегия генерирует торговые сигналы, основанные на золотом кресте и мертвом кресте скользящих средних. Она включает три скользящих средних с различными параметрами настройки - краткосрочные, среднесрочные и долгосрочные. Сравнивая высоту отношения между этими тремя МА, она определяет бычье / медвежье состояние рынка и производит торговые сигналы.
Стратегия устанавливает три линии скользящей средней, которые являются краткосрочной простой скользящей средней, среднесрочной взвешенной скользящей средней и долгосрочной экспоненциальной скользящей средней.
Когда краткосрочная линия SMA пересекает среднесрочную линию WMA вверх, а цена закрытия также выше, чем линия WMA, это указывает на то, что рынок движется вверх и образует бычий сигнал. Когда краткосрочная линия SMA пересекается ниже среднесрочной линии WMA или цена закрытия ниже WMA, это дает медвежий сигнал. Поэтому эта стратегия оценивает бычье/медвежие состояние рынка, сравнивая высоту и перекресток между тремя МА.
Стратегия включает в себя три MAs краткосрочных, среднесрочных и долгосрочных, которые могут реагировать на изменения рынка в разных циклах и улучшать точность улавливания тенденций. В частности, среднесрочная WMA имеет лучший эффект от фильтрации шума рынка и эффективно избегает неправильных сигналов. Кроме того, стратегия отправляет длинные сигналы только тогда, когда бычьи сигналы SMA и цена закрытия достигают высокой последовательности, что предотвращает сбои и обеспечивает эффективность каждого входа.
Стратегия имеет риск ложных сигналов. Когда краткосрочная SMA производит неправильные сигналы, могут быть вызваны ненужные потери из-за строгой зависимости стратегии от линии SMA. Кроме того, стратегия чувствительна к параметрам. Когда параметры устанавливаются неправильно на рынках с диапазоном, можно запустить много неправильных сделок.
Для предотвращения таких рисков рекомендуется корректировать длины MA, должным образом ослабить условия торговли и установить стоп-лосс для ограничения единичных потерь.
Стратегия может быть оптимизирована из следующих аспектов:
Включение большего количества типов МА, таких как КК, для формирования портфеля индикаторов для повышения точности
Добавьте объемные факторы, такие как вырыв с высоким объемом
Сочетание показателей волатильности для предотвращения сбоев на нестабильных рынках
Использование машинного обучения для обучения и оптимизации параметров
Стратегия определяет рыночный бычий / медвежий статус на основе кроссовера и высоты отношений между тремя МА и ценой закрытия. Объединяя МА различных сроков, она может эффективно обнаруживать тенденции, а сигналы имеют высокое качество. С правильной настройкой параметров и внедрением большего количества вспомогательных индикаторов стратегия может быть еще больше улучшена в отношении актуальности и стабильности.
/*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("EMA Candle Close Strategy KHANH 11/11/2023", overlay=true, initial_capital=100, commission_type=strategy.commission.percent, commission_value=0.0000005, default_qty_type=strategy.percent_of_equity, default_qty_value=100) len1 = input.int(1, title="SMA #1 Length", minval=1) src1 = input(close, title="SMA Source #1") out1 = ta.sma(src1, len1) plot(out1, title="SMA #1", color=close >= out1 ? color.rgb(120, 123, 134, 100) : color.rgb(120, 123, 134, 100), linewidth=1) len2 = input.int(20, title="HMA #2 Length", minval=1) src2 = input(close, title="HMA Source #2") out2 = ta.hma(src2, len2) plot(out2, title="HMA #2", color=close >= out2 ? color.rgb(253, 255, 254, 100) : color.rgb(255, 255, 255, 100), linewidth=1) len3 = input.int(25, title="EMA #3 Length", minval=1) src3 = input(close, title="EMA Source #3") out3 = ta.ema(src3, len3) plot(out3, title="EMA #3", color=close >= out3 ? color.blue : color.blue, linewidth=1) // Define the long condition longCondition = (out1 > out2 and close > out2) // Define the short condition shortCondition = (out1 < out2 or close < out2) // Entry conditions if (longCondition) strategy.entry("Long",strategy.long) else if (shortCondition) strategy.entry("Short", strategy.short) // Trade channel plot PeriodLookBack = input(55, title="Period Look Back") xHighest55 = request.security(syminfo.tickerid, timeframe.period, ta.highest(PeriodLookBack)) xLowest55 = request.security(syminfo.tickerid, timeframe.period, ta.lowest(PeriodLookBack)) plot(xHighest55[1], color=color.red, title="HH") plot(xLowest55[1], color=color.green, title="LL") //@version=5 //indicator("Custom Moving Averages", shorttitle="CMA", overlay=true) shortLength = input(defval=40, title="Short Length") longLength = input(defval=80, title="Long Length") // Sử dụng khung thời gian của biểu đồ đang sử dụng thay vì cố định là "D" shortTopBorder = request.security(syminfo.tickerid, timeframe.period, ta.highest(high, shortLength)) shortBottomBorder = request.security(syminfo.tickerid, timeframe.period, ta.lowest(low, shortLength)) longTopBorder = request.security(syminfo.tickerid, timeframe.period, ta.highest(high, longLength)) longBottomBorder = request.security(syminfo.tickerid, timeframe.period, ta.lowest(low, longLength)) shortAverageLine = (shortTopBorder + shortBottomBorder) / 2 longAverageLine = (longTopBorder + longBottomBorder) / 2 plot(shortAverageLine, color=color.new(#fc0000, 0)) plot(longAverageLine, color=color.new(#01ff27, 0))