Stratégie de trading à grille fixe


Date de création: 2023-11-16 17:09:45 Dernière modification: 2023-11-16 17:09:45
Copier: 0 Nombre de clics: 851
1
Suivre
1617
Abonnés

Stratégie de trading à grille fixe

Aperçu

Cette stratégie utilise une méthode de négociation à grille fixe, en définissant le rapport entre le prix de départ et l’espacement de chaque grille, puis en définissant 10 niveaux de prix d’achat et de vente fixes en fonction de ce rapport, pour réaliser une stratégie de négociation à grille basse et haute vente.

Principe de stratégie

La stratégie commence par définir le prix de départ sprice et la proportion de la grille de l’espace par niveau gridpercent. Ensuite, les prix d’achat et de vente des 10 niveaux sont calculés en fonction du prix de départ et de la proportion.

La formule du prix d’achat:

b1=sprice-(sprice*p1)

b2=sprice-(sprice*p2)

b3=sprice-(sprice*p3)

p1 à p10 est le rapport calculé par couche de gridpercent.

La formule du prix à vendre:

s1=b1+(sprice*p1)

s2=b2+(sprice*p1)

s3=b3+(sprice*p1)

Les conditions d’achat sont déclenchées lorsque le prix de clôture est inférieur au prix d’achat correspondant:

if (close

strategy.entry(“b1”, strategy.long, when=(close

De même, une vente est déclenchée lorsque le prix de clôture est supérieur au prix de vente correspondant:

if (close>s1)

strategy.exit(“b1”, when=(close>s1))

La stratégie de la grille fixe de bas prix-haut prix est ainsi mise en œuvre.

Avantages stratégiques

Cette stratégie de grille fixe présente les avantages suivants:

  1. Il est possible d’acheter et de vendre automatiquement, sans avoir besoin de timing, ce qui réduit la difficulté des transactions.

  2. La mise en place d’un espacement raisonnable entre les grilles permet de contrôler efficacement le risque et d’éviter les chutes de chasse.

  3. Il est possible de réaliser des bénéfices, que le marché soit en hausse ou en baisse.

  4. Il est possible d’adapter les paramètres de la grille aux différentes conditions du marché.

  5. Il est possible d’augmenter la taille de la position en augmentant le nombre de niveaux de grille.

  6. Il est possible d’éviter des pertes massives en cas d’extrême situation, en combinant avec des arrêts de perte.

Risque stratégique

Cette stratégie comporte aussi des risques:

  1. Les frais de transaction peuvent réduire les bénéfices en cas de défaillance.

  2. Le prix de départ et la configuration de la grille ne sont pas à l’heure et sont susceptibles de faire des pertes.

  3. Les événements imprévus peuvent entraîner des pertes si les prix sont élevés ou baissés.

  4. Les systèmes d’échange automatisés présentent un risque d’enchevêtrement.

  5. Les pertes ont augmenté à la suite d’une série d’incidents.

Les solutions sont les suivantes:

  1. Les paramètres de la grille sont raisonnablement définis pour garantir que les bénéfices sont supérieurs aux frais de transaction.

  2. Les paramètres d’optimisation sont mesurés en arrière-plan pour définir un prix de départ et une distance de grille appropriés.

  3. Augmenter le stop-loss pour contrôler le risque.

  4. Le prix de transaction doit être correctement assoupli pour éviter les files d’attente.

  5. Les contrôles de risque sont mis en place pour limiter les pertes.

Optimisation de la stratégie

Cette stratégie peut être optimisée dans les directions suivantes:

  1. Ajustez dynamiquement l’espacement de la grille, agrandissez l’espacement et réduisez l’espacement lorsque les ondes augmentent.

  2. Le prix de départ est ajusté dynamiquement en fonction de la marge de fluctuation calculée sur la base des données historiques.

  3. Les modèles d’apprentissage automatique sont ajoutés pour prédire les mouvements de prix et modifier la grille de manière dynamique.

  4. Ajouter un stop à un point de risque élevé et optimiser la position de stop en observant le point de stop historique.

  5. En combinaison avec une stratégie de gestion de fonds, ajuster dynamiquement les positions en fonction de la situation des bénéfices.

  6. Optimiser la gestion des positions et maximiser l’efficacité de l’utilisation des fonds.

  7. Optimiser l’exécution des transactions et réduire les coûts d’impact grâce à des algorithmes tels que TWAP.

Résumer

Cette stratégie utilise la méthode de négociation à grille fixe, en fonction du prix de départ et de l’intervalle entre les grilles, pour régler les prix d’achat et de vente, pour réaliser des transactions à bas prix et à bas prix automatisées, pour tirer parti des fluctuations du marché. Il convient également de prêter attention au contrôle des risques, de bloquer les bénéfices et de contrôler les pertes grâce à l’optimisation des paramètres, à l’ajustement dynamique et à la suspension.

Code source de la stratégie
/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
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/
// © Lionkind

//@version=5
strategy("Grid HW", overlay = true, margin_long = 1, margin_short = 1)

// Fix 35k price as starting point and 1% as a distance

sprice=input(40500,"Starting price")
gridpercent=input(1,"Percent")

// calculate the % of the 10 layers 

p1=((gridpercent*1)/100)
p2=((gridpercent*2)/100)
p3=((gridpercent*3)/100)
p4=((gridpercent*4)/100)
p5=((gridpercent*5)/100)
p6=((gridpercent*6)/100)
p7=((gridpercent*7)/100)
p8=((gridpercent*8)/100)
p9=((gridpercent*9)/100)
p10=((gridpercent*10)/100)

//set buy prices 

b1=sprice-(sprice*p1)
b2=sprice-(sprice*p2)
b3=sprice-(sprice*p3)
b4=sprice-(sprice*p4)
b5=sprice-(sprice*p5)
b6=sprice-(sprice*p6)
b7=sprice-(sprice*p7)
b8=sprice-(sprice*p8)
b9=sprice-(sprice*p9)
b10=sprice-(sprice*p10)

//set sell prices

s1=b1+(sprice*p1)
s2=b2+(sprice*p1)
s3=b3+(sprice*p1)
s4=b4+(sprice*p1)
s5=b5+(sprice*p1)
s6=b6+(sprice*p1)
s7=b7+(sprice*p1)
s8=b8+(sprice*p1)
s9=b9+(sprice*p1)
s10=b10+(sprice*p1)

//Long conditions

lc1=close<b1
lc2=close<b2
lc3=close<b3
lc4=close<b4
lc5=close<b5
lc6=close<b6
lc7=close<b7
lc8=close<b8
lc9=close<b9
lc10=close<b10

//exit conditions
ec1=close>s1
ec2=close>s2
ec3=close>s3
ec4=close>s4
ec5=close>s5
ec6=close>s6
ec7=close>s7
ec8=close>s8
ec9=close>s9
ec10=close>s10

//long orders
if (lc1)
    strategy.entry("b1", strategy.long, when=(lc1))
    
if (lc2)
    strategy.entry("b2", strategy.long, when=(lc2))
    
if (lc3)
    strategy.entry("b3", strategy.long, when=(lc3))    
if (lc4)
    strategy.entry("b4", strategy.long, when=(lc4))    
if (lc5)
    strategy.entry("b5", strategy.long, when=(lc5))
if (lc6)
    strategy.entry("b6", strategy.long, when=(lc6))
if (lc7)
    strategy.entry("b7", strategy.long, when=(lc7))    
if (lc8)
    strategy.entry("b8", strategy.long, when=(lc8))    
if (lc9)
    strategy.entry("b9", strategy.long, when=(lc9))    
if (lc10)
    strategy.entry("b10", strategy.long, when=(lc10))
    
//exit orders   
if (ec1)
    strategy.exit("b1", when=(ec1), limit=1)
if (ec2)
    strategy.exit("b2", when=(ec2), limit=1)
if (ec3)
    strategy.exit("b3", when=(ec3), limit=1)
if (ec4)
    strategy.exit("b4", when=(ec4), limit=1)
if (ec5)
    strategy.exit("b5", when=(ec5), limit=1)
if (ec6)
    strategy.exit("b6", when=(ec6), limit=1)
if (ec7)
    strategy.exit("b7", when=(ec7), limit=1)
if (ec8)
    strategy.exit("b8", when=(ec8), limit=1)
if (ec9)
    strategy.exit("b9", when=(ec9), limit=1)
if (ec10)
    strategy.exit("b10", when=(ec10), limit=1)
    

plot(b1,color=color.green)
plot(s1, color=color.red)
plot(b2, color=color.purple)