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).
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.
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.
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.
Esta estratégia pode ser otimizada de várias formas:
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
Realizar testes de robustez dos parâmetros em todos os mercados.
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
Melhorar a metodologia de stop loss. Usar paradas de volatilidade ou aprendizado de máquina em vez de paradas de percentual simples
A lógica atual se baseia principalmente em paradas, poderia adicionar saídas de lucro para cima ou alvo
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)