Estratégia de interrupção de oscilação eficiente com duplo stop profit e stop loss

Autora:ChaoZhang, Data: 2024-02-01 14:46:00
Tags:

img

Resumo

Esta é uma estratégia de negociação bidirecional altamente eficiente projetada com base em indicadores de canal e princípios de ruptura.

Estratégia lógica

A estratégia usa indicadores SMA para construir canais. Ele entra em longo quando o preço quebra acima do canal e entra em curto quando os preços quebram abaixo do canal.

Especificamente, a estratégia calcula o trilho superior e inferior do canal. O trilho superior é a SMA de 10 períodos do preço de fechamento multiplicado por 1,02; O trilho inferior é a SMA de 10 períodos do preço mais baixo dividido por 1,02.

Depois de ir longo, dois níveis de take profit são definidos em 1% e 3%, respectivamente, com um stop loss de 3%. O go short tem configurações de lucro / perda semelhantes. Através dos princípios de breakout, a estratégia pode alcançar uma taxa de ganho de entrada relativamente alta; através de lucros duplos, pode bloquear mais lucros; através do stop loss, controla o valor da perda por comércio.

Análise das vantagens

Estratégias de ruptura de canal como esta têm vantagens como sinais de entrada claros, alta frequência de operação, lucro de vários níveis, etc. As principais vantagens são:

  1. Usar indicadores de canal para identificar a faixa de oscilação de preços e escolher pontos de ruptura para entrar pode obter uma taxa de vitória relativamente alta.

  2. Operando em gráfico de 1 minuto para capturar mais oportunidades e atender às necessidades de negociação de velocidade.

  3. Ter dois níveis de lucro permite bloquear mais lucros quando a tendência vai bem.

  4. O stop loss relativamente amplo dá ao movimento do preço algum espaço, evitando o stop loss prematuro.

Análise de riscos

O maior risco com essas estratégias de breakout são falsas breakouts que levam a perdas.

  1. Os sinais de breakout podem ser falsos e não alcançarem o take profit ou stop loss.

  2. O limiar de stop loss de 3% pode ser difícil para alguns traders suportar.

  3. Esta estratégia é mais adequada para negociações de curto prazo e necessita de monitorização.

Orientações de otimização

Estratégias de ruptura de tendência como esta podem otimizar principalmente nos seguintes aspectos:

  1. Teste mais indicadores para construir canais e encontre outros mais confiáveis para reduzir falhas.

  2. Otimizar a regulação dos parâmetros da média móvel, descobrir as melhores combinações de parâmetros.

  3. Teste mecanismos de entrada mais complexos, como adicionar filtros de volume, etc.

  4. Estabelecer combinações de parâmetros adaptáveis às diferentes características dos produtos para obter a autoadaptação dos parâmetros.

  5. Adicionar mecanismos de stop loss automático que ajustam dinamicamente a stop loss ao longo do tempo.

Conclusão

Esta é uma estratégia de negociação de duas direções eficiente construída sobre indicadores de canal. Ele entra nos mercados através de princípios de breakout, duplo lucro para bloquear as recompensas, stop loss para controlar os riscos.


/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Erweiterte SSL Channel Strategy mit 2 TPs, SL und BE", overlay=true)

period = input(title="Period", defval=10)
len = input(title="Length", defval=10)
multiplier = input(title="Multiplier", defval=1.0, minval=1.0)
tp1Percent = input(title="Take Profit 1 (%)", defval=1.0) / 100
tp2Percent = input(title="Take Profit 2 (%)", defval=20.0) / 100
slPercent = input(title="Stop Loss (%)", defval=3.0) / 100

var float tp1Price = na
var float tp2Price = na
var float slPrice = na
var bool tp1Reached = false

smaHigh = sma(high * multiplier, len)
smaLow = sma(low / multiplier, len)

Hlv = 0
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : nz(Hlv[1])
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh

plot(sslDown, linewidth=2, color=color.red)
plot(sslUp, linewidth=2, color=color.lime)

longCondition = crossover(close, sslUp)
shortCondition = crossunder(close, sslDown)

if (longCondition)
    strategy.entry("Long", strategy.long)
    tp1Price := strategy.position_avg_price * (1 + tp1Percent)
    tp2Price := strategy.position_avg_price * (1 + tp2Percent)
    slPrice := strategy.position_avg_price * (1 - slPercent)
    tp1Reached := false

if (shortCondition)
    strategy.entry("Short", strategy.short)
    tp1Price := strategy.position_avg_price * (1 - tp1Percent)
    tp2Price := strategy.position_avg_price * (1 - tp2Percent)
    slPrice := strategy.position_avg_price * (1 + slPercent)
    tp1Reached := false

// Take Profit, Break-even und Stop-Loss Logik
if (strategy.position_size > 0) // Long-Positionen
    if (not tp1Reached and close >= tp1Price)
        strategy.close("Long", qty_percent = 50)
        strategy.exit("BE Long", "Long", stop = strategy.position_avg_price)
        tp1Reached := true
    if (tp1Reached and close < tp1Price)
        strategy.exit("BE Long", "Long", stop = strategy.position_avg_price)
    if (close >= tp2Price)
        strategy.close("Long", qty_percent = 100)
    if (not tp1Reached)
        strategy.exit("SL Long", "Long", stop = slPrice)

if (strategy.position_size < 0) // Short-Positionen
    if (not tp1Reached and close <= tp1Price)
        strategy.close("Short", qty_percent = 50)
        strategy.exit("BE Short", "Short", stop = strategy.position_avg_price)
        tp1Reached := true
    if (tp1Reached and close > tp1Price)
        strategy.exit("BE Short", "Short", stop = strategy.position_avg_price)
    if (close <= tp2Price)
        strategy.close("Short", qty_percent = 100)
    if (not tp1Reached)
        strategy.exit("SL Short", "Short", stop = slPrice)


Mais.