Эта стратегия использует два экспоненциальных скользящих средних (EMA) для улавливания изменений в ценовых тенденциях. Когда краткосрочная EMA пересекает долгосрочную EMA снизу, генерируется сигнал покупки; когда краткосрочная EMA пересекает долгосрочную EMA сверху, генерируется сигнал продажи. Стратегия также устанавливает ежедневные лимиты стоп-лосса и прибыли для контроля однодневных потерь и прибыли.
Стратегия двойного скользящего среднего кроссовера EMA - это простая, легко понятная стратегия торговли, подходящая для трендовых рынков. Используя кроссовер быстрых и медленных скользящих средних, она может относительно хорошо улавливать изменения ценовых тенденций. В то же время ежедневные параметры стоп-лосса и взятки прибыли могут эффективно контролировать риски. Однако стратегия может неэффективно работать на нестабильных рынках или во время сдвижения тренда и должна быть оптимизирована и улучшена путем сочетания других технических индикаторов и методов анализа.
/*backtest start: 2023-06-01 00:00:00 end: 2024-06-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © DD173838 //@version=5 strategy("Moving Average Strategy with Daily Limits", overlay=true) // Moving Average settings shortMaLength = input.int(9, title="Short MA Length") longMaLength = input.int(21, title="Long MA Length") // Calculate MAs shortMa = ta.ema(close, shortMaLength) longMa = ta.ema(close, longMaLength) // Plot MAs plot(shortMa, title="9 EMA", color=color.blue) plot(longMa, title="21 EMA", color=color.red) // Strategy conditions crossUp = ta.crossover(shortMa, longMa) crossDown = ta.crossunder(shortMa, longMa) // Debug plots to check cross conditions plotshape(series=crossUp, title="Cross Up", location=location.belowbar, color=color.green, style=shape.labelup, text="UP") plotshape(series=crossDown, title="Cross Down", location=location.abovebar, color=color.red, style=shape.labeldown, text="DOWN") // Entry at cross signals if (crossUp) strategy.entry("Long", strategy.long) if (crossDown) strategy.entry("Short", strategy.short) // Daily drawdown and profit limits var float startOfDayEquity = na if (na(startOfDayEquity) or ta.change(time('D')) != 0) startOfDayEquity := strategy.equity maxDailyLoss = 50000 * 0.0025 maxDailyProfit = 50000 * 0.02 currentDailyPL = strategy.equity - startOfDayEquity if (currentDailyPL <= -maxDailyLoss) strategy.close_all(comment="Max Daily Loss Reached") if (currentDailyPL >= maxDailyProfit) strategy.close_all(comment="Max Daily Profit Reached")