Stratégie de la Croix d'Or et de la Croix de la Mort

Auteur:ChaoZhang est là., Date: 2023-10-11 16h33 et 18h
Les étiquettes:

Résumé

Cette stratégie utilise les principes de la croix d'or et de la croix de la mort des moyennes mobiles simples pour mettre en œuvre des positions longues et courtes pour les actions.

La logique de la stratégie

La stratégie définit d'abord le délai de backtesting, puis fixe les paramètres de calcul pour les deux moyennes mobiles, y compris le type de MA et la durée de la période.

La fonction getMAType () calcule les valeurs des deux MA. fastMA est la période de MA la plus courte, et slowMA est la période de MA la plus longue.

La logique de base:

  • Lorsque le fastMA dépasse le slowMA, un signal long est déclenché.

  • Lorsque le fastMA dépasse le slowMA, un signal court est déclenché.

Enfin, pendant le backtesting, prenez une position longue lorsque vous voyez un signal long, et prenez une position courte lorsque vous voyez un signal court.

Analyse des avantages

  • Une idée de stratégie simple et claire, facile à comprendre et à mettre en œuvre.
  • Utilise des principes de croisement des MA largement appliqués, adaptés à la plupart des produits de stock.
  • Des types et paramètres d'AM personnalisables, une grande adaptabilité.
  • Structure de stratégie modulaire, fonctionnalité claire, facile à optimiser.

Analyse des risques

  • Les crossovers MA ont un certain retard, peuvent manquer certaines opportunités commerciales.
  • Il ne peut pas filtrer efficacement les marchés, il est enclin à être piégé.
  • L'optimisation des paramètres n'est pas suffisamment complète, nécessite une expérience manuelle.
  • Incapable de contrôler efficacement le risque et les pertes par transaction.

Optimisations possibles par rapport aux risques:

  1. Ajouter d'autres indicateurs techniques pour l'identification des tendances.

  2. L'exposition au risque est calculée sur la base de l'exposition au risque.

  3. Ajoutez des indicateurs de volume pour éviter les marchés de piqûres.

  4. Construire des mécanismes d'optimisation des paramètres pour trouver automatiquement des ensembles de paramètres optimaux.

Directions d'optimisation

La stratégie peut être encore optimisée dans les aspects suivants:

  1. Ajouter des stratégies de stop loss comme des points de stop loss fixes ou un stop loss de trailing pour contrôler les pertes.

  2. Ajouter des stratégies de dimensionnement des positions comme la dimensionnement des positions fixes ou dynamiques pour contrôler les risques de négociation.

  3. Ajoutez des filtres en les combinant avec d'autres indicateurs techniques pour identifier les tendances et améliorer le taux de réussite.

  4. Optimiser les paramètres par des méthodes telles que la recherche de grille et la régression linéaire pour trouver des valeurs optimales.

  5. Élargir les stratégies d'entrée comme le retrait de rupture, l'échelle dans les ordres pour enrichir les tactiques de trading.

  6. Ajoutez des indicateurs de volume pour éviter les marchés de piqûres.

  7. Élargir les produits aux indices boursiers, aux devises, aux crypto-monnaies, etc.

Résumé

Cette stratégie met en œuvre la sélection d'actions longues / courtes basée sur les principes de croisement MA. L'idée de la stratégie est simple et claire, largement utilisée, très adaptable et pratiquement précieuse. Mais elle présente également des problèmes de filtrage en retard et de filtrage à la scie. Les optimisations futures peuvent se concentrer sur l'amélioration de l'arrêt des pertes, l'optimisation des paramètres, l'ajout de filtres, etc. pour le rendre plus avantageux.


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

//@version=4
//strategy("Golden X BF Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)

/////////////// Time Frame ///////////////
testStartYear = input(2010, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() =>  true

///////////// MA Params /////////////
source1 = input(title="MA Source 1", defval=close)
maType1 = input(title="MA Type 1", defval="sma", options=["sma", "ema", "swma", "wma"])
length1 = input(title="MA Length 1", defval=50)

source2 = input(title="MA Source 2", defval=close)
maType2 = input(title="MA Type 2", defval="sma", options=["sma", "ema", "swma", "wma"])
length2 = input(title="MA Length 2", defval=200)

///////////// Get MA Function /////////////
getMAType(maType, sourceType, maLen) => 
    res = sma(close, 1)
    
    if maType == "ema"
        res := ema(sourceType, maLen)
    if maType == "sma"
        res := sma(sourceType, maLen)
    if maType == "swma"
        res := swma(sourceType)
    if maType == "wma"
        res := wma(sourceType, maLen)
    res
    
///////////// MA /////////////
fastMA = getMAType(maType1, source1, length1)
slowMA = getMAType(maType2, source2, length2)

long = crossover(fastMA, slowMA)
short = crossunder(fastMA, slowMA)

/////////////// Plotting /////////////// 
checkColor() => fastMA > slowMA
colCheck = checkColor() ? color.lime : color.red
p1 = plot(fastMA, color = colCheck, linewidth=1)
p2 = plot(slowMA, color = colCheck, linewidth=1)
fill(p1, p2, color = checkColor() ? color.lime : color.red)
bgcolor(long ? color.lime : short ? color.red : na, transp=20)

/////////////// Execution /////////////// 
if testPeriod()
    strategy.entry("Long", strategy.long, when=long)
    strategy.entry("Short", strategy.short, when=short)

Plus de