Stratégie quantitative de suivi de tendance basée sur l'optimisation des paramètres


Date de création: 2024-01-02 11:01:22 Dernière modification: 2024-01-02 11:01:22
Copier: 0 Nombre de clics: 682
1
Suivre
1621
Abonnés

Stratégie quantitative de suivi de tendance basée sur l’optimisation des paramètres

Aperçu

L’idée principale de cette stratégie est de combiner l’indicateur percentrank et l’optimisation des paramètres pour permettre le jugement et le suivi de la tendance des prix. La stratégie génère des signaux de négociation en comparant la taille des prix actuels avec le pourcentage de prix sur une période historique donnée, afin de capturer l’effet de miroir intermédiaire, suivre la tendance et obtenir des gains supplémentaires.

Principe de stratégie

La stratégie utilise l’indicateur percentrank pour déterminer la tendance des prix. Le percentrank indique la force relative des prix actuels au cours d’un cycle de consultation. Le paramètre len indique la longueur du cycle historique consulté.

Le percentrank se situe entre 0 et 100. Quand le percentrank est proche de 0, le prix actuel est proche du prix le plus bas de la période d’observation et appartient à la zone de sous-évaluation. Quand il est proche de 100, le prix actuel est proche du prix le plus élevé de la période d’observation et appartient à la zone de surévaluation.

La stratégie introduit également le paramètre scale comme décalage. La plage de 0 à 100 est déplacée vers la plage de scale à 100+ scale. Il est également possible de définir deux lignes de signaux, level_1 et level_2.

Un signal de plus est généré lorsque l’indicateur de percentrank de prix traverse le niveau_1 de bas en haut; un signal de plus est généré lorsque le prix traverse le niveau_2 de haut en bas. Les conditions de placement sont contraires au signal d’entrée.

Avantages stratégiques

  1. Utilisez l’indicateur percentrank pour déterminer la force de la tendance des prix et éviter d’être pris au piège et d’être poursuivi
  2. Appliquer des méthodes d’optimisation des paramètres, d’ajustement de l’échelle de déviation et des seuils de ligne de signal, de modulation pour différentes variétés et périodes, d’amélioration de la stabilité
  3. Combinant le suivi des tendances et l’idée de trading inversé, pour suivre les tendances en temps réel après la rupture de la ligne de signal

Analyse des risques

  1. Une mauvaise évaluation des tendances entraîne des pertes inutiles
  2. La tendance des fluctuations des prix est incertaine et peut générer de faux signaux.
  3. Une mauvaise configuration des paramètres peut entraîner une fréquence ou un volume insuffisant de transactions

Pour ce qui est des risques, il est possible d’optimiser les paramètres en ajustant les paramètres len, scale et level; d’autres indicateurs peuvent également être combinés pour confirmer et éviter les transactions erronées.

Direction d’optimisation

Il y a encore de la place pour optimiser cette stratégie:

  1. Il est possible d’introduire des points d’arrêt pour réduire les pertes individuelles.
  2. Les indicateurs tels que la moyenne mobile peuvent être utilisés pour confirmer et filtrer les signaux erronés.
  3. Paramètres d’optimisation automatique qui peuvent être combinés avec des méthodes d’apprentissage automatique
  4. Peut fonctionner en parallèle sur plusieurs périodes

Résumer

La stratégie est clairement pensée dans son ensemble et utilise des méthodes quantifiées optimisées pour les paramètres pour juger et suivre les tendances des prix. Elle a une certaine valeur de combat, mais nécessite encore des tests et des optimisations supplémentaires pour réduire les risques de combat et améliorer la stabilité de la rentabilité.

Code source de la stratégie
/*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")