Стратегия перекрестного действия BreakHigh EMA - это стратегия торговли, основанная на перекрестном движении экспоненциальной скользящей средней (EMA). Стратегия использует самую высокую цену в течение определенного периода в качестве сигнала покупки и EMA в качестве сигнала продажи. Когда цена закрытия превышает самую высокую цену в течение указанного периода, стратегия генерирует сигнал покупки. Когда цена закрытия падает ниже EMA, стратегия генерирует сигнал продажи. Стратегия также устанавливает цену остановки потери для контроля риска. Кроме того, стратегия предоставляет пользователям несколько параметров для настройки, чтобы адаптироваться к различным торговым стилям и рыночным условиям.
Основной принцип стратегии пересечения BreakHigh EMA заключается в том, чтобы улавливать рыночные тенденции с использованием пересечения цен и пересечения EMA. Когда цена превышает самую высокую цену в течение определенного периода, это указывает на то, что рынок может вступить в восходящий тренд, поэтому стратегия генерирует сигнал покупки. В то же время EMA служит индикатором, следующим за трендом. Когда цена падает ниже EMA, это указывает на то, что восходящий тренд может закончиться, поэтому стратегия генерирует сигнал продажи.
Стратегия использует следующие шаги для реализации торговли:
С помощью вышеперечисленных шагов стратегия может извлекать выгоду из растущей тенденции на рынке, используя при этом стоп-лосс для контроля риска снижения.
Стратегия перекрестного использования BreakHigh EMA имеет следующие преимущества:
Хотя стратегия перекрестного использования BreakHigh EMA имеет определенные преимущества, она также имеет следующие риски:
Для смягчения этих рисков можно рассмотреть следующие меры:
Для дальнейшего улучшения эффективности стратегии перекрестного использования BreakHigh EMA можно рассмотреть следующие направления оптимизации:
Благодаря вышеуказанным мерам оптимизации можно улучшить стабильность, адаптивность и рентабельность стратегии перекрестного использования BreakHigh EMA, что позволит ей достичь хороших результатов в большей степени рыночных условий.
Стратегия перекрестного использования BreakHigh 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)) //****************************************************************************//