Tendance optimisée pour les paramètres selon une stratégie quantitative

Auteur:ChaoZhang est là., Date: 2024-01-02 11:01:22 Je suis désolé
Les étiquettes:

img

Résumé

L'idée principale de cette stratégie est de juger et de suivre les tendances des prix en combinant l'indicateur de pourcentage et l'optimisation des paramètres.

Principe de stratégie

La stratégie utilise l'indicateur de pourcentage pour déterminer les tendances des prix.

La gamme de valeurs de pourcentage est de 0 à 100. Lorsque la valeur de pourcentage est proche de 0, cela signifie que le prix actuel est proche du prix le plus bas de la période considérée et se trouve dans une zone sous-évaluée.

La stratégie introduit également un paramètre d'échelle comme décalage pour déplacer la plage de 0 à 100 vers la plage d'échelle à 100 +. Deux lignes de signal level_1 et level_2 sont également définies, où level_1 indique le niveau long et level_2 indique le niveau court.

Lorsque l'indicateur de pourcentage de prix franchit le niveau_1 vers le haut, un signal long est généré. Lorsqu'il franchit le niveau_2 vers le bas, un signal court est généré. Les conditions de sortie sont opposées aux signaux d'entrée.

Les avantages de la stratégie

  1. Utilisez l'indicateur de classement en pourcentage pour déterminer la force des tendances des prix, en évitant d'être pris au piège ou de courir après des sommets
  2. Appliquer des méthodes d'optimisation des paramètres pour ajuster l'échelle de décalage et le seuil de ligne de signal pour différents produits et cycles afin d'améliorer la stabilité
  3. Combiner les idées de trading de suivi de tendance et de réversion moyenne pour suivre les tendances en temps opportun après avoir franchi la ligne de signal

Analyse des risques

  1. Une mauvaise appréciation des tendances entraînant des pertes inutiles
  2. Prédisposé à générer de faux signaux lorsque la volatilité et la tendance des prix ne sont pas claires
  3. Des paramètres mal réglés peuvent entraîner des transactions trop fréquentes ou un volume de transactions insuffisant

Pour faire face aux risques ci-dessus, des paramètres tels que le len, l'échelle, le niveau peuvent être ajustés pour l'optimisation.

Directions d'optimisation

La stratégie peut être encore optimisée:

  1. Les points de stop-loss peuvent être introduits pour réduire les pertes d'une seule transaction
  2. Des indicateurs tels que la moyenne mobile peuvent être incorporés pour la confirmation afin de filtrer certains signaux erronés
  3. Les méthodes d'apprentissage automatique peuvent être utilisées pour optimiser automatiquement les paramètres
  4. Peut être exécuté en parallèle sur plusieurs délais

Conclusion

L'idée générale de la stratégie est claire, appliquant des méthodes quantitatives d'optimisation des paramètres pour juger et suivre les tendances des prix.


/*backtest
start: 2023-12-02 00:00:00
end: 2024-01-01 00:00:00
period: 4h
basePeriod: 15m
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/
// © Alex_Dyuk

//@version=4
strategy(title="percentrank", shorttitle="percentrank")
src = input(close, title="Source")
len = input(title="lookback - Период сравнения", type=input.integer, defval=10, minval=2)
scale = input(title="scale offset - смещение шкалы", type=input.integer, defval=50, minval=0, maxval=100)
level_1 = input(title="sygnal line 1", type=input.integer, defval=30)
level_2 = input(title="sygnal line 2", type=input.integer, defval=-30)

prank = percentrank(src,len)-scale
plot(prank, style = plot.style_columns)
plot(level_2, style = plot.style_line, color = color.red)
plot(level_1, style = plot.style_line, color = color.green)

longCondition = (crossunder(level_1, prank) == true)
if (longCondition)
    strategy.entry("Long", strategy.long)
longExitCondition = (crossover(level_2, prank) == true)
if (longExitCondition)
    strategy.close("Long")
    
shortCondition = (crossover(level_2, prank) == true)
if (shortCondition)
    strategy.entry("Short", strategy.short)
shortexitCondition = (crossunder(level_1, prank) == true)
if (shortexitCondition)
    strategy.close("Short")

    

Plus de