Esta é uma estratégia quantitativa de negociação de Bitcoin baseada em duplo take profit, stop loss duplo e trailing stop loss.
A entrada longa quando a EMA atravessa a WMA de baixo e a entrada curta quando a EMA atravessa a WMA de cima.
No lado do lucro, existem dois objetivos de lucro. O primeiro lucro é definido em 20 pips acima do preço de entrada, e o segundo lucro é definido em 40 pips acima do preço de entrada.
No lado do stop loss, há também dois stop losses. O primeiro stop loss é definido em 20 pips abaixo do preço de entrada, e o segundo stop loss é definido no preço de entrada em si.
Quando o primeiro take profit é acionado, 50% da posição será fechada, e o stop loss será seguido até o preço de entrada para bloquear os lucros, enquanto procura maiores lucros do segundo take profit target.
Como tal, pode haver três resultados possíveis para cada negócio:
A maior vantagem desta estratégia reside em sua metodologia de gerenciamento de risco. Ao definir lucros duplos e perdas duplas, ele pode bloquear lucros parciais depois que o primeiro lucro for alcançado, enquanto continua buscando lucros maiores. Isso pode melhorar significativamente a lucratividade.
Outra vantagem é que, ao dividir uma única negociação em três resultados possíveis, reduz a probabilidade de perda máxima, tornando os retornos globais mais consistentes.
Os principais riscos desta estratégia vêm da configuração de stop loss. Se a distância de stop loss for muito larga, pode resultar em perda de comércio único de tamanho excessivo. Se a distância de stop loss for muito apertada, pode ser interrompida prematuramente por ruídos do mercado. A distância de stop loss adequada precisa ser definida com base nas características e volatilidade de diferentes instrumentos de negociação.
Outro risco é que a posição remanescente após o primeiro take profit ainda carrega riscos de perda. Se a perda subsequente exceder o primeiro take profit, ela compensará partes ou todos os lucros realizados. Isso precisa ser abordado seguindo estritamente o stop loss para proteger os lucros bloqueados.
As seguintes áreas podem ser otimizadas para a estratégia:
Teste diferentes combinações de parâmetros para encontrar parâmetros ideais, como testar 15 pips, 25 pips tomar distâncias de lucro / stop loss.
Tente outras combinações de indicadores técnicos para sinais de entrada, tais como KDJ, cruzamento MACD.
Otimizar a percentagem de posição fechada no primeiro lucro, como 50% pode não ser ideal, 30% ou 70% poderia ter um melhor desempenho potencial.
Teste diferentes configurações para a velocidade de stop loss para equilibrar o bloqueio de lucros e dar aos preços espaço suficiente para flutuar.
Em conclusão, esta é uma estratégia global robusta, que pode melhorar significativamente a lucratividade e reduzir os riscos de cauda através dos mecanismos de duplo take profit, duplo stop loss e trailing stop loss.
/*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)