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.
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
。
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=14
de ATR, e combinado comatr_stop_factor=1.5
eatr_target_factor=1.0
Como 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_digit
Os 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.
Gerenciamento de fundos através de parâmetrosposition_size
(Posições fixas) erisk
(Percentual de abertura de risco) Realização: Quandouse_mm=true
O 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.
Os riscos podem ser reduzidos através das seguintes medidas:
A estratégia pode ser melhorada em alguns aspectos:
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.
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.
/*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)