Переходная стратегия EMA - это стратегия торговли, основанная на пересечении пересечения цены и индексной движущейся средней (EMA). Эта стратегия использует самую высокую цену в течение определенного цикла в качестве сигнала покупки, а EMA - в качестве сигнала продажи. Когда цена закрытия прорывает самую высокую цену в течение определенного цикла, стратегия генерирует сигнал покупки; когда цена закрытия падает в пределах EMA, стратегия генерирует сигнал продажи. Эта стратегия также устанавливает цену остановки для контроля риска. Кроме того, эта стратегия также предоставляет пользователям множество параметров, которые могут быть настроены на пользователя, чтобы адаптироваться к различным стилям торговли и рыночной среде.
Основным принципом пересечения EMA является использование пересечения EMA и пересечения EMA для улавливания рыночных тенденций. Когда цена пересекает самую высокую цену в течение определенного цикла, это означает, что рынок может вступить в рост, поэтому стратегия дает сигнал покупки.
Эта стратегия использует следующие шаги для совершения сделок:
С помощью вышеперечисленных шагов эта стратегия позволяет получать прибыль в условиях повышающегося тренда рынка, используя при этом стоп-лосс для контроля риска снижения.
Преимущества перехода от максимальной к EMA:
Несмотря на определенные преимущества, связанные с переходом к EMA с максимальной ценой, он также несет в себе следующие риски:
Чтобы смягчить эти риски, можно рассмотреть следующие меры:
Для дальнейшего повышения производительности пересекающейся стратегии EMA с наивысшей ценой можно рассмотреть следующие направления оптимизации:
С помощью вышеперечисленных оптимизационных мер можно повысить стабильность, адаптивность и рентабельность пересекающейся стратегии EMA, позволяющей ей хорошо работать в более широком диапазоне рыночных условий.
Переходная стратегия EMA-перехода является простой и эффективной стратегией отслеживания тренда, которая использует переходные параметры EMA и переходные параметры EMA для улавливания рыночных тенденций, а также для контроля рисков снижения с использованием стоп-потери. Логика этой стратегии ясна, параметры гибкие, ее легко понять и реализовать. Несмотря на то, что эта стратегия несет определенные риски, такие как рыночные колебания, риски перехода и риски настройки параметров, эти риски могут быть смягчены с помощью соответствующих мер контроля риска, таких как регулирование параметров, сочетание других показателей и установка разумных стоп-потери. Кроме того, в этой стратегии есть дополнительные возможности для оптимизации, такие как динамические параметры настройки, внедрение механизмов для множества свободных потерь, оптимизация стопов и сборов, а также фундаментальный анализ для повышения эффективности и адаптации стратегии. В целом, переходная стратегия
/*backtest start: 2024-02-01 00:00:00 end: 2024-02-29 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version = 5 strategy(title="BreakHigh Strategy", overlay=true) Period = input.int(34, "Number of previous bars(34,52 Recommend)") showbg = input(defval = false,title = "Show BackGround Color") showema = input(defval = true ,title = "Show Line") MarkBuySig = input(defval = true ,title = "Show Buy/Sell Signal") Risk_Per_Trade = input(2.5, '% of Risk Per Trade') / 100 // Risk% Per Trade Switch SLDAY = input(title='Lowest price of the previous number of bars', defval=9) Buysig = input(defval=true, title='Start Strategy') UseSl = input(defval=false, title='Use Stoploss Price') Compound = input(defval = false ,title = "Compound Profit") xtf = input.timeframe(title='** Fix chart to which time frame ? **)', defval='D') //BUY float buyLine = na buyLine := ta.highest(high,Period)[1] plot(showema ? buyLine : na, linewidth=1, style=plot.style_linebr, color=color.new(color.green, 0)) //SELL output = ta.ema(close, Period) show = request.security(syminfo.tickerid, xtf, output) FastL = plot(showema ? show : na, color=color.new(color.white, 0), linewidth=2, title='Slow EMA') //Buy-Sell Signal Green = close > buyLine // Buy Red = close < show // Sell buycond = Green and Green[1] == 0 sellcond = Red and Red[1] == 0 bullish = ta.barssince(buycond) < ta.barssince(sellcond) bearish = ta.barssince(sellcond) < ta.barssince(buycond) buy = bearish[1] and buycond sell = bullish[1] and sellcond plotshape(MarkBuySig ? buy : na, style=shape.labelup, text='Buy Next Bar', textcolor=color.new(color.black, 0), location=location.belowbar, color=color.new(color.green, 0)) plotshape(MarkBuySig ? sell : na, style=shape.labeldown, text='Sell Next Bar', textcolor=color.new(color.black, 0), location=location.abovebar, color=color.new(color.red, 0)) bgcolor(showbg ? bullish ? color.new(color.green,90) : color.new(color.red,90) : na ) // === BACKTEST RANGE === // use_date_range = input(true) FromYear = input.int(defval=2012, title='From Year', minval=1950) FromMonth = input.int(defval=1, title='From Month', minval=1) FromDay = input.int(defval=1, title='From Day', minval=1) ToYear = input.int(defval=9999, title='To Year', minval=1950) ToMonth = input.int(defval=1, title='To Month', minval=1) ToDay = input.int(defval=1, title='To Day', minval=1) in_date_range = use_date_range ? time > timestamp(FromYear, FromMonth, FromDay, 00, 00) and time < timestamp(ToYear, ToMonth, ToDay, 23, 59) : true //****************************************************************************// ////////////////////////////////////////////// // define strategy entry / exit // ////////////////////////////////////////////// //****************************************************************************// // LONG CONDITIONS Select_Long_Condition_1 = close > buyLine // Buy when Have Signal Open_Long_Condition = Select_Long_Condition_1 and strategy.opentrades == 0 //****************************************************************************// // STOP LOSS Price float longSL = na longSL := Open_Long_Condition ? ta.lowest(low, SLDAY)[1] : longSL[1] //****************************************************************************// // Cal StopLoss Long_Entry_Price = close Diff_OPEN_to_SL = math.abs(Long_Entry_Price - longSL) // Exit CONDITIONS Exit_Long_Condition = close < show // Sell when Have Signal //****************************************************************************// // POSITION SIZE CAP strategy.initial_capital = 50000 float portSize = Compound ? strategy.netprofit + strategy.initial_capital : strategy.initial_capital float LossAmoutUnit = portSize * Risk_Per_Trade //50 float PercentSL = ( Diff_OPEN_to_SL / Long_Entry_Price ) * 100 float PositionSize = LossAmoutUnit / Diff_OPEN_to_SL //****************************************************************************// // ENTRY/EXIT if Buysig if Open_Long_Condition and in_date_range strategy.entry('LONG', strategy.long, qty=PositionSize) if Exit_Long_Condition and in_date_range strategy.close('LONG') if close < longSL and UseSl strategy.close('LONG') //****************************************************************************// // PLOT STOP LOSS longPlotSL = strategy.opentrades > 0 and strategy.position_size > 0 ? longSL : na // label.new(bar_index, high, text=str.tostring(longPlotSL),color=color.white, textcolor=color.black) plot(longPlotSL, title="", linewidth=2, style=plot.style_linebr, color=color.new(color.red, 0)) //****************************************************************************//