O recurso está a ser carregado... Carregamento...

Estratégia de duplo empuxo

Autora:ChaoZhang, Data: 2023-09-19 16:27:12
Tags:

Resumo

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.

Princípio da estratégia

  1. Calcular a HH mais elevada e a LL mais baixa sobre as barras N recentes.

  2. Calcular o máximo de HC e o mínimo de LC do dia anterior.

  3. O intervalo do dia anterior é o maior dos HH-LC e HC-LL.

  4. A faixa superior BuyLine é o preço de abertura mais k1*Range.

  5. A faixa inferior SellLine é o preço de abertura menos k2*Range.

  6. Vá longo quando o fechamento estiver acima da BuyLine. Vá curto quando o fechamento estiver abaixo da SellLine.

Análise das vantagens

Principais vantagens desta estratégia:

  1. Captura a tendência formada por rupturas em torno do preço de abertura.

  2. As bandas são definidas automaticamente com base na volatilidade histórica, evitando a subjetividade.

  3. Valores de k personalizáveis adequam-se a produtos com volatilidade diferente.

  4. Os sinais de fuga têm uma qualidade relativamente elevada.

  5. Períodos de retenção flexíveis para capturar tendências em diferentes prazos.

Análise de riscos

Principais riscos desta estratégia:

  1. Dificuldade em determinar uma faixa razoável para as bandas, riscos de sobreajuste.

  2. As rupturas podem revelar-se sinais falsos, precisam parar de perder.

  3. O período de detenção fixo não pode adaptar-se dinamicamente ao mercado.

  4. Os dados insuficientes dos backtests conduzem a um ajustamento da curva.

  5. Dificuldade em realizar simultaneamente negociações longas e curtas.

Soluções:

  1. Otimizar os valores de k em conjuntos de dados maiores para evitar o sobreajuste.

  2. Definir o stop loss adequado para limitar as perdas por transação.

  3. Adicionar filtro de tendência para evitar a negociação de contra-tendência.

  4. Considerar reduzir o período de detenção para intradiário.

  5. Validação ao vivo com dimensionamento gradual da posição.

Orientações de otimização

Algumas formas de melhorar a estratégia:

  1. Ajustar dinamicamente os valores k das bandas.

  2. Adicione o filtro de volume para confirmar sinais de fuga.

  3. Use o stop loss para proteger os lucros.

  4. Avaliar a força de ruptura para dimensionamento de posição.

  5. Distinguir entre tendência e intervalo para decompor a estratégia.

Resumo

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')

Mais.