Estratégia de negociação de curto prazo com stop loss flexível baseada no indicador estocástico


Data de criação: 2023-09-28 10:45:41 última modificação: 2023-09-28 10:45:41
cópia: 0 Cliques: 679
1
focar em
1617
Seguidores

Visão geral

Esta estratégia é baseada em Stochastic Oscillator Indicador julgar o mercado de sobrecompra sobre venda de estado, em combinação com o princípio de parada de perda de elasticidade para a realização de operações de curto prazo. Fazer mais quando o indicador Stochastic Gold Forks, em branco quando o Dead Forks, ao mesmo tempo, a configuração de parada de elasticidade com base no ponto central do período anterior, ao mesmo tempo de controle de risco para garantir a lucratividade.

Princípio da estratégia

Princípios de admissão

O indicador do oscilador estocástico contém a linha% K e a linha% D. Quando a linha% K atravessa a linha% D de baixo para cima, é um sinal de golden fork, fazendo mais; Quando a linha% K atravessa a linha% D de cima para baixo, é um sinal de dead fork, fazendo vazio. Esta estratégia é julgar o sinal de golden fork dead fork baseado no indicador estocástico.

Especificamente, no Gold Fork do indicador estocástico, se o valor da linha%K for menor que 80 (não sobrecomprado), faz-se mais; no Fork de Morte do indicador estocástico, se o valor da linha%K for maior que 20 (não sobrecomprado), faz-se menos.

GoLong=crossover(k,d) and k<80 
GoShort=crossunder(k,d) and k>20

Princípio de Stop Loss

Esta estratégia usa o método de stop loss elástico, definindo o preço de stop loss com base no ponto central do período anterior, com o seguinte código:

piv_high = pivothigh(high,1,1)
piv_low = pivotlow(low,1,1)

stoploss_long=valuewhen(piv_low,piv_low,0) 
stoploss_short=valuewhen(piv_high,piv_high,0)

Os pontos centrais representam a resistência de suporte importante e, se o preço ultrapassar os pontos centrais, sairá da posição, permitindo que o preço de parada e a coluna de elasticidade sigam as mudanças nos pontos centrais.

Além disso, o preço de stop-loss também leva em consideração o preço mínimo e máximo do período atual, para otimizar ainda mais a posição de stop-loss, como indicado no código a seguir:

if GoLong 
    stoploss_long := low<pl ? low : pl
if GoShort  
    stoploss_short := high>ph ? high : ph   

Vantagens estratégicas

  1. O uso de indicadores estocásticos para determinar o estado de sobrecompra e de sobrevenda do mercado, evitando a perseguição de alta e baixa;

  2. Aplicação do princípio de stop loss flexível, que permite otimizar a posição de stop loss de acordo com as mudanças do mercado;

  3. A combinação de um ponto central com a ruptura de um ponto central permite a realização de uma parada de perda mais eficaz;

  4. Considerando o preço mínimo máximo do momento, otimizar o stop loss para que o stop loss seja mais preciso.

Riscos e soluções

  1. Risco de um indicador estocástico emitir um falso sinal

    • Solução: Verificar em combinação com outros indicadores para evitar erros
  2. Risco de expansão dos prejuízos por ruptura do stop loss

    • Solução: reduzir adequadamente a distância de parada, ou usar a saída de Chandelier para parar
  3. Risco de aumento de taxas de transação devido à frequência das transações

    • Solução: Abertura adequada, redução de transações

Otimização de ideias

  1. Otimização de estratégias de stop loss, como o uso de Chandelier Exit, stop loss móvel, stop loss oscilante, etc.

  2. Optimizar as condições de entrada, em combinação com outros indicadores para evitar falsos sinais de indicadores estocásticos

  3. Otimização de métodos de suspensão, como o uso de suspensão móvel, suspensão de oscilação, etc., para obter maiores taxas de suspensão

  4. Adição de gerenciamento de posições, como quantidade fixa por unidade, proporção de investimento fixa, etc., para controlar o risco individual

  5. Configuração de parâmetros de otimização, como K, D, e ciclos de suavização, para ajustar parâmetros para diferentes mercados

Resumir

Esta estratégia usa o indicador estocástico para julgar a entrada de super-compra e super-venda, e usa o método de parada de perda elástica para gerenciar o risco. A estratégia tem vantagens como evitar a busca de alta e baixa, parada de perda efetiva, mas também existe um certo risco de falso sinal.

Código-fonte da estratégia
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 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/
// © Peter_O

//@version=4
//strategy(title="TradingView Alerts to MT4 MT5 example with cancelling pending orders", commission_type=strategy.commission.cash_per_order, commission_value=0.00003, overlay=true, default_qty_value=100000, initial_capital=1000)

// This script was created for educational purposes only.
// It is showing how to create pending orders and cancel them
// Together with syntax to send these events through TradingView alerts system
// All the way to brokers for execution

TakeProfitLevel=input(400)

// **** Entries logic **** {
periodK = 13 //input(13, title="K", minval=1)
periodD = 3 //input(3, title="D", minval=1)
smoothK = 4 //input(4, title="Smooth", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)
// plot(k, title="%K", color=color.blue)
// plot(d, title="%D", color=color.orange)
// h0 = hline(80)
// h1 = hline(20)
// fill(h0, h1, color=color.purple, transp=75)

GoLong=crossover(k,d) and k<80
GoShort=crossunder(k,d) and k>20
// } End of entries logic

// **** Pivot-points and stop-loss logic **** {
piv_high = pivothigh(high,1,1)
piv_low = pivotlow(low,1,1)
var float stoploss_long=low
var float stoploss_short=high

pl=valuewhen(piv_low,piv_low,0)
ph=valuewhen(piv_high,piv_high,0)

if GoLong 
    stoploss_long := low<pl ? low : pl
if GoShort 
    stoploss_short := high>ph ? high : ph
plot(stoploss_long, color=color.lime, title="stoploss_long")
plot(stoploss_short, color=color.red, title="stoploss_short")
// } End of Pivot-points and stop-loss logic

CancelLong=crossunder(low,stoploss_long) and strategy.position_size[1]<=0 and strategy.position_size<=0
CancelShort=crossover(high,stoploss_short) and strategy.position_size[1]>=0 and strategy.position_size>=0
entry_distance=input(10, title="Entry distance for stop orders")

plotshape(CancelLong ? stoploss_long[1]-10*syminfo.mintick : na, location=location.absolute, style=shape.labelup, color=color.gray, textcolor=color.white, text="cancel\nlong", size=size.tiny)
plotshape(CancelShort ? stoploss_short[1]+10*syminfo.mintick : na, location=location.absolute, style=shape.labeldown, color=color.gray, textcolor=color.white, text="cancel\nshort", size=size.tiny)

strategy.entry("Long", strategy.long, when=GoLong, stop=close+entry_distance*syminfo.mintick)
strategy.exit("XLong", from_entry="Long", stop=stoploss_long, profit=TakeProfitLevel)
strategy.cancel("Long", when = CancelLong)
strategy.entry("Short", strategy.short, when=GoShort, stop=close-entry_distance*syminfo.mintick)
strategy.exit("XShort", from_entry="Short", stop=stoploss_short, profit=TakeProfitLevel)
strategy.cancel("Short", when = CancelShort)

if GoLong
    alertsyntax_golong='long offset=' + tostring(entry_distance) + ' slprice=' + tostring(stoploss_long) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_golong, freq=alert.freq_once_per_bar_close)
if GoShort
    alertsyntax_goshort='short offset=' + tostring(-entry_distance) + ' slprice=' + tostring(stoploss_short) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_goshort, freq=alert.freq_once_per_bar_close)
if CancelLong
    alertsyntax_cancellong='cancel long'
    alert(message=alertsyntax_cancellong, freq=alert.freq_once_per_bar_close)
if CancelShort
    alertsyntax_cancelshort='cancel short'
    alert(message=alertsyntax_cancelshort, freq=alert.freq_once_per_bar_close)