Стратегия бычьего тренда Multi-EMA - это стратегия следования тренду, основанная на множественных экспоненциальных скользящих средних (EMA) разных периодов для определения тренда.
Стратегия использует 6 EMA периодов 10, 20, 50, 100, 150 и 200 дней. Эти EMA используются для определения текущей циклической стадии рынка. Когда более короткие периоды EMA (например, 10-дневные) пересекаются с более длительными периодами (например, 20-, 50-дневные), это сигнализирует о том, что рынок вступил в фазу увеличения бычьего тренда.
В частности, стратегия будет длиться долго, если будут выполнены следующие условия:
После открытия длинной позиции, для закрепления прибыли используется 8%-ный стоп-лосс. Это означает, что позиция будет оставаться открытой до тех пор, пока цена не упадет более чем на 8% от входной цены. Как только вывод превысит 8%, позиция будет закрыта для стоп-лосса.
Короче говоря, ключевая идея этой стратегии заключается в том, чтобы войти в бычий тренд, когда это подтверждается многократным выравниванием EMA, и использовать остановку потери для блокировки прибыли.
Стратегия бычьего тренда Multi-EMA имеет следующие основные преимущества:
Для этой стратегии также существуют некоторые риски:
Для решения этих рисков мы можем оптимизировать, скорректировав периоды EMA или включив вспомогательные показатели для улучшения оценки.
Учитывая особенности этой стратегии, будущие оптимизации могут быть сосредоточены на следующих аспектах:
В целом, Стратегия бычьего тренда Multi-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=5 strategy('SirSeff\'s EMA Rainbow', overlay=true) // Testing Start dates testStartYear = input(2000, 'Backtest Start Year') testStartMonth = input(1, 'Backtest Start Month') testStartDay = input(1, 'Backtest Start Day') testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0) //Stop date if you want to use a specific range of dates testStopYear = input(2100, 'Backtest Stop Year') testStopMonth = input(12, 'Backtest Stop Month') testStopDay = input(30, 'Backtest Stop Day') testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0) testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false // Component Code Stop //TSP trailStop = input.float(title='Long Trailing Stop (%)', minval=0.0, step=0.1, defval=8) * 0.01 longStopPrice = 0.0 longStopPrice := if strategy.position_size > 0 stopValue = close * (1 - trailStop) math.max(stopValue, longStopPrice[1]) else 0 //PLOTS plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Long Trail Stop', offset=1, title='Long Trail Stop') plot(ta.ema(close, 20)) plot(ta.ema(close, 50)) plot(ta.ema(close, 100)) plot(ta.ema(close, 150)) plot(ta.ema(close, 200)) //OPEN longCondition = ta.ema(close, 10) > ta.ema(close, 20) and ta.ema(close, 20) > ta.ema(close, 50) and ta.ema(close, 100) > ta.ema(close, 150) and ta.ema(close, 150) > ta.ema(close, 200) if longCondition and ta.crossover(close,ta.ema(close,10)) and testPeriod() strategy.entry("BUY1", strategy.long) if longCondition and ta.crossover(ta.ema(close,10),ta.ema(close,20)) and testPeriod() strategy.entry("BUY2'", strategy.long) //CLOSE @ TSL if strategy.position_size > 0 and testPeriod() strategy.exit(id='TSP', stop=longStopPrice)