Estratégia de Crossover de EMA de Preço Mais Alto


Data de criação: 2024-03-29 14:39:27 última modificação: 2024-03-29 14:39:27
cópia: 2 Cliques: 527
1
focar em
1617
Seguidores

Estratégia de Crossover de EMA de Preço Mais Alto

Visão geral

A estratégia de cruzamento de EMAs de alto preço é uma estratégia de negociação baseada no cruzamento de preços de alto preço e média móvel do índice (EMA). A estratégia usa o preço mais alto de um determinado período como sinal de compra e o EMA como sinal de venda. A estratégia gera um sinal de compra quando o preço de fechamento supera o preço mais alto de um determinado período; a estratégia gera um sinal de venda quando o preço de fechamento cai abaixo do EMA. A estratégia também define um preço de parada para controlar o risco.

Princípio da estratégia

O princípio central da estratégia de cruzamento de EMAs de alta é o uso de breakouts e EMAs de alta para capturar a tendência do mercado. Quando o preço ultrapassa o preço mais alto no período especificado, indica que o mercado pode entrar em uma tendência ascendente, portanto, a estratégia gera um sinal de compra.

A estratégia usa os seguintes passos para realizar transações:

  1. O preço mais alto no período especificado é calculado como o preço de compra de ruptura.
  2. Calcule a EMA como um sinal de venda.
  3. A estratégia gera um sinal de compra se não houver uma posição atual quando o preço de fechamento ultrapassa o preço de compra.
  4. A estratégia gera um sinal de venda quando o preço de fechamento cai abaixo da EMA, se houver uma posição atual.
  5. O preço mínimo do período especificado é calculado como o preço de parada.
  6. A estratégia de liquidação imediata é executada se o preço for abaixo do preço de parada.

Através dos passos acima, a estratégia pode lucrar com a tendência ascendente do mercado e, ao mesmo tempo, usar o stop loss para controlar o risco de queda.

Vantagens estratégicas

A estratégia de cruzamento de EMAs que ultrapassam os preços máximos tem as seguintes vantagens:

  1. Seguimento de tendências: Esta estratégia usa breakouts e cruzamentos de EMAs para capturar tendências de mercado e pode lucrar em tendências ascendentes.
  2. Controle de Risco: A estratégia usa o preço de parada para controlar o risco de queda, reduzindo efetivamente a retirada máxima da estratégia.
  3. Flexibilidade de parâmetros: A estratégia oferece vários parâmetros para personalização do usuário, como o ciclo, a proporção de risco, o uso de stop loss, etc., que podem ser ajustados de acordo com diferentes estilos de negociação e condições de mercado.
  4. Simples e eficaz: a lógica da estratégia é simples e clara, fácil de entender e implementar, e ao mesmo tempo pode obter bons lucros em mercados em tendência.

Risco estratégico

Apesar de ter alguns benefícios, a estratégia de cruzar os EMAs mais altos também apresenta os seguintes riscos:

  1. Risco de volatilidade do mercado: em situações de grande volatilidade do mercado, a estratégia pode produzir mais falsos sinais, resultando em transações frequentes e perda de fundos.
  2. Risco de reversão de tendência: quando a tendência do mercado se reverte, a estratégia pode atrasar a venda, resultando em retorno de lucro ou na transformação de prejuízos em perdas.
  3. Risco de configuração de parâmetros: o desempenho da estratégia depende da configuração de parâmetros, como período, proporção de risco, etc. Se a configuração de parâmetros for inadequada, isso pode levar ao fraco desempenho da estratégia.

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

  1. Parâmetros de ajuste apropriado: ajuste apropriado de parâmetros de estratégia, como aumento de ciclo, redução da proporção de risco, etc., de acordo com diferentes ambientes de mercado e variedades de negociação, para reduzir sinais falsos e negociações frequentes.
  2. Combinação com outros indicadores: pode ser combinado com outros indicadores técnicos, como RSI, MACD, etc., para confirmar a eficácia das tendências e sinais, aumentando a confiabilidade da estratégia.
  3. Estabeleça um preço de parada razoável, que controle o risco de queda e não pare prematuramente, resultando em oportunidades de lucro perdidas.

Direção de otimização da estratégia

Para melhorar ainda mais o desempenho da estratégia de cruzamento de EMAs de maior preço, as seguintes direções de otimização podem ser consideradas:

  1. Parâmetros de ajuste dinâmico: Dependendo da volatilidade do mercado e da intensidade da tendência, ajuste dinâmico dos parâmetros da estratégia, como aumentar o ciclo quando a volatilidade é maior, aumentar a proporção de risco quando a tendência é mais forte, etc., para se adaptar a diferentes condições de mercado.
  2. Introdução de mecanismos de negociação em aberto: Com base nas negociações em aberto originais, a introdução de mecanismos de negociação em aberto também pode ser lucrativa em tendências de baixa, aumentando a adaptabilidade e a rentabilidade da estratégia.
  3. Optimizar o stop loss e o stop loss: Optimizar as configurações de stop loss e stop loss, como o uso de métodos como stop loss móvel, stop partial, etc., para melhor controlar o risco e bloquear os lucros.
  4. Combinação com a análise fundamental: Combinação da análise fundamental com a análise técnica, por exemplo, antes e depois de eventos importantes, como a divulgação de resultados empresariais e dados econômicos, para ajustar as posições e os parâmetros da estratégia para responder a possíveis mudanças no mercado.

Através das melhorias acima, pode-se aumentar a estabilidade, adaptabilidade e rentabilidade da estratégia de EMA de cruzamento de preços mais elevados, permitindo-lhe um bom desempenho em mais ambientes de mercado.

Resumir

A estratégia de EMA de cruzamento de preços é uma estratégia de acompanhamento de tendências simples e eficaz, que capta as tendências do mercado usando os cruzados de preços e EMA e, ao mesmo tempo, 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áceis de entender e implementar. Embora a estratégia tenha certos riscos, como o risco de flutuação do mercado, o risco de reversão de tendência e o risco de configuração de parâmetros, esses riscos podem ser mitigados por medidas de controle de risco adequadas, como ajuste de parâmetros, combinação de outros indicadores e configuração de um stop loss razoável.

Código-fonte da estratégia
/*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))



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