Retour sur la stratégie de consolidation

Auteur:ChaoZhang est là., Date: 2023-11-03 17:26:53 Je suis désolé
Les étiquettes:

img

Résumé

L'idée principale de cette stratégie est de détecter une consolidation évidente à court terme dans les mouvements des cours des actions, puis de juger de la prochaine direction probable sur la base du schéma de consolidation formé au cours de la phase consolidation, afin de prendre les positions longues ou courtes correspondantes.

La logique de la stratégie

  1. La stratégie utilise l'indicateur de l'oscillateur stochastique pour déterminer si le prix de l'action est entré en consolidation.

  2. Lorsque l'oscillateur stochastique oscille, les changements de direction du chandelier sont utilisés pour détecter les points d'inversion de tendance.

  3. Les objectifs de profit et les arrêts de perte après entrée sont fixés dynamiquement sur la base du prix d'entrée en utilisant des arrêts de suivi.

  4. La stratégie prend en charge à la fois la négociation de positions complètes et partielles.

  5. Les heures de négociation sont également configurées dans la stratégie.

Analyse des avantages

  1. L'oscillateur stochastique identifie avec précision la consolidation des prix à court terme.

  2. La négociation à des points de renversement après la consolidation améliore la précision.

  3. Les arrêts à la traîne bloquent les bénéfices à mesure que le prix se déplace favorablement.

  4. Soutenir la négociation complète et partielle de positions basée sur la préférence de risque.

  5. Les heures de négociation évitent les mauvaises transactions pendant les périodes volatiles.

Analyse des risques

  1. L'oscillateur stochastique est sujet à de faux signaux, à des entrées manquantes ou à des entrées prématurées.

  2. Les inversions de tendance peuvent ne pas être précises pour détecter les changements de tendance.

  3. Les arrêts de traînée sont sujets à des fluctuations de prix.

  4. Le risque est plus élevé avec le trading de positions partielles, les pertes pourraient s'amplifier en cas de renversement.

  5. Les paramètres stop loss et trailing stop doivent être réglés pour différents instruments.

  6. Les événements majeurs peuvent affecter les performances de la stratégie.

Des possibilités d'amélioration

  1. Optimiser les paramètres des oscillateurs stochastiques pour une meilleure détection de la consolidation.

  2. Ajouter des filtres pour confirmer les signaux du chandelier, améliorer la précision.

  3. Améliorer les algorithmes d'arrêt de trail pour un meilleur suivi.

  4. Ajouter des règles de dimensionnement des positions pour limiter les pertes dans les stocks individuels.

  5. Évitez la volatilité due à des événements majeurs en intégrant le calendrier des événements.

  6. Améliorer le modèle de position partielle pour mieux saisir les tendances.

Conclusion

La stratégie de redressement après la consolidation identifie la consolidation à court terme en utilisant l'oscillateur stochastique et les transactions aux points de renversement de tendance après la phase de consolidation. Elle a un taux de gain décent et permet de verrouiller les bénéfices de segment dans les tendances. Cependant, Stochastique est sujette à de faux signaux.


/*backtest
start: 2022-10-27 00:00:00
end: 2023-11-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Cross', overlay=true, initial_capital=1000 )

// Creditos : Cleber.martinelli
////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//                    CALENDARIO                      //
//                                                    //
//                                                    //
////////////////////////////////////////////////////////

//052)
// trading view solicita que se ja informado data para gerar backtest a partir de tal data
//começa backtest do trading sistem em qual data ?

ano = input.int(2022, minval=1, title="Ano")
mes = input.int(1, minval=1, maxval=12, title="Mes")
dia = input.int(1, minval=1, maxval=31, title="Dia")
hora = input.int(1, minval=1, maxval=23, title="hora")
minuto = input.int(0, minval=0, maxval=59, title="minuto")
horaabertura = input.int(10, minval=1, maxval=23, title="hora Inicio Operacao Robo")
minutoabertura = input.int(40, minval=1, maxval=59, title="Minuto Encerra Tudo")
horaencerra = input.int(17, minval=1, maxval=23, title="hora Fechamento")
minutoencerra = input.int(50, minval=1, maxval=59, title="Minuto Encerra Novas Operacoes")
minutofinaliza = input.int(50, minval=1, maxval=59, title="Minuto Encerra Tudo")

//valida se o dia de hoje é posterior ao dia informado acima
Validadia = year >= ano and month >= mes and dayofmonth >= dia

//cria horario de abertura de negociaçao, considerar default 10 hs, pois os indicadores ja estarão corrigidos
abreloja = year >= ano and month >= mes and dayofmonth >= dia and hour >= horaabertura
//and minute >= minutoabertura)

//cria horario de fechamento de todas as negociaçoes, considerar default 17:00 hs
//nenhuma ordem pode ser aberta depois dessa data e as abertas devem ser fechadas
fechaloja = year >= ano and month >= mes and dayofmonth >= dia and hour >= horaencerra
//and minute >= minutoencerra)

fechaloja2 = year >= ano and month >= mes and dayofmonth >= dia and hour >= horaencerra
//and minute >= minutofinaliza)

//valida horario de negociação, pra liberar as operacoes.
lojaaberta = abreloja == true and fechaloja == false and fechaloja2 == false

////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//                 Codigo Operacional                 //
//                                                    //
//                                                    //
////////////////////////////////////////////////////////

// Inputs da Estratégia
pmax = input.int(90, minval=0, maxval=100, title="Estocastico Alvo - Para Short")
pmin = input.int(10, minval=0, maxval=100, title="Estocastico Alvo - Para Buy ")

parcial = input(title="Parcial ? ", defval=true)
p_gain = input.int(150, minval=0, maxval=1000, title="Pontos para Gain ")
p_loss = input.int(150, minval=0, maxval=1000, title="Pontos para Loss")
p_parcial = input.int(50, minval=0, maxval=100, title="Pontos para Parcial ")

// puxando os indicadores que usaremos 
estoc = ta.stoch(close,high,low,5)

if (estoc >=pmax and close < open)
    strategy.entry("Vende", strategy.short ,qty = 2)


if (estoc <=pmax and close > open)
    strategy.entry("Compra", strategy.long ,qty  =  2 )


pm_ativo = strategy.opentrades.entry_price(0)

if strategy.position_size > 0 and parcial// Posicionado na compra 
    if strategy.position_size == 2 // Mão cheia
        if close < pm_ativo - 100
            strategy.exit("Fecha Compra", "Compra", loss=p_loss , qty  =  2 )
        if close > pm_ativo + 50
            strategy.exit("Fecha Compra", "Compra", profit=p_gain , qty  =  1 )
    if strategy.position_size == 1// Mão cheia
        if close < pm_ativo 
            strategy.exit("Fecha Compra", "Compra", loss=0 , qty  =  1 )
        if close > pm_ativo + 100
            strategy.exit("Fecha Compra", "Compra", profit= p_gain * 1.5 , qty  =  1 )    
    
if strategy.position_size < 0 and parcial // Posicionado na Venda 
    if strategy.position_size == -2 // Mão cheia
        if close > pm_ativo - 100
            strategy.exit("Fecha Venda", "Vende", loss=p_loss , qty  =  2 )
        if close < pm_ativo + 50
            strategy.exit("Fecha Venda", "Vende", profit=p_gain , qty  =  1 )
    if strategy.position_size == -1// Mão cheia
        if close > pm_ativo 
            strategy.exit("Fecha Venda", "Vende", loss=0 , qty  =  1 )
        if close < pm_ativo + 100
            strategy.exit("Fecha Venda", "Vende", profit=p_gain*1.5 , qty  =  1 )    
    
if strategy.position_size > 0 and parcial == false // Sem Parcial 
    strategy.exit("Fecha Compra", "Compra", loss=p_loss , profit = p_gain , qty  =  2 )
if strategy.position_size < 0 and parcial == false // Sem Parcial 
    strategy.exit("Fecha Venda", "Vende", loss=p_loss , profit = p_gain , qty  =  2 )





















Plus de