Stratégie de l'indicateur intégral de l'élan

Auteur:ChaoZhang est là., Date: 2023-11-06 14h40 et 26h
Les étiquettes:

img

Résumé

Cette stratégie génère des signaux de trading en calculant la somme des différences entre ROC et SMA.

La logique de la stratégie

La stratégie calcule d'abord la SMA avec la longueur l et le ROC. Ensuite, elle calcule la différence k entre le prix de clôture et la SMA. Ensuite, elle additionne k pour s jours et obtient la somme. Lorsque la somme> 0, elle est longue. Lorsque la somme<0, elle est courte.

Plus précisément, dans le code:

  1. Calculer SMA avec longueur l, obtenir un.

  2. Calculer ROC avec la longueur l, obtenir r.

  3. Calculer la différence entre le prix de clôture et le SMA: k = close - a.

  4. Résumer k pour s jours, obtenir somme.

  5. Si la somme est supérieure à 0, position longue; si la somme est inférieure à 0, position courte.

  6. Sortir lorsque la somme est < 0 pour long et que la somme est > 0 pour court.

La clé est de résumer la différence k et d'utiliser le signe de somme pour les signaux de trading.

Analyse des avantages

Cette simple stratégie de négociation à court terme présente les avantages suivants:

  1. Les indicateurs utilisés sont simples et faciles à comprendre.

  2. Le filtrage par la différence des indicateurs permet de trouver des opportunités de trading plus précises.

  3. En résumant la différence, on peut mieux saisir les tendances à court terme.

  4. Les paramètres l et s peuvent être ajustés pour différents cycles.

  5. La logique est claire et facile à modifier et à optimiser.

  6. Efficacité élevée de l'utilisation du capital pour des transactions fréquentes à court terme.

Analyse des risques

Il y a aussi des risques:

  1. Des risques plus élevés dans le trading à court terme, des pertes sont possibles.

  2. Des paramètres inappropriés peuvent conduire à une survente ou à des opportunités manquées.

  3. Difficile à adapter à l'inversion de tendance, aucun stop loss peut conduire à de grosses pertes.

  4. L'ajustement fréquent des paramètres repose en grande partie sur l'expérience des opérateurs.

  5. Une fréquence de négociation élevée peut augmenter les coûts de transaction et le dérapage.

Les solutions:

  1. Ajustez les paramètres correctement pour réduire la fréquence des transactions.

  2. Ajouter des indicateurs de tendance pour identifier les renversements.

  3. Optimiser le stop loss pour contrôler les pertes d'une seule transaction.

  4. Ajoutez l'optimisation des paramètres automatiques pour réduire la dépendance à l'expérience.

  5. Optimiser le modèle d'exécution des ordres pour réduire les coûts de transaction.

Directions d'optimisation

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

  1. Optimiser les méthodes de calcul des paramètres, comme les algorithmes génétiques, pour rendre les paramètres adaptatifs.

  2. Ajouter plus d'indicateurs et de filtres pour améliorer la qualité du signal.

  3. Améliorer la stratégie de stop-loss, comme le trailing stop-loss.

  4. Optimiser les stratégies de gestion de l'argent comme le contrôle des points de risque.

  5. Optimiser le modèle d'exécution des ordres avec suivi des tendances, contrôle des glissements, etc.

  6. Ajoutez des modules de backtesting et d'optimisation automatique.

  7. Ajouter une évaluation quantitative de la qualité du signal.

Grâce à ces optimisations, cette stratégie peut devenir un système de négociation à court terme plus complet, intelligent, stable et contrôlable.

Résumé

En résumé, cette stratégie génère des signaux simples à partir d'indicateurs, avec une logique claire et une mise en œuvre facile. Avec des optimisations supplémentaires des paramètres, du stop loss, de la gestion de l'argent, etc., elle peut devenir une stratégie de trading quantitative utile. Mais aucune stratégie n'est parfaite. Les traders doivent toujours l'appliquer de manière rationnelle en fonction de leurs préférences personnelles en matière de risque.


/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Indicator Integrator Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=662, overlay=false)

l = input(defval=170,title="Length for indicator")
s = input(title="Length of summation",defval=18)
a= sma(close,l)
r=roc(close,l)
k=close-a
sum = 0
for i = 0 to s
    sum := sum + k[i]
//plot(a,color=yellow,linewidth=2,transp=0)
//bc =  iff( sum > 0, white, teal)
//plot(sum,color=bc, transp=20, linewidth=3,style=columns)
//plot(sma(sum,3),color=white)
//hline(0)

inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na

////buyEntry = crossover(source, lower)
////sellEntry = crossunder(source, upper)
if sum>0
    strategy.entry("Long", strategy.long, oca_name="Long",  comment="Long")
else
    strategy.cancel(id="Long")
if sum<0
    strategy.entry("Short", strategy.short, oca_name="Short", comment="Short")
else
    strategy.cancel(id="Short")
strategy.initial_capital = 50000
plot(strategy.equity-strategy.initial_capital-strategy.closedtrades*.25/2, title="equity", color=red, linewidth=2)
hline(0)
//longCondition = sum>0
//exitlong = sum<0

//shortCondition = sum<0
//exitshort = sum>0

//strategy.entry(id = "Long", long=true, when = longCondition)
//strategy.close(id = "Long", when = exitlong)
//strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong)

//strategy.entry(id = "Short", long=false, when = shortCondition)
//strategy.close(id = "Short", when = exitshort)
//strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)

Plus de