Stratégie de négociation de réseau fixe

Auteur:ChaoZhang est là., Date: 2023-11-16 17h09h45
Les étiquettes:

img

Résumé

Cette stratégie adopte une approche de négociation de réseau fixe en fixant le prix de départ et le pourcentage entre chaque couche de réseau.

La logique de la stratégie

La stratégie fixe d'abord le prix de départ et le pourcentage de la distance du réseau.Elle calcule ensuite 10 niveaux de prix d'achat et de vente basés sur le prix de départ et le pourcentage.

Formule du prix d'achat:

b1 = coût-excédent*p1)

b2=prix-(prix*p2)

b3=prix-(prix*p3)

où p1~p10 sont des pourcentages calculés couche par couche sur la base du pourcentage de grille.

Formule du prix de vente:

S1 = b1+(prix*p1)

S2 = b2 + ((prix*p1)

s3=b3+(prix*p1)

La condition d'achat est déclenchée lorsque le prix de clôture est inférieur au prix d'achat:

si (près de < b1)

stratégie.entrée ((b1, stratégie.long, lorsque=(close

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

si (close>s1)

strategy.exit("b1", lorsque=(close>s1))

Cela met en œuvre la stratégie de négociation de réseaux à faible prix d'achat et à forte valeur de vente.

Les avantages

La stratégie du réseau fixe présente les avantages suivants:

  1. Il obtient un prix bas-achat-haut-vente sans timing du marché, réduit la difficulté de négociation.

  2. En réglant la bonne distance de la grille, on contrôle efficacement les risques et on évite les poursuites.

  3. Rentable que le marché monte ou baisse.

  4. Flexibilité pour ajuster les paramètres du réseau aux différentes conditions du marché.

  5. Augmentation de la taille de la position en ajoutant des couches de grille.

  6. L'inclusion d'un stop loss évite d'énormes pertes lors d'événements de marché extrêmes.

Les risques

La stratégie comporte également certains risques:

  1. Les frais de négociation consomment les bénéfices sur le marché de la fourchette.

  2. Des prix de départ et des réglages de grille incorrects entraînent des pertes.

  3. L'écart de prix peut entraîner des pertes lors d'événements extrêmes.

  4. Le trading mécanique comporte un risque d'insertion d'ordres.

  5. Des événements concentrés peuvent amplifier les pertes.

Les solutions:

  1. Optimiser les paramètres du réseau pour assurer le profit > les frais.

  2. Test en arrière pour trouver le prix de départ optimal et la distance de la grille.

  3. Ajouter un stop loss au contrôle des risques.

  4. Relâchez le prix de commande pour éviter l'insertion.

  5. Réglez le contrôle des risques pour limiter les pertes maximales.

Améliorations

La stratégie peut être améliorée de la manière suivante:

  1. Ajustez dynamiquement la distance du réseau en fonction de la volatilité.

  2. Calculer la fourchette de prix pour définir dynamiquement le prix de départ.

  3. Ajoutez le modèle ML pour prédire le prix et ajuster la grille.

  4. Optimiser le stop loss en fonction des points de stop loss historiques.

  5. Incorporer la taille des positions en fonction du niveau de profit.

  6. Optimiser la gestion des positions pour maximiser l'utilisation du capital.

  7. Améliorer l'exécution en utilisant le TWAP pour réduire les coûts d'impact.

Conclusion

La stratégie met en œuvre le trading sur réseau fixe en fixant des prix d'achat et de vente en fonction du prix de départ et du pourcentage de la grille, ce qui permet d'obtenir une auto low-buy-high-sell. Il est important de gérer les risques en optimisant les paramètres, les ajustements dynamiques et le stop loss pour verrouiller les bénéfices et contrôler les pertes.


/*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)

Plus de