
Стратегия представляет собой систему отслеживания трендов на основе пересекающихся сигналов с помощью многочисленных индексных скользящих средних (EMA). Сочетание 20-ти, 50-ти и 150-ти циклов EMA создает целостную структуру для идентификации трендов и выполнения сделок. Стратегия использует пересекающиеся связи между различными циклами EMA для определения изменений в рыночных тенденциях и конкретных торговых моментах.
Стратегия использует три различных цикла индексных движущихся средних: EMA20 для краткосрочных тенденций, EMA50 для среднесрочных тенденций, EMA150 для долгосрочных тенденций. Когда EMA50 пересекает EMA150, образуется золотая крестовка, указывающая на формирование долгосрочной восходящей тенденции; когда EMA50 пересекает EMA150, образуется мертвая крестовка, указывающая на формирование долгосрочной нисходящей тенденции. Конкретные торговые сигналы образуются от пересечения EMA20 и EMA50: при пересечении EMA50 на EMA20 образуется сигнал покупки, при пересечении EMA50 на EMA20 образуется сигнал продажи.
Стратегия, используя в сочетании с многочисленными индексами, создает полную систему торговли, отслеживающую тенденции. Логика стратегии ясна, ее реализация проста и имеет хорошую масштабируемость. С помощью предлагаемой направленности оптимизации можно дополнительно повысить стабильность и адаптацию стратегии.
/*backtest
start: 2024-02-20 00:00:00
end: 2025-01-20 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("EMA2050150 Crossover Strategy#ganges", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.1, slippage=3)
// EMAs
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema150 = ta.ema(close, 150)
// Cross conditions
longCondition = ta.crossover(ema20, ema50)
flatCondition = ta.crossunder(ema20, ema50)
deathCross = ta.crossunder(ema50, ema150)
goldenCross = ta.crossover(ema50, ema150)
// // Trade execution
// if longCondition and time >= startDate and time <= endDate and strategy.position_size == 0
// strategy.entry("Long", strategy.long)
// if flatCondition and time >= startDate and time <= endDate and strategy.position_size > 0
// strategy.close("Long")
// Plot EMAs
plot(ema20, title="EMA 20", color=color.blue)
plot(ema50, title="EMA 50", color=color.orange)
plot(ema150, title="EMA 150", color=color.red)
// Plot cross signals
plotshape(series=goldenCross, location=location.belowbar, color=color.green, style=shape.labelup, title="Golden Cross", size=size.small, text="Golden Cross")
plotshape(series=deathCross, location=location.abovebar, color=color.red, style=shape.labeldown, title="Death Cross", size=size.small, text="Death Cross")
// Plot buy and sell signals
plotshape(series=longCondition, location=location.belowbar, color=color.blue, style=shape.triangleup, title="Buy Signal", size=size.small, text="Buy")
plotshape(series=flatCondition, location=location.abovebar, color=color.orange, style=shape.triangledown, title="Sell Signal", size=size.small, text="Sell")
// Trade execution
if longCondition and strategy.position_size == 0
strategy.entry("Long", strategy.long)
if flatCondition and strategy.position_size > 0
strategy.close("Long")