Estratégia de backtesting de canal SSL baseada em ATR e gerenciamento de dinheiro


Data de criação: 2023-11-23 10:26:58 última modificação: 2023-11-23 10:26:58
cópia: 0 Cliques: 425
1
focar em
1166
Seguidores

Estratégia de backtesting de canal SSL baseada em ATR e gerenciamento de dinheiro

Visão geral

Esta estratégia é uma estratégia de feedback baseada nos indicadores do canal SSL, combinando funções como stop loss ATR, stop stop ATR e gerenciamento de fundos para testar a eficácia da estratégia do canal SSL de forma mais abrangente.

Princípio da estratégia

Indicadores de passagem SSL

O indicador de canal SSL é composto por uma linha média de canal e uma faixa de canal. A linha média de canal é uma média móvel simples, dividida em uma linha superior e uma linha inferior, geralmente tomando uma média móvel simples durante o ponto alto como uma linha superior e uma média móvel simples durante o ponto baixo como uma linha inferior. A faixa de canal é composta pela área entre a linha superior e a linha inferior.

Quando o preço se aproxima da trajetória superior do canal, é considerado um super-compra, e quando o preço se aproxima da trajetória inferior do canal, é considerado um super-venda. Quando o preço quebra a faixa do canal, indica um sinal de mudança de tendência.

Os parâmetros do indicador de passagem SSL nesta política são:ssl_period=16

ATR paragem

O ATR refere-se à amplitude real média. Pode ser usado para avaliar a volatilidade do mercado e determinar a posição de stop loss.

Esta política usa parâmetrosatr_period=14de ATR, e combinado comatr_stop_factor=1.5eatr_target_factor=1.0Como um múltiplo dinâmico de stop loss e stop loss, o stop loss baseado na volatilidade do mercado é realizado.

Além disso, para se adaptar a diferentes variedades, esta estratégia foi adicionada.two_digitOs parâmetros de julgamento de contratos de variedades com precisão de 2 bits (como o ouro, o iene) permitem o ajuste flexível do ponto de parada de perda.

Gestão de fundos

Gerenciamento de fundos através de parâmetrosposition_size(Posições fixas) erisk(Percentual de abertura de risco) Realização: Quandouse_mm=trueO módulo de gestão de fundos será ativado.

O principal objetivo do gerenciamento de fundos é controlar o tamanho da posição em cada posição aberta. Quando o modelo de risco de porcentagem fixa é adotado, a abertura de risco é calculada de acordo com os direitos e interesses da conta e convertida em número de contratos, de modo a obter o efeito de supressão de perdas individuais.

Análise de vantagens

  • O uso de um canal SSL para determinar a direção da tendência tem um certo efeito na captura de conversões de tendência
  • Aplicação de ATR computação dinâmica de stop loss para se adaptar à volatilidade do mercado
  • A utilização de princípios de gestão de fundos ajuda a controlar o risco a longo prazo

Análise de Riscos

  • O canal SSL, apesar de ser capaz de determinar a reversão de tendência, não é 100% confiável e pode apresentar sinais errados.
  • O ATR segue a volatilidade do mercado com um stop loss que pode ser muito flexível ou muito rígido
  • Parâmetros de gestão de capital mal definidos também podem levar a posições excessivas ou ineficientes

Os riscos podem ser reduzidos através das seguintes medidas:

  1. Confirmação em combinação com outros indicadores para evitar sinais errados
  2. Ajuste adequadamente os parâmetros do ciclo ATR para que o nível de parada de perda atinja o melhor equilíbrio
  3. Testar diferentes parâmetros de gestão de fundos para encontrar a melhor posição

Direção de otimização

A estratégia pode ser melhorada em alguns aspectos:

  1. Optimizar os parâmetros do canal SSL para encontrar a melhor combinação de parâmetros
  2. Otimizar ou substituir o mecanismo de parada de dano do ATR para torná-lo mais completo
  3. Adicionar outros indicadores de filtragem para evitar transações desnecessárias
  4. Adição de módulos de controle de posição para maximizar perdas e ganhos
  5. Ajustes de parâmetros para diferentes variedades para melhorar a adaptabilidade da estratégia
  6. Adição de ferramentas de quantificação para um feedback e otimização mais abrangentes

Através do teste e otimização do sistema, esta estratégia pode ser transformada em um sistema de transação quantitativa confiável e estável.

Resumir

Esta estratégia integra três mecanismos para julgar a tendência do indicador do canal SSL, o ATR define o stop loss e o controle de risco do gerenciamento de fundos. A eficácia da estratégia pode ser testada através de um feedback abrangente e pode ser usada como estrutura básica para otimizar a estratégia de negociação quantitativa.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © comiclysm

//@version=4
strategy("SSL Backtester", overlay=false)

//--This strategy will simply test the effectiveness of the SSL using
//--money management and an ATR-derived stop loss

//--USER INPUTS

two_digit = input(false, "Check this for 2-digit pairs (JPY, Gold, Etc)")
ssl_period = input(16, "SSL Period")
atr_period = input(14, "ATR Period")
atr_stop_factor = input(1.5, "ATR Stop Loss Factor")
atr_target_factor = input(1.0, "ATR Target Factor")
use_mm = input(true, "Check this to use Money Management")
position_size = input(1000, "Position size (for Fixed Risk)")
risk = input(0.01, "Risk % in Decimal Form")

//--INDICATORS------------------------------------------------------------

    //--SSL
    
sma_high = sma(high, ssl_period)
sma_low = sma(low, ssl_period)
ssl_value = 0
ssl_value := close > sma_high ? 1 : close < sma_low ? -1 : ssl_value[1]
ssl_low = ssl_value < 0 ? sma_high : sma_low
ssl_high = ssl_value < 0 ? sma_low : sma_high

    //--Average True Range
    
atr = atr(atr_period)

//--TRADE LOGIC----------------------------------------------------------

signal_long = ssl_value > 0 and ssl_value[1] < 0
signal_short = ssl_value < 0 and ssl_value[1] > 0

//--RISK MANAGMENT-------------------------------------------------------
strategy.initial_capital = 50000
balance = strategy.netprofit + strategy.initial_capital
risk_pips = atr*10000*atr_stop_factor
if(two_digit)
    risk_pips := risk_pips / 100
risk_in_value = balance * risk
point_value = syminfo.pointvalue
risk_lots = risk_in_value / point_value / risk_pips
final_risk = use_mm ? risk_lots * 10000 : position_size

//--TRADE EXECUTION-----------------------------------------------------

if (signal_long)
    stop_loss = close - atr * atr_stop_factor
    target = close + atr * atr_target_factor
    strategy.entry("Long", strategy.long, final_risk)
    strategy.exit("X", "Long", stop=stop_loss, limit=target)
if (signal_short)
    stop_loss = close + atr * atr_stop_factor
    target = close - atr * atr_target_factor
    strategy.entry("Short", strategy.short, final_risk)
    strategy.exit("X", "Short", stop=stop_loss, limit=target)
    
//--PLOTTING-----------------------------------------------------------

plot(ssl_low, "SSL", color.red, linewidth=1)
plot(ssl_high, "SSL", color.lime, linewidth=1)