
A estratégia é baseada em investimentos em derivativos de tempo de 1, 2, 3 e 4 fases usando a média móvel de Hull ((HMA)). Ela envolve o investimento de uma quantia de capital. O ponto de entrada é identificado pela tendência dos derivativos de 2, 3 e 4 fases, enquanto o ponto de saída é criado em um novo ponto de entrada ou percentual de parada de rastreamento.
A estratégia começa com o cálculo da HMA. A média móvel de Hull é uma média móvel ponderada que é calculada usando a seguinte fórmula:
hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm)))
src é o preço e sm é um parâmetro de entrada para controlar a média.
Em seguida, a estratégia calcula a velocidade (a derivada de 1o grau), a aceleração (a derivada de 2o grau), a oscilação (a derivada de 3o grau) e a oscilação (a derivada de 4o grau). Estas são calculadas calculando a diferença entre o HMA e o seu atraso e depois dividindo-se por o comprimento len. Por exemplo, a fórmula para calcular a velocidade é:
speed = (hullma-hullma[len])/len
O restante dos derivados é calculado de forma semelhante.
A estratégia decide a entrada e a saída do jogo olhando para os pontos positivos e negativos da aceleração, oscilação e oscilação. Se todos os três indicadores forem positivos, ele abrirá um cartão. Se todos os três indicadores forem negativos, ele abrirá um cartão vazio.
Além disso, a estratégia também trailing stop loss para bloquear o lucro. A posição de múltiplos pênaltis é definida com base em um percentual de entrada ajustável para parar a perda, o mesmo que a posição de pênaltis em branco.
Uma das principais vantagens dessa estratégia é que ela usa vários derivados como sinais de entrada e saída, o que pode filtrar alguns falsos sinais. Dependendo apenas da velocidade (derivados de grau 1) para decidir a entrada é geralmente muito frágil, mas em combinação com derivados de grau 2, 3 e 4 pode ser construído um sistema mais robusto.
Outra vantagem é que a estratégia é muito flexível. Ela tem vários parâmetros ajustáveis, incluindo o comprimento do HMA, o comprimento de vários derivativos, a porcentagem de parada, etc., que podem ser otimizados para diferentes mercados.
O uso de um stop loss de rastreamento ajustável também é uma vantagem. Isso pode ajudar a estratégia a obter mais lucro em situações de tendência, enquanto a saída oportuna em situações de turbulência limita a retração máxima.
O principal risco dessa estratégia é a diminuição da taxa de acertos causada por surpresas. Se não houver regras de filtragem relevantes, vários condutores podem apresentar sinais errados ao mesmo tempo após grandes surpresas de notícias, resultando em grandes perdas. Alguns filtros de notícias podem ser configurados ou a estratégia pode ser suspensa por um período de tempo após surpresas para reduzir esse risco.
Outro risco é que os parâmetros sejam facilmente sobreajustados. O comprimento do HMA, o comprimento de cada derivado e outros parâmetros podem afetar os resultados. Isso requer o uso de métodos rigorosos de retrospectiva para avaliar a solidez desses parâmetros em diferentes mercados.
A estratégia pode ser otimizada em vários aspectos:
Aumentar o mecanismo de filtragem baseado em eventos surpreendentes e suspender a negociação por um período após um grande evento de notícias para evitar grandes perdas em pontos de entrada errados
Realizar testes de mercado múltiplos dos parâmetros para garantir a sua estabilidade. Pode testar dados de diferentes variedades e períodos de tempo para avaliar a estabilidade dos parâmetros definidos
Tente mudar a lógica de entrada. Pode introduzir algoritmos de aprendizado de máquina para identificar tendências automaticamente, em vez de simples julgamentos positivos e negativos
Métodos de parada melhorados. Pode-se usar parada de taxa de flutuação ou parada de aprendizagem de máquina em vez de um simples percentual de parada de rastreamento
Aumentar a parada de saída. A lógica atual depende principalmente do stop loss, podendo ser adicionado um tracking stop ou uma saída de lucro alvo.
Esta estratégia é uma estratégia de acompanhamento de tendências em várias escalas de tempo. Ela usa vários derivativos da média móvel de Hull como sinais de posição e de posição, usando tracking stop loss para bloquear o lucro. Os principais benefícios são o uso de vários derivativos para filtrar falsos sinais, flexibilidade de parâmetros de estratégia, etc. Os riscos a serem considerados incluem o impacto de surpresas e a facilidade de ajuste de parâmetros.
/*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)