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

Estratégia de negociação baseada em derivados

Autora:ChaoZhang, Data: 2024-01-12 11:06:28
Tags:

img

Resumo

Esta estratégia investe porcentagens iguais de capital com base na utilização dos derivados de 1o, 2o, 3o e 4o tempo da Hull Moving Average (HMA).

Estratégia lógica

A estratégia calcula primeiro a HMA. A média móvel do casco é uma média móvel ponderada calculada com a seguinte fórmula:

hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm))) 

onde src é o preço e sm é um parâmetro de entrada que controla o comprimento da média.

A estratégia calcula então a velocidade (1a derivada), aceleração (2a derivada), sacudida (3a derivada) e junção (4a derivada). Estes são calculados tomando a diferença entre o HMA e seus valores atrasados divididos pelo comprimento len.

speed = (hullma-hullma[len])/len

Os outros derivados são calculados da mesma forma.

A estratégia determina entradas e saídas olhando para os sinais de aceleração, sacudida e junção. Se todos os três indicadores forem positivos, ele vai longo. Se todos os três forem negativos, ele vai curto.

Além disso, a estratégia também irá rastrear perdas de stop para bloquear os lucros.

Análise das vantagens

Uma das principais vantagens desta estratégia é que usa vários derivados como sinais de entrada e saída, o que pode filtrar alguns sinais falsos.

Outra vantagem é que esta estratégia é muito flexível. Tem múltiplos parâmetros ajustáveis, incluindo comprimento HMA, comprimentos dos vários derivados, percentagens de stop loss etc. que podem ser otimizados para diferentes mercados.

O uso de trailing stops ajustáveis também é uma vantagem. Isso pode ajudar a estratégia a capturar mais lucros em mercados de tendência, enquanto sai em tempo hábil durante mercados agitados, limitando a retirada máxima.

Análise de riscos

O principal risco desta estratégia é a diminuição da taxa de acerto devido a eventos repentinos. Se não houver filtros relevantes em vigor, grandes eventos de notícias podem fazer com que vários derivados dêem sinais errados ao mesmo tempo, levando a perdas maiores.

Outro risco é que os parâmetros possam ser facilmente excessivos. O comprimento da HMA, os comprimentos dos derivados, etc., podem afetar os resultados. Isso requer um rigoroso backtesting para avaliar a robustez desses parâmetros em diferentes mercados.

Orientações de otimização

Esta estratégia pode ser otimizada de várias formas:

  1. Adicionar filtros baseados em eventos de explosão para pausar a negociação por algum tempo após grandes eventos de notícias, evitando pontos de entrada perdidos que levam a grandes perdas

  2. Realizar testes de robustez dos parâmetros em todos os mercados.

  3. Tentar melhorar a lógica de entrada. Introduzir modelos de aprendizagem de máquina para identificar tendências em vez de simples julgamentos positivos/negativos

  4. Melhorar a metodologia de stop loss. Usar paradas de volatilidade ou aprendizado de máquina em vez de paradas de percentual simples

  5. A lógica atual se baseia principalmente em paradas, poderia adicionar saídas de lucro para cima ou alvo

Conclusão

Esta é uma estratégia de seguimento de tendência de vários prazos que utiliza múltiplos derivados da média móvel Hull como sinais de entrada e saída com paradas de tração para bloquear lucros. As principais vantagens incluem a filtragem de sinais falsos usando múltiplos derivados, parâmetros ajustáveis flexíveis, etc. Os riscos a serem notados incluem impactos de eventos de explosão e potencial sobreajuste de parâmetros. A estratégia poderia ser otimizada adicionando filtros, melhorando a robustez dos parâmetros, aprimorando a lógica de entrada / saída e assim por diante para torná-la um sistema de negociação automatizado mais confiável.


/*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"}]
*/

//@version=3
strategy(title="Derivative Based Strategy", shorttitle="DER", currency="USD", calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=1000)
len = input(1, minval=1, title="Derivatives Length")
sm = input(4, minval=1, title="HMA Length")
longTrailPerc=input(title="Trail Long Loss %", type=float,minval=0.0,step=0.1,defval=25)*0.01
shortTrailPerc=input(title="Trail Short Loss %",type=float,minval=0.0,step=0.1,defval=25)*0.01
longStopPrice=0.0
shortStopPrice=0.0
src = input(ohlc4, title="Source")
hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm)))
speed = (hullma-hullma[len])/len
accel = (speed-speed[len])/len
jerk = (accel-accel[len])/len
jounce = (jerk-jerk[len])/len
plot(speed, color=green)
plot(accel, color=purple)
plot(jerk, color=red)
plot(jounce, color=blue)
// hline(0, linestyle=solid, color=black)
if accel>0 and jerk>0 and jounce>0// and strategy.opentrades==0
    strategy.entry("openlong", strategy.long)
if accel<0 and jerk<0 and jounce<0// and strategy.opentrades==0
    strategy.entry("openshort",strategy.short)
speed_profit = (strategy.openprofit-strategy.openprofit[1])/len
accel_profit = (speed_profit-speed_profit[1])/len
jerk_profit = (accel_profit-accel_profit[1])/len
longStopPrice:=if(strategy.position_size>0)
    stopValue=ohlc4*(1-longTrailPerc)
    max(stopValue,longStopPrice[1])
else
    0
shortStopPrice:=if(strategy.position_size<0)
    stopValue=ohlc4*(1+shortTrailPerc)
    min(stopValue,shortStopPrice[1])
else
    999999
if(strategy.position_size>0)
    strategy.exit(id="closelong",stop=longStopPrice)
if(strategy.position_size<0)
    strategy.exit(id="closeshort",stop=shortStopPrice)


Mais.