Estratégia de reversão de curto prazo de crossover 5EMA


Data de criação: 2024-01-30 15:30:19 última modificação: 2024-01-30 15:30:19
cópia: 0 Cliques: 677
1
focar em
1617
Seguidores

Estratégia de reversão de curto prazo de crossover 5EMA

Este artigo descreve uma estratégia de negociação de reversão de ruptura de linha curta baseada no indicador 5EMA. A estratégia utiliza principalmente o indicador 5EMA para determinar a tendência do preço e fazer uma reversão de negociação quando o preço quebra a EMA.

Visão geral da estratégia

A estratégia é uma estratégia de quantificação de linha curta, usada principalmente em negociações de alta frequência. A estratégia julga os sinais de alta e baixa simultaneamente, permitindo negociações bidirecionais. A estratégia gera um sinal de negociação quando o preço quebra o indicador 5EMA, entrando em posições de alta ou baixa, de acordo com a direção da quebra.

A vantagem da estratégia consiste em capturar oportunidades de reversão de preços de linhas curtas e entrar rapidamente no campo. O risco vem principalmente das perdas causadas por brechas falsas. O risco de perda pode ser reduzido com parâmetros de otimização.

Princípio da estratégia

  1. Utilizando o indicador de EMA de 5 ciclos para determinar a tendência de preços de curto prazo

  2. Determine se o preço ultrapassou a EMA

  3. Quando o preço se move para cima e para baixo e quebra a EMA, gera um sinal de venda

  4. Quando o preço se move de baixo para cima e ultrapassa a EMA, gera um sinal de compra

  5. Configure pontos de parada e de parada para limitar perdas individuais

Como o indicador EMA é capaz de julgar com eficácia as tendências de curto prazo, pode capturar rapidamente oportunidades de negociação quando há uma reversão significativa nos preços. Os parâmetros do 5EMA são mais flexíveis, reagem rapidamente ao mercado e são adequados para negociação de alta frequência.

Vantagens estratégicas

  • A resposta rápida é adequada para capturar oportunidades de negociação de linha curta em alta frequência
  • Negociação bidirecional, com mais de um “cabo”
  • A configuração do Stop Loss Stop é razoável, e os prejuízos individuais são limitados
  • Definição de parâmetros simples para otimização de estratégias

Riscos estratégicos e soluções

  • Risco de Falsa Brecha e Prejuízos Desnecessários
    • Optimizar os parâmetros do ciclo EMA para garantir a estabilidade do indicador
  • Frequência excessiva de transações pode causar altos e baixos
    • Limitação do número máximo de transações por dia

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

  • Optimizar os parâmetros do indicador EMA para encontrar a melhor combinação de períodos
  • Aumentar o filtro para reduzir a probabilidade de falhas
  • Limitação do número máximo de transações por dia
  • Indicadores de tendência em combinação com outros

Resumir

Esta estratégia é, em geral, uma estratégia de breakout de linha curta muito prática. Usar o indicador EMA para determinar a reversão de preço é muito simples e eficaz, é uma ferramenta importante para a negociação de quantificação.

Código-fonte da estratégia
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © samscripter

//@version=5
strategy("5 ema strategy",overlay = true,process_orders_on_close = true)

// Choose trade direction

t_dir = input.string("Both", title="Trade Direction",options=["Long", "Short", "Both"],group = 'Trade Direction Set')

long_side  = t_dir == "Long" or t_dir == "Both"
short_side = t_dir == "Short" or t_dir == "Both"

// number of trade
mx_num =input.int(4,title = 'number Of trade',group = 'Maximum Number Of Trade')
var hi =0.0
var lo =0.0

var group_ma1="Ema Set"

//Ema 1
on_ma=input.bool(true,"Enable EMa 1 Plot On/Off"  ,group =group_ma1)
ma_len= input.int(5, minval=1, title="Ema Length",group =group_ma1)
ma_src = input.source(close, title="Ema Source"   ,group = group_ma1)
ma_out = ta.ema(ma_src, ma_len)

// buy and sell ema condition  
plot(on_ma?ma_out:na, color=color.white, title="MA")


if close>ma_out and open>ma_out and low>ma_out and high>ma_out
    lo:=low

if close<ma_out and open<ma_out and low<ma_out and high<ma_out
    hi:=high
    
// condition when price is crossunder lo take sell and when price crossoing hi take buy 
var buyp_sl =float(na)
var sellp_sl =float(na)

//count number trade since day stra
var count_buysell=0

if  close>hi[1] 
    if strategy.position_size==0 and count_buysell<mx_num and long_side
        strategy.entry('El',strategy.long,comment = 'Long')
        count_buysell:=count_buysell+1
        buyp_sl:=math.min(low,low[1])
    hi:=na
if  close<lo[1]
    if strategy.position_size==0 and count_buysell<mx_num and short_side
        strategy.entry('Es',strategy.short,comment = 'short')
        count_buysell:=count_buysell+1
        sellp_sl:=math.max(high,high[1])
    lo:=na

//take profit multiply 

tpnew = input.float(title="take profit", step=0.1, defval=1.5, group='Tp/SL')


//stop loss previous candle high and previous candle low
buy_sl = ta.valuewhen(strategy.position_size != 0 and strategy.position_size[1] == 0,buyp_sl , 0)
sell_sl= ta.valuewhen(strategy.position_size != 0 and strategy.position_size[1] == 0,sellp_sl, 0)

//take profit
takeProfit_buy = strategy.position_avg_price - ((buy_sl - strategy.position_avg_price) *tpnew)
takeProfit_sell = strategy.position_avg_price - ((sell_sl - strategy.position_avg_price) *tpnew)


//  Submit exit orders
if strategy.position_size > 0
    strategy.exit(id='XL', stop=buy_sl,limit=takeProfit_buy,comment_loss = 'Long Sl',comment_profit = 'Long Tp')

if strategy.position_size < 0
    strategy.exit(id='XS', stop=sell_sl,limit=takeProfit_sell,comment_loss = 'Short Sl',comment_profit = 'Short Tp')
    
//plot data
plot(series=strategy.position_size < 0 ?sell_sl : na, style=plot.style_circles, color=color.red, linewidth=2, title="St red Stop")
plot(series=strategy.position_size > 0 ?buy_sl  : na, style=plot.style_circles, color=color.green, linewidth=2, title="St green Stop")


// plot take profit
plot(series=strategy.position_size < 0 ? takeProfit_sell : na, style=plot.style_circles, color=color.orange, linewidth=2, title="take profit sell")
plot(series=strategy.position_size > 0 ? takeProfit_buy: na, style=plot.style_circles, color=color.blue, linewidth=2, title="take profit buy")

if ta.change(time('D'))
    count_buysell:=0