Стратегия прорыва максимальной цены EMA Crossover


Дата создания: 2024-03-29 14:39:27 Последнее изменение: 2024-03-29 14:39:27
Копировать: 2 Количество просмотров: 527
1
Подписаться
1617
Подписчики

Стратегия прорыва максимальной цены EMA Crossover

Обзор

Стрельба с пересечением цены в EMA - это торговая стратегия, основанная на пересечении цены с пересечением индексных движущихся средних (EMA). Стрельба использует максимальную цену за определенный период в качестве сигнала для покупки и EMA в качестве сигнала для продажи.

Стратегический принцип

Основным принципом стратегии по преодолению пересечения EMA является использование пересечения EMA и пересечения EMA для захвата рыночной тенденции. Когда цена превышает максимальную цену в течение указанного периода, это указывает на то, что рынок может войти в восходящую тенденцию, поэтому стратегия создает сигнал покупки. В то же время, EMA, как индикатор отслеживания тенденции, показывает, что восходящая тенденция может закончиться, когда цена пересекает EMA, поэтому стратегия создает сигнал продажи.

Эта стратегия использует следующие шаги для осуществления сделки:

  1. Вычислить максимальную цену за указанный период как цену прорыва.
  2. Рассчитываем EMA как сигнал к продаже.
  3. Когда цена закрытия прорывает цену покупки, стратегия создает сигнал покупки, если в настоящее время нет позиций.
  4. Когда конечная цена падает ниже EMA, если в настоящее время есть позиции, стратегия генерирует сигнал продажи.
  5. Стоп-стоп - наименьшая цена за определенный период времени.
  6. Если цена опустится ниже уровня стоп-лосса, стратегия немедленно ликвидирует позицию.

С помощью вышеперечисленных шагов стратегия может получить прибыль от восходящего тренда рынка, используя при этом стоп-лосс для управления нисходящим риском.

Стратегические преимущества

Стремиться к повышению цены на EMA имеет следующие преимущества:

  1. Тренд-трек: стратегия использует ценовые прорывы и пересечения EMA для захвата рыночных тенденций, чтобы получить прибыль в восходящих тенденциях.
  2. Контроль риска: стратегия использует цену стоп-лосса для контроля риска падения, что позволяет эффективно снизить максимальный отвод стратегии.
  3. Гибкость параметров: Стратегия предоставляет пользователям множество параметров для настройки, таких как циклы, коэффициент риска, использование или нет остановок, которые могут быть скорректированы в зависимости от различных стилей торговли и рыночных условий.
  4. Простая и эффективная: логика этой стратегии проста и понятна, ее легко понять и реализовать, при этом она дает хорошую прибыль в трендовых рынках.

Стратегический риск

Несмотря на определенные преимущества, связанные с пересечением наивысшей цены EMA, она также сопряжена со следующими рисками:

  1. Риск рыночной волатильности: при значительной волатильности рынка эта стратегия может привести к появлению большего количества ложных сигналов, что приведет к частым сделкам и потерем средств.
  2. Риск обратного тренда: когда рыночная тенденция меняется, стратегия может задержать продажу, что приводит к обратному обращению прибыли или превращению убытка в убыток.
  3. Риск настройки параметров: эффективность стратегии зависит от настройки параметров, таких как периодичность, степень риска и т. д. Неправильная настройка параметров может привести к плохой эффективности стратегии.

Чтобы снизить эти риски, следует рассмотреть следующие меры:

  1. Применение адекватных параметров: в зависимости от различных рыночных условий и типов сделок, адекватные корректировки параметров стратегии, такие как увеличение циклов, снижение доли риска и т. Д., Чтобы уменьшить ложные сигналы и частоту торгов.
  2. Комбинирование с другими индикаторами: может использоваться в сочетании с другими техническими индикаторами, такими как RSI, MACD и т. Д., чтобы подтвердить эффективность трендов и сигналов и повысить надежность стратегии.
  3. Установка разумного стоп-ущерба: установка разумной стоп-ущербной цены, которая позволяет контролировать риск падения, но не прекращает потерю слишком рано, что приводит к упущенным возможностям получения прибыли.

Направление оптимизации стратегии

Для дальнейшего улучшения эффективности стратегии скрещивания EMA по самым высоким ценам можно рассмотреть следующие направления оптимизации:

  1. Динамическая корректировка параметров: в зависимости от волатильности рынка и интенсивности тренда, динамическая корректировка параметров стратегии, таких как увеличение цикла при большой волатильности, повышение доли риска при сильной тенденции, чтобы адаптироваться к различным рыночным условиям.
  2. Внедрение многооборотного механизма: на основе первоначального многооборотного трейдинга, внедрение механизма открытого трейдинга позволяет получать прибыль и в условиях нисходящего тренда, повышая адаптивность и прибыльность стратегии.
  3. Оптимизация остановок и остановок: оптимизация установок остановок и остановок, такие как использование методов мобильного остановки, частичной остановки и т. Д., Для лучшего контроля риска и блокировки прибыли.
  4. Комбинирование фундаментального анализа: объединение фундаментального анализа с техническим анализом, например, до и после важных событий, таких как корпоративные финансовые отчеты, публикация экономических данных, для корректировки позиций и параметров стратегии в ответ на возможные изменения рынка.

Благодаря этим оптимизационным мерам можно повысить устойчивость, адаптивность и доходность прорывной стратегии перекрестного перехода по наивысшей цене 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))



//****************************************************************************//