Stratégie de négociation quantitative de Gandalf

Auteur:ChaoZhang est là., Date: le 30 octobre 2023 à 10h27h40
Les étiquettes:

img

Résumé

La stratégie de trading quantitative de Gandalf est une stratégie de renversement moyen basée sur les lignes de prix médiane. Elle détermine la direction de la tendance actuelle en calculant le prix moyen pondéré, la ligne de prix médiane et le prix moyen du corps, pour trouver des points d'entrée optimaux. Lorsqu'un renversement de tendance est détecté, il réduit rapidement les pertes et sort.

La logique de la stratégie

La logique de base de la stratégie Gandalf est de comparer la relation de magnitude entre le prix moyen pondéré, la ligne de prix médiane et le prix moyen du corps, pour juger de la direction et de la force de la tendance actuelle.

Plus précisément, elle calcule les prix suivants:

  • Prix moyen pondéré: (prix le plus élevé + prix le plus bas + prix de clôture + prix de clôture) / 4
  • Ligne de prix médiane: (prix le plus élevé + prix le plus bas) / 2
  • Prix moyen du corps: (prix d'ouverture + prix de clôture) / 2

Lorsqu'il entre dans une position, il compare la relation de grandeur entre le prix moyen pondéré, la ligne de prix médiane et le prix moyen du corps des deux dernières barres, afin de déterminer s'il correspond aux caractéristiques d'une tendance de départ.

Par exemple, si le prix moyen pondéré est inférieur à la ligne de prix médiane et que le prix moyen corporel est également inférieur au prix moyen pondéré, cela indique que le prix est en baisse, ce qui présente une opportunité de raccourcissement.

Lors de l'arrêt de la perte, il continue de comparer la relation d'ampleur entre ces prix, pour juger s'il y a des signes d'inversion de tendance.

En comparant la relation de prix à la magnitude, la stratégie Gandalf réalise le jugement et le suivi des tendances.

Les avantages

La stratégie Gandalf présente les avantages suivants:

  1. L'utilisation de la ligne de prix médiane pour déterminer la direction de la tendance peut filtrer efficacement le bruit du marché et bloquer la tendance majeure.

  2. La condition d'entrée combinant plusieurs comparaisons de prix peut déterminer plus fiablement le début d'une tendance.

  3. La condition de stop loss utilise également la comparaison des prix pour juger de l'inversion de tendance, ce qui permet un stop loss rapide et un contrôle des risques.

  4. L'adoption d'ordres conditionnels pour l'entrée peut être obtenue à des prix idéaux.

  5. Les délais maximaux de prise de profit et les limites supérieures de la période de détention prédéfinis permettent de bloquer les bénéfices et de contrôler les risques commerciaux uniques.

  6. La structure du code est claire et simple, facile à comprendre et à modifier.

  7. Les paramètres peuvent être ajustés en fonction des préférences personnelles en matière de risque, faciles à optimiser.

  8. Applicable aux produits en tendance, capable de capturer les bénéfices en tendance.

En résumé, la stratégie Gandalf utilise la ligne médiane pour déterminer la tendance, définit les conditions de prise de profit et d'arrêt des pertes, et peut contrôler efficacement les risques tout en suivant les tendances, ce qui en fait une stratégie de suivi de tendance fiable.

Les risques

La stratégie Gandalf comporte aussi des risques:

  1. En tant que stratégie de suivi de tendance, elle produira des pertes plus faibles lorsque la tendance est floue ou inverse fréquemment.

  2. L'incapacité de déterminer efficacement les points d'inversion de tendance peut entraîner des pertes croissantes.

  3. Ils sont enclins à être pris au piège dans des marchés limités.

  4. Il s'appuie sur les paramètres, les paramètres doivent être ajustés pour différents produits.

  5. Holding unidirectionnel, incapable de tirer profit des tendances inversées.

  6. Le taux d'échec des commandes conditionnelles est élevé.

Mesures de gestion des risques:

  1. Adopter une position de petite taille, entrée partielle, pour contrôler une seule perte.

  2. Définissez la ligne stop-loss, stop-loss rapide ou adoptez un stop-loss en mouvement ou un stop-loss à la traîne.

  3. Optimiser les paramètres pour qu'ils correspondent au produit actuel.

  4. Considérez le martingale comme une base de coût inférieur.

  5. Échangez des produits avec des tendances évidentes, une plus grande confiance en profit.

  6. Réduire les critères d'entrée de manière appropriée pour améliorer la probabilité d'entrée.

Directions d'amélioration

La stratégie Gandalf peut également être améliorée dans les aspects suivants:

  1. Construire des indicateurs de jugement de tendance pour aider à déterminer le moment des renversements de tendance, tels que l'ajout du MACD, des bandes de Bollinger, etc.

  2. Ajouter des fonctions d'optimisation discrètes pour optimiser automatiquement les paramètres et s'adapter à plus de produits.

  3. Augmenter les algorithmes d'apprentissage automatique, former les réseaux de neurones ou les modèles SVM sur les données historiques pour juger des tendances.

  4. Ajoutez plus de méthodes de prise de profit, comme la prise de profit en mouvement, prise de profit parabolique.

  5. Combiner des produits connexes pour des stratégies de négociation à taux d'intérêt ou de statistiques.

  6. Ajouter une prédiction d'état basée sur le modèle de Markov caché pour juger du régime du marché.

  7. Construire des stratégies combinées, comme combiner avec des stratégies moyennes mobiles pour la gestion multi-stratégie.

  8. Examiner l'optimisation des combinaisons de stratégies de négociation pour trouver les pondérations optimales du portefeuille.

En résumé, la stratégie Gandalf peut être étendue et optimisée dans plusieurs dimensions comme le jugement des tendances, l'optimisation automatique, la gestion des risques, pour rendre la stratégie plus robuste et fiable.

Conclusion

La stratégie quantitative Gandalf est une stratégie simple mais efficace basée sur la comparaison des prix pour déterminer les tendances. Elle combine les idées de suivi de tendance et de stop-loss rapide, et peut contrôler efficacement les risques. La logique de la stratégie est claire et facile à comprendre, les paramètres peuvent être ajustés en fonction des préférences personnelles en matière de risque. Mais elle présente également certaines fluctuations de profit et des risques de détention, nécessitant une optimisation et une gestion appropriées.


/*backtest
start: 2023-10-22 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

// The GandalfProjectResearchSystem strategy, as discussed in
// “System Development Using Artificial Intelligence”
// by Domenico D’Errico and Giovanni Trombetta
strategy("Gandalf Project Research System", overlay=true)

// Inputs
Quantity = input(0, title="Quantity (0 to auto calc)")
Single_Trade_Money = input(10000, minval=1, title="Money to spend on single trade")
MaxProfitCloses = input(6, minval=1, title="Max Profit Close")
MaxBars = input(8, minval=1, title="Max Total Bars")
Enter_Gap = input(-0.08, title="Distance from low price to place entry limit")
AltExit = input(true, title="Use Alt Exit")

// Calculate Order Quantity
Ncon = Single_Trade_Money / close

// Misc Variables
src = close
BarsSinceEntry = 0
MaxProfitCount = 0
MedBodyPrice = (open + close) / 2.0
Weighted = (high + low + close + close) / 4.0
Median = (high + low) / 2.0

// Enter Conditions
Cond00 = strategy.position_size == 0
Cond01 = ((Weighted[1] < Median[1] and Median[2] <= Weighted[1] and MedBodyPrice[2] <= Weighted[3]) or (Weighted[1] < Median[3] and MedBodyPrice[0] < Median[2] and MedBodyPrice[1] < MedBodyPrice[2]))
Entry01 = Cond00 and Cond01

// Update Exit Variables
BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1
MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1])

// Exit Conditions
eCond01 = BarsSinceEntry - 1 >= MaxBars
eCond02 = MaxProfitCount >= MaxProfitCloses
eCond03 = ((Weighted[1] < MedBodyPrice[1] and Median[2] == MedBodyPrice[3] and MedBodyPrice[1] <= MedBodyPrice[4]) or (Weighted[2] < MedBodyPrice[0] and Median[4] <= Weighted[3] and MedBodyPrice[1] <= Weighted[1]) or (Weighted[2] < MedBodyPrice[0] and Median[4] <= Weighted[3] and MedBodyPrice[1] <= Weighted[1]))
eCond04 = AltExit ? true : close - strategy.position_avg_price < 0
Exit01 = not Cond00 and (eCond01 or eCond02 or (eCond03 and eCond04))

// Entries
strategy.entry(id="L1", long=true, limit=low + Enter_Gap, qty=(Quantity > 0 ? Quantity : Ncon), when=Entry01)
 
// Exits
strategy.close("L1", Exit01)


Plus de