Estratégia de knock-in de momentum adaptável de stop loss dinâmico com flutuação de ATR


Data de criação: 2023-10-09 15:30:29 última modificação: 2023-10-09 15:30:29
cópia: 0 Cliques: 628
1
focar em
1617
Seguidores

Visão geral

A estratégia combina o K-valor do indicador aleatório do indicador de momentum e o ATR do indicador de volatilidade, ajustando dinamicamente a linha de parada e a linha de entrada do K-valor de acordo com o valor do ATR, realizando a idéia de ajustar automaticamente a linha de parada e a linha de entrada de acordo com a volatilidade do mercado.

Princípio da estratégia

  1. Calcula-se o K-valor de comprimento de len (sma ((stoch ((close, high, low, len), smoothK), representando o K-valor do indicador aleatório ≠

  2. Calcule o valor de ATR para o comprimento de lénatr ((len) ∈

  3. Plot de linha de parada ((rsi ((atr, len) + lowLine, …, title = “low line”) e plot de linha de entrada ((rsi ((atr, len) com base no valor do ATR*-1+100-lowLine, …, title = “up line”)。

  4. Determine quando os valores de K atravessam a linha de entrada (crossover) e a linha de parada (crossunder), gerando sinais de compra e venda.

  5. Cores de fundo de compras e vendas.

  6. Quando os sinais acima são satisfeitos, faça uma operação de compra e venda e defina um stop loss.

Análise de vantagens estratégicas

  1. A estratégia ajusta dinamicamente as linhas de stop e entrada de acordo com a volatilidade do ATR do mercado e pode se adaptar automaticamente ao risco de stop de acordo com a volatilidade do mercado.

  2. Quando o mercado está muito flutuante, o intervalo entre a linha de parada e a linha de entrada é maior para evitar que a parada seja sacudida.

  3. Quando o mercado está em silêncio, a distância entre a linha de parada e a linha de entrada é reduzida, permitindo uma parada atempada.

  4. O K-valor do indicador de dinâmica é usado para determinar entradas e saídas. O K-valor pode reagir à velocidade da mudança de preço e pode capturar pontos de inflexão.

  5. A combinação de um indicador de volume dinâmico e um indicador de taxa de flutuação permite capturar tendências e ajustar automaticamente o risco de acordo com as flutuações.

Análise de risco estratégico

  1. Os valores de K são propensos a falsas rupturas, que podem desencadear sinais de negociação desnecessários. O parâmetro de K pode ser ajustado de forma apropriada para suavizar a linha de K.

  2. O parâmetro ATR len é muito grande, o intervalo entre a linha de parada e a linha de entrada é muito grande e o risco pode ser muito alto. A estabilidade de diferentes parâmetros de len pode ser testada.

  3. O simples acompanhamento do stop loss não permite determinar se a posição de stop loss é razoável e não permite controlar o risco de stop loss único. Pode-se considerar o risco de stop loss único em combinação com o algoritmo de stop loss esperado.

  4. Os sinais de estratégia são frequentes e as taxas de transação são altas. O parâmetro de entrada lowLine pode ser ajustado adequadamente para controlar a frequência de transação.

Direção de otimização da estratégia

  1. Teste para ajustar o parâmetro de K-valor para smoothK e encontrar a combinação de parâmetros ótima para smoothK.

  2. Teste os diferentes valores do parâmetro ATR len para determinar o parâmetro ATR apropriado.

  3. Optimizar o parâmetro de entrada lowLine para encontrar o parâmetro ideal para controlar a frequência de negociação.

  4. Considere a combinação de outros indicadores para filtrar os sinais de entrada e evitar falsas brechas, como o indicador de volume de transação, o indicador de KDJ, etc.

  5. Considere otimizar a forma de parar os prejuízos, melhorando a forma de parar os prejuízos esperados e controlando o risco de parar os prejuízos.

Resumir

A estratégia baseada no K-valor do indicador de dinâmica e no ATR do indicador de volatilidade, que permite ajustar dinamicamente a linha de parada e a linha de entrada, pode capturar a tendência e ajustar automaticamente o risco de acordo com a flutuação, é uma estratégia muito inovadora e prática. Otimização adicional por meio de otimização de parâmetros, melhoria do método de parada, etc., pode tornar a estratégia mais estável e confiável, com uma excelente perspectiva de desenvolvimento.

Código-fonte da estratégia
/*backtest
start: 2023-09-08 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Stoch + ATR", overlay=false, pyramiding = 0, calc_on_order_fills = false, commission_type =  strategy.commission.percent, commission_value = 0.0454, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

len = input(34, minval=1, title="Length for Main Stochastic & ATR") 
smoothK = input(2, minval=1, title="SmoothK for Main Stochastic")
lowLine = input(10, minval=-50, maxval=50, title="Multiplier for up/low lines")

//Stoch formula
k = sma(stoch(close, high, low, len), smoothK)
plot(k, color=aqua, title = "Stoch")

//len=input
atr=atr(len)
plot(rsi(atr, len)+lowLine , color=red,linewidth=2, title = "low line")
plot(rsi(atr, len)*-1+100-lowLine, color=lime,linewidth=2, title = "up line")

aboveLine = crossunder(k,(rsi(atr, len)+lowLine))? 1 : 0
belowLine = crossover(k,(rsi(atr, len)*-1+100-lowLine))? 1 : 0

aboveLine2 = crossover(k,(rsi(atr, len)+lowLine))? 1 : 0
belowLine2 = crossunder(k,(rsi(atr, len)*-1+100-lowLine))? 1 : 0

skip=(aboveLine2==1 or belowLine2==1) and (aboveLine==1 or belowLine==1)? 1 : 0

//BackGroound Color Plots
plotchar(belowLine==1 and skip==0, title="Buy Signal", char='B', location=location.bottom, color=white, transp=0, offset=0)
plotchar(aboveLine==1 and skip==0, title="Sell Signal", char='S', location=location.top, color=white, transp=0, offset=0)
plotchar(belowLine2==1 and skip==0, title="Close Signal", char='C', location=location.bottom, color=white, transp=0, offset=0)
plotchar(aboveLine2==1 and skip==0, title="Close Signal", char='C', location=location.top, color=white, transp=0, offset=0)

bgcolor(aboveLine==1 ? red : na, transp=30, title = "sell signal")
bgcolor(belowLine==1 ? lime : na, transp=30, title = "buy signal")

bgcolor(aboveLine2==1 ? lime : na, transp=80, title = "close short")
bgcolor(belowLine2==1 ? red : na, transp=80, title = "close long")

bgcolor(skip==1 ? black : na, transp=0, title = "skip signal")

//strategy
longCondition = belowLine==1
shortCondition = aboveLine==1

strategy.entry("BUY", strategy.long, when = longCondition)
strategy.entry("SELL", strategy.short, when = shortCondition)
strategy.cancel_all(when = skip==1)