Estratégia Stop Loss e Take Profit baseada no padrão Doji

Autora:ChaoZhang, Data: 2024-02-02 17:17:38
Tags:

img

Resumo

Esta estratégia é baseada no padrão Doji. Quando um padrão Doji aparece, uma ordem de parada de compra é colocada entre a alta do Doji e a alta da vela anterior, e uma ordem de parada de venda é colocada entre a baixa do Doji e a baixa da vela anterior.

Estratégia lógica

Quando um padrão Doji aparece, ele indica uma mudança na relação de oferta e demanda, com as forças se tornando mais equilibradas, o que pode levar a uma reversão de preço.

body=close-open 
range=high-low
abody=abs(body)
ratio=abody/range  
data=(abs(open - close) <= (high - low) * Doji)

Se abs ((abrir-fechar) <= (alto-baixo) * parâmetro Doji, é considerado um padrão Doji, e as ordens de parada serão colocadas.

longDist= longcandle[1] and range[1]>range? high: max(high,high[1])
shortDist= longcandle[1] and range[1]>range? low: min(low,low[1]) 

Se o corpo da vela anterior for grande, a ordem de parada de compra é colocada entre o máximo do Doji e o máximo da vela anterior.

Existem duas opções de saída:

  1. Previsão de prejuízo
strategy.exit("exit buy","buy stop",loss=SL, profit=TP, when=Use_SL_TP)
  1. Use o preço mais alto e mais baixo do Doji como stop loss e take profit
strategy.close("buy stop",when=not Use_SL_TP and close<dojilow) 

Análise das vantagens

As vantagens desta estratégia são as seguintes:

  1. Simples de implementar.
  2. Aproveita os sinais de reversão de preços eficientes do padrão Doji.
  3. Parâmetros de stop loss e take profit personalizáveis para controlar o risco.
  4. Funciona bem em períodos mais longos para filtrar o ruído.

Análise de riscos

Há alguns riscos com esta estratégia:

  1. A solução é definir razoavelmente a distância de stop loss para limitar a perda por comércio.
  2. Muito ruído nos sinais Doji em prazos mais baixos.
  3. O risco de perdas ilimitadas sem stop loss e take profit.

Orientações de otimização

Algumas maneiras de otimizar a estratégia:

  1. Otimizar o parâmetro Doji para diferentes instrumentos de negociação.
  2. Teste diferentes combinações de stop loss e take profit.
  3. Perda de parada dinâmica baseada em ATR.
  4. Combinar com outros indicadores para determinar a entrada ideal.

Conclusão

O desempenho geral desta estratégia é bom. Ao capturar oportunidades de reversão de preços do Doji, ele pode gerar sinais de negociação decentes. Também é simples de implementar e aplicável em vários instrumentos. Com testes e otimizações contínuos, melhores resultados podem ser esperados.


/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//This is a simple strategy based on Doji star candlestick
//It places two orders: buy stop at doji star high or previous candle high and sell stop at doji star low or previous candle low.
//This strategy works very well with high time frames like Weekly TF because it eliminates the noise in doji formation.
//

strategy("Doji strategy W", overlay=true, calc_on_every_tick=true, pyramiding=0,default_qty_type=strategy.percent_of_equity,default_qty_value=100,currency=currency.USD)

//INPUTS
//MinDistance=input(100,'Minimum distance in ticks')
Use_SL_TP=input(true,'Use stop loss and take profit?')
TP=input(200,'Take Profit in ticks')
SL=input(200,'Stop Loss in tiks')
Doji = input(0.05, minval=0.01, title="Doji size", step=0.01)

//VARIABILI
body=close-open
range=high-low
abody=abs(body)
ratio=abody/range
longcandle= (ratio>0.6)

//Doji
data=(abs(open - close) <= (high - low) * Doji)
plotchar(data, title="Doji", text='Doji', color=black)
longDist= longcandle[1] and range[1]>range? high: max(high,high[1])
shortDist= longcandle[1] and range[1]>range? low: min(low,low[1])
dojilow=data==1?low:na
dojihigh=data==1?high:na

goStar=data==1?true:false
//////////////////////////////////////////////////////////////////

//STRATEGY

strategy.order("buy stop",true,stop=longDist,  oca_name="Dojy Entry",when=goStar)
strategy.order("sell stop",false,stop=shortDist, oca_name="Dojy Entry",when=goStar)

strategy.exit("exit buy","buy stop",loss=SL, profit=TP, when=Use_SL_TP)
strategy.exit("exit sell","sell stop",loss=SL,profit=TP, when=Use_SL_TP)

strategy.close("buy stop",when=not Use_SL_TP and close<dojilow)
strategy.exit("exit buy","buy stop",profit=TP, when=not Use_SL_TP)
strategy.close("sell stop",when=not Use_SL_TP and close>dojihigh)
strategy.exit("exit sell","sell stop",profit=TP, when=not Use_SL_TP)
    
    



Mais.