Эта стратегия позволяет генерировать золотые перекрестные и мертвые перекрестные торговые сигналы, рассчитывая на пересечение быстрой линии ЭМА и медленной линии ЭМА. Когда быстрая линия ЭМА пересекает медленную линию ЭМА, генерируется сигнал покупки; когда быстрая линия ЭМА пересекает медленную линию ЭМА, генерируется сигнал продажи. Эта стратегия использует преимущества движущейся средней линии, чтобы эффективно отслеживать рыночные тенденции и генерировать торговые сигналы на этапе запуска тренда.
Основными показателями этой стратегии являются быстрая линия ЭМА и медленная линия ЭМА. Стратегия выполняется путем установки двух различных параметров ЕМА: быстрая линия ЭМА на 10, медленная линия ЕМА на 20. Из них 10-дневная линия ЕМА реагирует быстрее на изменения цен, а 20-дневная линия медленнее. Когда краткосрочная линия ЭМА пересекает длинную линию ЕМА, короткая средняя линия начинает вести длинную среднюю линию вверх, что означает, что ситуация может вступить в состояние взлома.
Благодаря принципу перекрестного действия быстрого 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)