Эта стратегия генерирует торговые сигналы, основанные на перекрестках между быстрой линией EMA и медленной линией EMA. Когда быстрая линия EMA пересекает линию медленной EMA, генерируется сигнал покупки. Когда быстрая линия EMA пересекает линию медленной EMA, генерируется сигнал продажи. Эта стратегия использует преимущество скользящей средней, чтобы эффективно отслеживать рыночную тенденцию и генерировать торговые сигналы во время начала тренда.
Основными показателями этой стратегии являются быстрая линия EMA и медленная линия EMA. Стратегия устанавливает две линии EMA с различными параметрами, из которых 10 для быстрой EMA и 20 для медленной EMA. 10-дневная линия EMA реагирует быстрее на изменения цен, в то время как 20-дневная линия реагирует медленнее. Когда краткосрочная линия EMA пересекает длинную линию EMA, это означает, что краткосрочная средняя линия начинает вести долгосрочную линию вверх, что означает, что рынок может перейти в бычье состояние. В этот момент генерируется сигнал покупки. Напротив, когда короткая EMA падает ниже длинной EMA, это означает, что короткая EMA начинает терять свою ведущую силу впереди длинной EMA, что означает, что рынок может перейти в медленное состояние. Соответственно, генерируется сигнал продажи.
Используя логику перекрестки между быстрыми и медленными линиями EMA, эта стратегия своевременно фиксирует переходные моменты рыночной тенденции и генерирует соответствующие торговые сигналы. Между тем, EMA сама имеет возможность отфильтровывать ложные сигналы, избегая чрезмерной торговли во время консолидации рынка. Это позволяет стратегии фиксировать переломные моменты рынка при сокращении неправильных сделок, что приводит к более высокой прибыльности.
Для решения этих рисков могут быть введены оптимизации, такие как добавление правил фильтрации, объединение MACD для предотвращения ложных сигналов, использование адаптивной EMA для ускорения ответа и т. Д. Кроме того, необходимы соответствующие механизмы стоп-лосса и получения прибыли.
Потенциальные направления дальнейшей оптимизации включают:
Эта стратегия захватывает критические поворотные моменты рынка через логику перекрестки двойных линий EMA, что делает ее эффективной для живой торговли. С дополнительными фильтрами, вспомогательными индикаторами и оптимизацией стоп-лосса стабильность стратегии может быть еще больше повышена.
/*backtest start: 2023-01-15 00:00:00 end: 2024-01-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Backtest single EMA cross", overlay=true) qty = input(100000, "Buy quantity") testStartYear = input(2019, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testStartHour = input(0, "Backtest Start Hour") testStartMin = input(0, "Backtest Start Minute") testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, testStartMin) testStopYear = input(2099, "Backtest Stop Year") testStopMonth = input(1, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0) testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? #00FF00 : na testPeriod() => true ema1 = input(10, title="Select EMA 1") ema2 = input(20, title="Select EMA 2") expo = ema(close, ema1) ma = ema(close, ema2) avg_1 = avg(expo, ma) s2 = cross(expo, ma) ? avg_1 : na //plot(s2, style=plot.style_line, linewidth=3, color=color.red, transp=0) p1 = plot(expo, color=#00FFFF, linewidth=2, transp=0) p2 = plot(ma, color=color.orange, linewidth=2, transp=0) fill(p1, p2, color=color.white, transp=80) longCondition = crossover(expo, ma) shortCondition = crossunder(expo, ma) if testPeriod() strategy.entry("Long", strategy.long, when=longCondition) strategy.entry("Short", strategy.short, when=shortCondition) plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor =#FFFFFF , style=shape.labelup, size = size.normal, location=location.belowbar, color = #1B8112, transp = 0) plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = #FFFFFF, style=shape.labeldown, size = size.normal, location=location.abovebar, color = #FF5733, transp = 0)