Цель этой стратегии заключается в выявлении потенциальных точек переворота тренда путем наблюдения за перекрестником между 20-периодным экспоненциальным скользящим средним (EMA) и 20-периодным простым скользящим средним (SMA).
Стратегия использует функции кроссовера и кроссандера из библиотеки ta для обнаружения скользящих средних кроссоверов.
Стратегия сочетает в себе следующую тенденцию возможности скользящих средних и генерацию сигнала перекрестных событий, имея следующие преимущества:
Стратегия также имеет следующие риски:
Решения:
Стратегия также может быть улучшена в следующих аспектах:
Стратегия относительно проста и практична в целом, идентифицируя потенциальные точки обратного тренда с помощью теории пересечения скользящих средних. Но есть также возможности для улучшения с помощью дополнительных индикаторов, динамических параметров, остановки потерь, алгоритмической торговли и т. Д., Чтобы сделать стратегию более надежной, надежной и автоматизированной. Вкратце, она предоставляет хороший шаблон для начала количественной торговли.
/*backtest start: 2022-12-28 00:00:00 end: 2024-01-03 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA-SMA Crossover Strategy", overlay=true) // Define the length of the moving averages emaLength = 20 smaLength = 20 // Calculate moving averages emaValue = ta.ema(close, emaLength) smaValue = ta.sma(close, smaLength) // Buy condition buyCondition = ta.crossover(emaValue, smaValue) and close > emaValue // Short sell condition sellCondition = ta.crossunder(emaValue, smaValue) and close < emaValue // Exit conditions for both Buy and Short sell exitBuyCondition = ta.crossunder(emaValue, smaValue) exitSellCondition = ta.crossover(emaValue, smaValue) // Strategy logic if (buyCondition) strategy.entry("Buy", strategy.long) if (sellCondition) strategy.entry("Sell", strategy.short) if (exitBuyCondition) strategy.close("Buy") if (exitSellCondition) strategy.close("Sell") // Plot the moving averages plot(emaValue, color=color.blue, title="20 EMA") plot(smaValue, color=color.red, title="20 SMA")