Regras de negociação de caos Estratégia de stop loss


Data de criação: 2023-11-07 16:44:31 última modificação: 2023-11-07 16:44:31
cópia: 0 Cliques: 598
1
focar em
1617
Seguidores

Regras de negociação de caos Estratégia de stop loss

Visão geral

A ideia central desta estratégia é baseada na estratégia RSI, com a adição de algumas regras de gerenciamento de negociação importantes, incluindo stop loss, stop loss, stop loss tracking, e stop loss tracking. Isso permite que a estratégia obtenha maiores ganhos em situações de tendência durante a retrospectiva, enquanto minimiza os perdas em situações de turbulência.

Princípio da estratégia

A estratégia primeiro calcula o indicador RSI, fazendo um plus quando o RSI está abaixo da linha de superabando e um short quando o RSI está acima da linha de superabando.

Depois de fazer vários sinais de disparo, registre o preço mais alto do momento como ponto de referência para o rastreamento do stop loss. Se o preço for inferior ao ponto de parada de rastreamento menos a amplitude de parada, o ponto de parada é o ponto de parada.

Após o disparo do sinal de parada, o preço mais baixo do momento é registrado como um ponto de referência para o seguimento do stop loss. Se o preço for superior ao ponto de parada de rastreamento mais a amplitude do stop loss, a posição de parada é parada.

Se o preço atingir a distância de parada, o preço é encerrado; se atingir a distância de parada, o preço é encerrado.

Além disso, se o preço tocar a linha de parada de tracking de levers, a posição é parada.

Ao rastrear o máximo de parada de preço quando a tendência é alta e o mínimo de parada de preço quando a tendência é baixa, em combinação com a distância de parada de parada fixa, pode-se obter um maior lucro em uma situação de tendência. Ao mesmo tempo, a configuração de parada de parada de tracking de alavancagem pode evitar a expansão dos perdas.

Análise de vantagens

A maior vantagem da estratégia é a introdução de várias regras de gestão de transações, que permitem um melhor controle de risco, enquanto exercem as vantagens da estratégia RSI.

A estratégia tem, especificamente, as seguintes vantagens:

  1. Em um cenário de tendência, o tracking stop loss pode ser usado para acompanhar a tendência de ganho, obtendo assim um maior retorno.

  2. A distância fixa de stop loss pode bloquear parte dos lucros e evitar que todos os lucros sejam presos quando a tendência se inverte.

  3. O Leverage Tracking Stop Loss permite evitar a expansão dos prejuízos e controlar os riscos.

  4. A combinação de várias formas de deter o prejuízo pode exercer suas vantagens em diferentes ambientes de mercado, aumentando a estabilidade da estratégia em geral.

  5. Os parâmetros da estratégia podem ser ajustados de forma flexível para se adaptar a diferentes tipos de negociação e condições de mercado.

  6. A lógica da estratégia é clara e fácil de entender, fácil de verificar, otimizar e aplicar.

Análise de Riscos

Os principais riscos dessa estratégia são:

  1. A estratégia RSI em si tem um certo risco de erro de negociação, podendo ocorrer situações em que o stop loss é acionado. Pode ser otimizado através da adaptação dos parâmetros RSI.

  2. A vibração perto do ponto de parada pode desencadear frequentemente a parada. A distância de parada pode ser aumentada de forma apropriada para evitar.

  3. A distância de parada não é capaz de bloquear completamente o lucro em uma tendência. Pode ser combinado com outros indicadores para determinar o tempo de término da tendência.

  4. A distância de parada fixa pode ser pequena demais para evitar perdas completamente. Pode ser considerado o uso de parada de vibração ou parada dinâmica.

  5. A utilização de uma alavancagem excessiva pode levar a que o tracking de perda de alavancagem fique muito próximo do preço de abertura da posição. A configuração de alavancagem deve ser adequadamente reduzida.

  6. O intervalo de tempo de retrospectiva não pode ser totalmente representativo da situação futura do mercado. O controle de risco deve ser feito e o efeito de diferentes períodos de tempo deve ser verificado.

Os riscos acima podem ser mitigados por meio de ajustes de parâmetros, otimização de mecanismos de parada de perdas e controle de risco. No entanto, nenhuma estratégia pode evitar completamente o risco de mercado.

Direção de otimização

A estratégia pode ser melhorada em várias direções:

  1. Optimizar os parâmetros do RSI e reduzir a probabilidade de erros de negociação.

  2. Tente outros indicadores para determinar o tempo de entrada, como KD, MACD, etc., em combinação com o RSI para formar múltiplos filtros.

  3. Otimização dinâmica dos parâmetros de stop-loss usando métodos como o aprendizado de máquina.

  4. Tente métodos de parada mais complexos, como parada de oscilação, parada de média, parada dinâmica, etc.

  5. Optimizar a configuração dos níveis de alavancagem e o impacto de diferentes alavancagens nos resultados e no controle de risco.

  6. Parâmetros de ajuste automático de acordo com mudanças no ambiente de mercado, como α-Dual Thrust.

  7. Combinado com outros fatores para determinar a continuidade da tendência, como a energia do volume de transação.

  8. Desenvolver métodos de perda mais estáveis e explicáveis usando tecnologias como a aprendizagem profunda.

  9. Testar dados de diferentes variedades e períodos de tempo para avaliar a solidez da estratégia.

Resumir

Esta estratégia baseia-se na estratégia de RSI para aumentar o número de maneiras de parar o prejuízo, exercendo plenamente o duplo papel de parar o prejuízo na tendência de lucro e controle de risco. O espaço de otimização da estratégia ainda é grande, pode começar a aumentar a vantagem da estratégia e reduzir o risco de várias maneiras.

Código-fonte da estratégia
/*backtest
start: 2022-11-06 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Adding some essential components to a prebuilt RSI strategy", overlay=true)

/////////////// Component Code Start ///////////////
testStartYear = input(2011, "Backtest Start Year") 
testStartMonth = input(8, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2016, "Backtest Stop Year")
testStopMonth = input(9, "Backtest Stop Month")
testStopDay = input(29, "Backtest Stop Day")
// testStopDay = testStartDay + 1
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
/////////////// Component Code Stop ///////////////

///////////// RSI component /////////////
length = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
price = close

vrsi = rsi(price, length)
notna = not na(vrsi)

/////////////// STRATEGY ///////////////
ts = input(99999, "Trailing Stop") / 100
tp = input(99999, "Take Profit") / 100
sl = input(99999, "Stop Loss") / 100

long = notna and crossover(vrsi, overSold)
short = notna and crossunder(vrsi, overBought)

last_long = long ? time : nz(last_long[1])
last_short = short ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

last_open_long_signal = long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal = short_signal ? open : nz(last_open_short_signal[1])

last_long_signal = long_signal ? time : nz(last_long_signal[1])
last_short_signal = short_signal ? time : nz(last_short_signal[1])

in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal

last_high = not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low = not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])

long_ts = not na(last_high) and high <= (last_high - ts) //and high >= last_open_long_signal
short_ts = not na(last_low) and low >= (last_low + ts) //and low <= last_open_short_signal

long_tp = high >= (last_open_long_signal + tp)
short_tp = low <= (last_open_short_signal - tp)

long_sl = low <= (last_open_long_signal - sl)
short_sl = high >= (last_open_short_signal + sl)

leverage = input(200, "Leverage")
long_call = last_open_long_signal - (0.8 + 0.2 * (1/leverage)) / leverage * last_open_long_signal
short_call = last_open_short_signal + (0.78 + 0.2 * (1/leverage)) / leverage * last_open_short_signal
long_call_signal = low <= long_call
short_call_signal = high >= short_call

if testPeriod()
    strategy.entry("Long", strategy.long, when=long_signal)
    strategy.entry("Short", strategy.short, when=short_signal)

    // plot(long_call, color=red)
    // plot(short_call, color=green)
    strategy.close("Long", when=long_call_signal)
    strategy.close("Short", when=short_call_signal)
    strategy.close("Long", when=long_tp)
    strategy.close("Short", when=short_tp)
    strategy.close("Long", when=long_sl)
    strategy.close("Short", when=short_sl)
    strategy.close("Long", when=long_ts)
    strategy.close("Short", when=short_ts)