Stratégie de suivi des numéros ronds

Auteur:ChaoZhang est là., Date: 21 septembre 2023 à 15h24
Les étiquettes:

Résumé

Cette stratégie est basée sur l'idée que les niveaux stop loss et take profit sont souvent placés à des niveaux de prix ronds ou clés, qui agissent comme support et résistance.

La logique de la stratégie

Les règles principales de cette stratégie sont les suivantes:

  1. Lorsque le prix de clôture est au-dessus d'un niveau de prix clé et n'a pas atteint ce niveau au cours des 10 dernières barres, passez long.

  2. Utilisez un arrêt de trailing avec une étape de 20 points pour suivre le mouvement après que le prix ait franchi le niveau clé.

  3. Les signaux de vente sont l'inverse - lorsque la clôture est inférieure au niveau clé et n'a pas été touchée au cours des 10 dernières barres, allez court.

  4. Les niveaux clés sont les suivants:

    • Convertir le prix de clôture en entier
    • Calculer le résidu de la division par 50 (configurable)
    • Si le résidu est supérieur à 25, utiliser le nombre entier 50 suivant comme niveau clé
    • Dans le cas contraire, maintenir le niveau de clé inchangé

La stratégie est basée sur la psychologie selon laquelle les nombres ronds et les niveaux clés sont souvent des champs de bataille pour les taureaux et les ours, et fournissent ainsi des signaux commerciaux efficaces.

Les avantages

Les avantages de cette stratégie sont les suivants:

  1. Des signaux commerciaux simples et intuitifs et des règles d'entrée.
  2. Utilise un modèle universel de prix clés plutôt que des règles spécifiques à l'instrument.
  3. Le trailing stop bloque les bénéfices tout en suivant la tendance.

Les risques

Les risques à prendre en considération sont les suivants:

  1. Les niveaux clés peuvent ne pas toujours agir comme un support/résistance fort.
  2. Le lookback fixe de 10 bar peut ne pas convenir à différents instruments.
  3. La distance d'arrêt de traîneau ne doit pas être trop large, sinon il peut s'arrêter prématurément.

Des solutions possibles:

  1. Ajouter plus de filtres pour évaluer la résistance des niveaux clés, par exemple le volume.
  2. Optimiser les paramètres tels que la période de rétrospective pour différents instruments.
  3. Optimiser le mécanisme d'arrêt pour être plus adaptable.

Des possibilités d'amélioration

La stratégie peut être améliorée par:

  1. Ajout d'autres conditions pour confirmer l'importance des niveaux clés et éviter les contrefaçons.

  2. Optimisation des paramètres tels que la plage de niveaux clés et la période de rétrospective en fonction des caractéristiques de l'instrument.

  3. Amélioration du mécanisme d'arrêt du trail, par exemple en utilisant une piste dynamique au lieu d'une piste à point fixe.

  4. Incorporer l'apprentissage automatique pour évaluer la force des niveaux clés à l'aide de données historiques.

  5. Élargissement vers un système multi-temps avec une tendance TF plus élevée et un suivi TF inférieur.

Conclusion

Cette stratégie offre des signaux simples et intuitifs basés sur les niveaux de prix clés et les conventions de trading. Elle offre de nombreuses opportunités mais a besoin d'une optimisation supplémentaire pour gérer les faux-fuits.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Strategy based on the idea that stop loss and take profit are often placed at full price levels or round numbers, whcih acts as resistance and supports levels
//Buy Rules:
//Actual price (close) is above round number.
//Round number level was not touched in previous ten bars (arbitrary value).
//Place a buy and follow the order with a trail step because price can bounce at round number (support) or can go through it.
//Sell Rules are the same of buy rules but inverted.
//
//Need improvement on conditions' logic and round numbers definitions


strategy("dP magnet", overlay=true, pyramiding=0,default_qty_type=strategy.percent_of_equity,default_qty_value=100,currency=currency.USD)

//Round Levels credit to RKchartest

roundLevel50 = input(500, 'Round Level 1, pips')
//roundLevel100 = input(1000, 'Round Level 2, pips')
deviation = input(1000, 'Max distance, pips', minval=0) 

rDelimeter = 1/syminfo.mintick

intRoundLevel = close[1] * rDelimeter

intRemainder = intRoundLevel % roundLevel50 
toRound = (intRemainder >= roundLevel50/2) ? roundLevel50 : 0
roundLevel = (intRoundLevel - intRemainder + toRound) / rDelimeter
plot(roundLevel, title='Round Level 1', color=black, style=line, transp=0, linewidth=1, trackprice=false)

//intRemainder2 = intRoundLevel % roundLevel100
//toRound2 = (intRemainder2 >= roundLevel100/2) ? roundLevel100 : 0
//roundLevel2 = (intRoundLevel - intRemainder2 + toRound2) / rDelimeter
//plot((abs(roundLevel2 - close) * rDelimeter < deviation) ? roundLevel2 : na, title='Round Level 2', color=black, style=circles, transp=0, linewidth=1, trackprice=true)

// end

//Start of strategy

distToFullNumber=(close-roundLevel) //can be positive or negative number

distPips=input(100,'Distance in pips to full level',minval=10) //user defined: this distance defines when to open an order at market price


TrailS=input(20,'Trail Step points',minval=10) //trail step that follows the order

longCondition = iff(distToFullNumber>0 and abs(distToFullNumber)<=distPips and lowest(low,10)>roundLevel,true,false)

if (longCondition)
    strategy.entry("LongMagnet", strategy.long)
    strategy.exit("ExitMagnet","LongMagnet",trail_points=TrailS)

shortCondition = iff(distToFullNumber<0 and abs(distToFullNumber)<=distPips and highest(high,10)<roundLevel,true,false)

if (shortCondition)
    strategy.entry("ShortMagnet", strategy.short)
    strategy.exit("Exit_Magnet","ShortMagnet",trail_points=TrailS)
    

Plus de