Эта стратегия генерирует торговые сигналы путем вычисления перекрестных пересечений между 5-дневной экспоненциальной скользящей средней (EMA) и 20-дневной простой скользящей средней (SMA).
Двойные экспоненциальные скользящие средние являются широко используемыми техническими показателями. 5-дневная EMA представляет собой недавние ценовые тенденции, в то время как 20-дневная SMA показывает среднесрочные ценовые движения. Когда краткосрочная MA пересекает длинносрочную MA, это сигнализирует о восходящем прорыве и восходящей ценовой тенденции, что указывает на хорошее время для длинного. Наоборот, нисходящий кроссовер подразумевает потенциальное изменение цен и следует рассмотреть возможность выхода из позиций.
Эта стратегия устанавливает 5-дневную EMA и 20-дневную SMA в качестве торговых сигналов. Она становится длинной, когда 5-дневная EMA пересекает 20-дневную SMA и закрывает позицию, когда изменение цены достигает 5% или -5%.
Подробные шаги:
Эта стратегия использует золотой перекресток между двумя МА и имеет следующие преимущества:
В целом, эта стратегия имеет простые правила, использует зрелые технические показатели, такие как кроссоверы MA, и имеет относительно всеобъемлющие измерения контроля риска.
В этой стратегии все еще есть некоторые риски:
Предложены следующие улучшения:
Так что есть место для дальнейшей оптимизации.
Эта стратегия может быть улучшена в следующих аспектах:
Оптимизировать параметры MA путем тестирования комбинаций короткой/длинной EMA и SMA для поиска оптимальной пары.
Добавьте другие индикаторы, такие как MACD, KDJ, чтобы отфильтровать ложные сигналы.
Использовать алгоритмы машинного обучения для поиска лучших параметров с помощью моделирования исторических данных и статистики.
Для лучшего контроля рисков устанавливается динамический режим стоп-лосса/приобретения прибыли на основе волатильности рынка и характеристик инструмента.
Расширьте эту стратегию на другие продукты, такие как форекс, криптовалюты.
Благодаря вышеуказанным улучшениям стабильность и рентабельность этой стратегии могут быть существенно улучшены.
В заключение, это простая для понимания и реализации стратегия двойного перекрестного MA. Она использует преимущества сигналов MA и использует TII для фильтрации ошибок. Она контролирует риски путем остановки потери / получения прибыли. Стратегия подходит для обучения новичков и также имеет большое пространство для оптимизации. Дальнейшие улучшения на настроении параметров, фильтрации сигнала и динамической остановки потери могут превратить ее в практичную и мощную торговую стратегию.
/*backtest start: 2024-01-02 00:00:00 end: 2024-02-01 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA-SMA Crossover Strategy", shorttitle="EMA-SMA Cross", overlay=true) // Define the moving averages ema5 = ta.ema(close, 5) sma20 = ta.sma(close, 20) smaVolume10 = ta.sma(volume, 50) majorLength = input(60, title="Major Length") minorLength = input(30, title="Minor Length") src = input(close, title="Source") smaValue = ta.sma(src, majorLength) positiveSum = 0.0 negativeSum = 0.0 for i = 0 to minorLength - 1 price = na(src[i]) ? 0 : src[i] avg = na(smaValue[i]) ? 0 : smaValue[i] positiveSum := positiveSum + (price > avg ? price - avg : 0) negativeSum := negativeSum + (price > avg ? 0 : avg - price) tii = 100 * positiveSum / (positiveSum + negativeSum) // Buy condition: 5 EMA crosses above 20 SMA buyCondition = ta.crossover(ema5, sma20) and tii > 0 and tii >= tii[1] //and volume > smaVolume10 // // Track entry price var entryPrice = 0.0 if (buyCondition) entryPrice := close // Calculate percentage change from entry price priceChange = close / entryPrice - 1 // Plotting the moving averages on the chart plot(ema5, color=color.blue, title="5 EMA") plot(sma20, color=color.red, title="20 SMA") // Highlighting buy signals and exit signals on the chart // plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, size=size.small, style=shape.labelup, text="Buy") // Strategy entry and exit if (buyCondition) strategy.entry("Buy", strategy.long) // Exit conditions if (strategy.opentrades > 0) if (priceChange >= 0.05 or priceChange <= -0.05) strategy.close("Buy")