A estratégia de duplo impulso define bandas superiores e inferiores com base no preço de abertura e no intervalo do dia anterior, indo longo em breakouts de alta e curto em breakouts de baixa.
Calcular a HH mais elevada e a LL mais baixa sobre as barras N recentes.
Calcular o máximo de HC e o mínimo de LC do dia anterior.
O intervalo do dia anterior é o maior dos HH-LC e HC-LL.
A faixa superior BuyLine é o preço de abertura mais k1*Range.
A faixa inferior SellLine é o preço de abertura menos k2*Range.
Vá longo quando o fechamento estiver acima da BuyLine. Vá curto quando o fechamento estiver abaixo da SellLine.
Principais vantagens desta estratégia:
Captura a tendência formada por rupturas em torno do preço de abertura.
As bandas são definidas automaticamente com base na volatilidade histórica, evitando a subjetividade.
Valores de k personalizáveis adequam-se a produtos com volatilidade diferente.
Os sinais de fuga têm uma qualidade relativamente elevada.
Períodos de retenção flexíveis para capturar tendências em diferentes prazos.
Principais riscos desta estratégia:
Dificuldade em determinar uma faixa razoável para as bandas, riscos de sobreajuste.
As rupturas podem revelar-se sinais falsos, precisam parar de perder.
O período de detenção fixo não pode adaptar-se dinamicamente ao mercado.
Os dados insuficientes dos backtests conduzem a um ajustamento da curva.
Dificuldade em realizar simultaneamente negociações longas e curtas.
Soluções:
Otimizar os valores de k em conjuntos de dados maiores para evitar o sobreajuste.
Definir o stop loss adequado para limitar as perdas por transação.
Adicionar filtro de tendência para evitar a negociação de contra-tendência.
Considerar reduzir o período de detenção para intradiário.
Validação ao vivo com dimensionamento gradual da posição.
Algumas formas de melhorar a estratégia:
Ajustar dinamicamente os valores k das bandas.
Adicione o filtro de volume para confirmar sinais de fuga.
Use o stop loss para proteger os lucros.
Avaliar a força de ruptura para dimensionamento de posição.
Distinguir entre tendência e intervalo para decompor a estratégia.
A estratégia de duplo impulso pode capturar oportunidades de negociação de tendência em torno do preço de abertura. Mas as configurações de parâmetros e otimizações do período de detenção têm grande espaço para melhorias considerando o controle de risco.
/*backtest start: 2023-09-11 00:00:00 end: 2023-09-18 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Dual Thrust Strategy",overlay=true,initial_capital=1000) k1=input(0.67,type=float,step=0.01) k2=input(0.62,type=float,step=0.01) TimeFrame=input('240') len=input(20) HH=security(syminfo.tickerid,TimeFrame,highest(high,len),barmerge.lookahead_off) LC=security(syminfo.tickerid,TimeFrame,lowest(close,len),barmerge.lookahead_off) HC=security(syminfo.tickerid,TimeFrame,highest(close,len),barmerge.lookahead_off) LL=security(syminfo.tickerid,TimeFrame,lowest(low,len),barmerge.lookahead_off) Range=max(HH-LC,HC-LL) BuyLine=security(syminfo.tickerid,"D",open,barmerge.lookahead_off)+k1*Range SellLine=security(syminfo.tickerid,"D",open,barmerge.lookahead_off)-k2*Range plot(BuyLine,color=blue,linewidth=2,offset=1,transp=70) plot(SellLine,color=red,linewidth=2,offset=1,transp=70) LongCondition=crossover(close,BuyLine) ShortCondition=crossunder(close,SellLine) strategy.entry("enter long",true,1,when=LongCondition) strategy.entry("enter short",false,1,when=ShortCondition) plotshape(LongCondition and strategy.position_size<0?low:na,style=shape.labelup,location=location.absolute,color=blue,text="Long",textcolor=white,size=size.small) plotshape(ShortCondition and strategy.position_size>0?high:na,style=shape.labeldown,location=location.absolute,color=red,text="Short",textcolor=white,size=size.small) alertcondition(LongCondition and strategy.position_size<0,title='Long_DT') alertcondition(ShortCondition and strategy.position_size>0,title='Short_DT')