BreakHigh Estratégia de cruzamento da EMA

Autora:ChaoZhang, Data: 2024-03-29 14:39:27
Tags:

img

Resumo

A Estratégia de Crossover BreakHigh EMA é uma estratégia de negociação baseada no cruzamento de breakout de preço e média móvel exponencial (EMA). A estratégia usa o preço mais alto dentro de um período especificado como sinal de compra e a EMA como sinal de venda. Quando o preço de fechamento supera o preço mais alto dentro do período especificado, a estratégia gera um sinal de compra. Quando o preço de fechamento cai abaixo da EMA, a estratégia gera um sinal de venda. A estratégia também define um preço de stop-loss para controlar o risco. Além disso, a estratégia fornece vários parâmetros para os usuários personalizarem para se adaptar a diferentes estilos de negociação e condições de mercado.

Princípio da estratégia

O princípio básico da estratégia de cruzamento da EMA é capturar as tendências do mercado usando a quebra de preço e o cruzamento da EMA. Quando o preço quebra acima do preço mais alto dentro de um período especificado, ele indica que o mercado pode entrar em uma tendência de alta, então a estratégia gera um sinal de compra. Ao mesmo tempo, a EMA serve como um indicador de tendência. Quando o preço cai abaixo da EMA, ele indica que a tendência de alta pode terminar, então a estratégia gera um sinal de venda.

A estratégia utiliza as seguintes etapas para implementar a negociação:

  1. Calcular o preço mais elevado no período especificado como preço de compra de ruptura.
  2. Calcular a EMA como sinal de venda.
  3. Quando o preço de fechamento ultrapassa o preço de compra de ruptura, se não houver posição atual, a estratégia gera um sinal de compra.
  4. Quando o preço de fechamento cai abaixo da EMA, se houver uma posição corrente, a estratégia gera um sinal de venda.
  5. Calcular o preço mais baixo dentro do período especificado como o preço stop-loss.
  6. Se o preço cair abaixo do preço de stop-loss, a estratégia fecha imediatamente a posição.

Através das etapas acima, a estratégia pode beneficiar da tendência ascendente do mercado, ao mesmo tempo em que utiliza o stop-loss para controlar o risco de queda.

Vantagens da estratégia

A estratégia de cruzamento da EMA BreakHigh tem as seguintes vantagens:

  1. A estratégia utiliza a ruptura dos preços e o cruzamento da EMA para capturar as tendências do mercado e pode lucrar com as tendências de alta.
  2. Controlo de risco: A estratégia utiliza um preço de stop-loss para controlar o risco de queda, o que pode efetivamente reduzir a utilização máxima da estratégia.
  3. Flexibilidade dos parâmetros: A estratégia fornece múltiplos parâmetros para os utilizadores personalizarem, tais como período, rácio de risco, utilização de stop-loss, etc., que podem ser ajustados de acordo com diferentes estilos de negociação e condições de mercado.
  4. Simples e eficazes: A lógica da estratégia é simples e clara, fácil de entender e implementar e pode obter bons retornos em mercados de tendência.

Riscos estratégicos

Embora a estratégia de cruzamento da EMA BreakHigh tenha certas vantagens, apresenta também os seguintes riscos:

  1. Risco de volatilidade do mercado: em casos de alta volatilidade do mercado, a estratégia pode gerar mais sinais falsos, levando a frequentes perdas de negociação e de capital.
  2. Risco de reversão da tendência: quando a tendência do mercado se inverte, a estratégia pode atrasar a venda, resultando em retração dos lucros ou transformando os lucros em perdas.
  3. Parâmetro de definição do risco: o desempenho da estratégia depende da definição de parâmetros, tais como período, rácio de risco, etc. Se os parâmetros forem definidos de forma inadequada, isso pode conduzir a um mau desempenho da estratégia.

Para mitigar estes riscos, podem ser consideradas as seguintes medidas:

  1. Ajustar adequadamente os parâmetros: De acordo com diferentes condições de mercado e instrumentos de negociação, ajustar adequadamente os parâmetros da estratégia, como aumentar o período, reduzir o rácio de risco, etc., para reduzir os falsos sinais e a frequência das negociações.
  2. Combinar com outros indicadores: Combinar com outros indicadores técnicos, tais como RSI, MACD, etc., para confirmar a validade das tendências e sinais e melhorar a fiabilidade da estratégia.
  3. Estabelecer um preço de stop-loss razoável: Estabelecer um preço de stop-loss razoável, que pode controlar o risco de queda e não parar a perda muito cedo, resultando em oportunidades de lucro perdidas.

Orientações para a otimização da estratégia

Para melhorar ainda mais o desempenho da Estratégia de Crossover BreakHigh EMA, podem ser consideradas as seguintes direcções de otimização:

  1. Ajuste dinâmico dos parâmetros: De acordo com a volatilidade do mercado e a força da tendência, ajustar dinamicamente os parâmetros da estratégia, tais como aumentar o período em que a volatilidade é elevada, aumentar o rácio de risco quando a tendência é forte, etc., para se adaptar às diferentes condições do mercado.
  2. Introduzir um mecanismo de negociação longa-curta: com base na negociação longa original, introduzir um mecanismo de negociação curta para lucrar também com tendências de queda, melhorando a adaptabilidade e a rentabilidade da estratégia.
  3. Otimizar o stop-loss e o take-profit: Otimizar a configuração do stop-loss e do take-profit, como o uso de trailing stop-loss, take-profit parcial, etc., para controlar melhor os riscos e bloquear os lucros.
  4. Combinar com a análise fundamental: Combinar a análise fundamental com a análise técnica, como ajustar a posição e os parâmetros da estratégia antes e após eventos importantes, como relatórios de resultados corporativos e divulgação de dados económicos, para fazer face a possíveis alterações do mercado.

Através das medidas de otimização acima referidas, a estabilidade, a adaptabilidade e a rentabilidade da estratégia de crossover BreakHigh EMA podem ser melhoradas, permitindo-lhe alcançar um bom desempenho em mais ambientes de mercado.

Resumo

A Estratégia de Crossover BreakHigh EMA é uma estratégia simples e eficaz de acompanhamento de tendências que capta as tendências do mercado usando a breakout de preços e o crossover EMA, enquanto usa o stop-loss para controlar o risco de queda. A lógica da estratégia é clara, os parâmetros são flexíveis e é fácil de entender e implementar. Embora a estratégia tenha certos riscos, como risco de volatilidade do mercado, risco de reversão de tendência e risco de configuração de parâmetros, esses riscos podem ser mitigados por meio de medidas apropriadas de controle de risco, como ajuste de parâmetros, combinação com outros indicadores e configuração de stop-loss razoável. Além disso, a estratégia tem espaço de otimização adicional, como ajuste dinâmico de parâmetros, introdução de mecanismo de perda curta, otimização de stop-loss e take-profit e combinação com análise fundamental, etc., para melhorar o desempenho e a adaptabilidade da estratégia. A Estratégia de Crossover BreakHigh 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))



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



Mais.