Estratégia quantitativa de stop-loss em movimento de stop-profit duplo e stop-loss duplo


Data de criação: 2024-01-19 15:07:04 última modificação: 2024-01-19 15:07:04
cópia: 3 Cliques: 598
1
focar em
1617
Seguidores

Estratégia quantitativa de stop-loss em movimento de stop-profit duplo e stop-loss duplo

Visão geral

Esta estratégia é uma estratégia de negociação de quantidade de Bitcoin baseada em dois pontos de parada, dois pontos de parada e um ponto de parada móvel. A estratégia usa um cruzamento de EMA e WMA como sinal de entrada, adota uma abordagem de gerenciamento de risco de dois pontos de parada e dois pontos de parada, adota um ponto de parada móvel para garantir uma parte do lucro após o primeiro ponto de parada ser atingido e continua a perseguir mais lucros.

Princípio da estratégia

Quando o EMA usa o WMA de cima para baixo, faz uma entrada extra; quando o EMA usa o WMA de cima para baixo, faz uma entrada em branco.

Em termos de parada, dois pontos de parada são definidos, o primeiro ponto de parada é definido como 20 pontos acima do ponto de entrada, e o segundo ponto de parada é definido como 40 pontos acima do ponto de entrada.

No que diz respeito ao stop loss, também são definidos dois pontos de stop loss, o primeiro ponto de stop loss é definido como 20 pontos abaixo do ponto de entrada, e o segundo ponto de stop loss é definido como o próprio ponto de entrada.

Quando o preço primeiro toca o primeiro ponto de parada, apague 50% da posição e mova o ponto de parada para o ponto de entrada, continuando a buscar o segundo ponto de parada com mais lucro.

A estratégia pode ter três resultados:

  1. O preço toca primeiro o ponto de paralisação, perdendo 2% do capital;
  2. O preço toca primeiro o primeiro ponto de parada e obtém um ganho de 1%, depois toca o segundo ponto de parada e obtém um ganho de 1%.
  3. O preço tocou primeiro o primeiro ponto de parada, obtendo um lucro de 1%, e depois continuou a operar tocando o segundo ponto de parada, obtendo um lucro de 3%.

Análise de vantagens

A maior vantagem dessa estratégia é o sistema de gerenciamento de risco. Com a configuração de um stop-loss duplo, é possível bloquear o lucro com um stop-loss móvel depois de obter uma parte do lucro. Isso pode aumentar significativamente a lucratividade.

Outra vantagem é que a estratégia divide os resultados de uma única negociação em três situações, reduzindo a probabilidade de perda única e tornando o lucro geral mais estável. A estratégia comum tem apenas dois resultados, ou perdendo 2%, ou ganhando mais do que 2%. A estratégia tem três resultados, perdendo 2%, ganhando 1%, e ganhando 3%. Isso também controla melhor o risco de cauda.

Análise de Riscos

O risco desta estratégia vem principalmente da configuração do ponto de parada. A distância de parada é muito relaxada, o que pode levar a perdas individuais excessivas; e a distância de parada é muito estreita, o que pode ser atingido pelo ruído do mercado. Isso requer a configuração de uma distância de parada adequada de acordo com as características e a taxa de flutuação de diferentes variedades.

Outro risco é o risco de perda da parte que ainda detém a posição após o primeiro ponto de parada. Se os prejuízos forem maiores do que os lucros do primeiro ponto de parada, será compensado com parte ou todo o lucro. Isso requer a execução rigorosa do stop loss móvel para bloquear os lucros.

Direção de otimização

A estratégia pode ser melhorada em alguns aspectos:

  1. Teste diferentes combinações de parâmetros para encontrar a configuração de parâmetros ideal. Por exemplo, pode testar 15 pontos, 25 pontos de distância de parada de perda.

  2. Tente outras combinações de indicadores, como KDJ, MACD, etc.

  3. Otimizar a proporção de posições para o primeiro ponto de equilíbrio é 50% adequado ou 30% ou 70% melhor.

  4. Teste as configurações de velocidade de rastreamento do stop loss móvel para garantir que o espaço de perda seja o menor possível, garantindo a lucratividade.

Resumir

Esta estratégia é muito robusta em geral, e pode aumentar significativamente os níveis de lucro e reduzir o risco de cauda através de dois pára-paradas, dois pára-paradas e um pára-paradas móvel. O espaço para otimização também é grande, e um melhor efeito pode ser obtido através de ajustes de parâmetros e combinações de indicadores.

Código-fonte da estratégia
/*backtest
start: 2024-01-11 00:00:00
end: 2024-01-18 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("SL1 Pips after TP1 (MA)", commission_type=strategy.commission.cash_per_order, overlay=true)

// Strategy
Buy  = input(true)
Sell = input(true)

// Date Range
start_year    = input(title='Start year'   ,defval=2020)
start_month   = input(title='Start month'  ,defval=1)
start_day     = input(title='Start day'    ,defval=1)
start_hour    = input(title='Start hour'   ,defval=0)
start_minute  = input(title='Start minute' ,defval=0)
end_time      = input(title='set end time?',defval=false)
end_year      = input(title='end year'     ,defval=2019)
end_month     = input(title='end month'    ,defval=12)
end_day       = input(title='end day'      ,defval=31)
end_hour      = input(title='end hour'     ,defval=23)
end_minute    = input(title='end minute'   ,defval=59)

// MA
ema_period = input(title='EMA period',defval=10)
wma_period = input(title='WMA period',defval=20)
ema        = ema(close,ema_period)
wma        = wma(close,wma_period)

// Entry Condition
buy =
 crossover(ema,wma) and
 nz(strategy.position_size) == 0 and Buy
 
sell =
 crossunder(ema,wma) and
 nz(strategy.position_size) == 0 and Sell

// Pips
pip = input(20)*10*syminfo.mintick

// Trading parameters //
var bool  LS  = na
var bool  SS  = na
var float EP  = na
var float TVL = na
var float TVS = na
var float TSL = na
var float TSS = na
var float TP1 = na
var float TP2 = na
var float SL1 = na
var float SL2 = na

if buy or sell and strategy.position_size == 0
    EP  := close
    SL1 := EP - pip     * (sell?-1:1)
    SL2 := EP - pip     * (sell?-1:1)
    TP1 := EP + pip     * (sell?-1:1)
    TP2 := EP + pip * 2 * (sell?-1:1) 
   
// current trade direction    
LS := buy  or strategy.position_size > 0
SS := sell or strategy.position_size < 0

// adjust trade parameters and trailing stop calculations
TVL := max(TP1,open) - pip[1]
TVS := min(TP1,open) + pip[1]
TSL := open[1] > TSL[1] ? max(TVL,TSL[1]):TVL 
TSS := open[1] < TSS[1] ? min(TVS,TSS[1]):TVS

if LS and high > TP1
    if open <= TP1
        SL2:=min(EP,TSL)
    
if SS and low < TP1
    if open >= TP1
        SL2:=max(EP,TSS)

// Closing conditions
close_long  = LS and open < SL2
close_short = SS and open > SL2

// Buy
strategy.entry("buy"  , strategy.long, when=buy and not SS)
strategy.exit ("exit1", from_entry="buy", stop=SL1, limit=TP1, qty_percent=1)
strategy.exit ("exit2", from_entry="buy", stop=SL2, limit=TP2)

// Sell
strategy.entry("sell" , strategy.short, when=sell and not LS)
strategy.exit ("exit3", from_entry="sell", stop=SL1, limit=TP1, qty_percent=1)
strategy.exit ("exit4", from_entry="sell", stop=SL2, limit=TP2)

// Plots
a=plot(strategy.position_size >  0 ? SL1 : na, color=#dc143c, style=plot.style_linebr)
b=plot(strategy.position_size <  0 ? SL1 : na, color=#dc143c, style=plot.style_linebr) 
c=plot(strategy.position_size >  0 ? TP1 : na, color=#00ced1, style=plot.style_linebr) 
d=plot(strategy.position_size <  0 ? TP1 : na, color=#00ced1, style=plot.style_linebr) 
e=plot(strategy.position_size >  0 ? TP2 : na, color=#00ced1, style=plot.style_linebr) 
f=plot(strategy.position_size <  0 ? TP2 : na, color=#00ced1, style=plot.style_linebr) 
g=plot(strategy.position_size >= 0 ? na  : EP, color=#ffffff, style=plot.style_linebr) 
h=plot(strategy.position_size <= 0 ? na  : EP, color=#ffffff, style=plot.style_linebr) 

plot(ema,title="ema",color=#fff176)
plot(wma,title="wma",color=#00ced1)