Стратегия перекрестного использования EMA BreakHigh

Автор:Чао Чжан, Дата: 2024-03-29 14:39:27
Тэги:

img

Обзор

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

Принцип стратегии

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

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

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

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

Преимущества стратегии

Стратегия перекрестного использования BreakHigh EMA имеет следующие преимущества:

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

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

Хотя стратегия перекрестного использования BreakHigh EMA имеет определенные преимущества, она также имеет следующие риски:

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

Для смягчения этих рисков можно рассмотреть следующие меры:

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

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

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

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

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



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



Больше