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

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

突破最高价EMA交叉策略

Обзор

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

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

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

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

  1. Вычисляется самая высокая цена за указанный цикл как цена прорыва.
  2. Расчет EMA как сигнала продажи.
  3. Когда цена закрытия пробивается через цену покупки, стратегия дает сигнал покупки, если в настоящее время нет никаких позиций.
  4. Когда цена закрытия опускается через ЭМА, стратегия генерирует сигнал продажи, если в настоящее время есть удерживание.
  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))



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



Больше информации