
Эта стратегия использует два индекса, скользящие средние ((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")