Documentation

Applications

Dernière mise à jour le 15. 4. 2020 par Mark Fric

Indicateurs externes

Cette fonctionnalité est disponible à partir de la version 127. Veuillez également noter que cette fonctionnalité a été renommée Indicateurs de données personnalisées en Indicateurs externes dans les dernières versions.

Si vous avez un indicateur que vous voulez utiliser dans StrategyQuant, mais qu'il n'y est pas encore supporté, vous avez deux options :

  1. Mise en œuvre de l'indicateur personnalisé en Java dans StrategyQuant CodeEditor - cela nécessite quelques connaissances en programmation. L'indicateur ajouté de cette façon fonctionnera comme n'importe quel autre indicateur supporté par SQ.
  2. Importer l'indicateur personnalisé en tant que données - De cette façon, StrategyQuant peut utiliser l'indicateur sans savoir comment il a calculé ses valeurs.
    C'est plus simple, mais il y a quelques limitations - vous devez exporter les valeurs de l'indicateur depuis votre plateforme de trading en utilisant un script spécial, et ensuite les importer dans SQ. Par exemple, si vous calculez votre indicateur personnalisé sur EURUSD / H1 et que vous souhaitez l'utiliser sur GBPUSD / H1 ou même EURUSD / M30, vous devez réexporter les données depuis votre plateforme de trading.

Cette documentation porte sur l'option 2, qui consiste à importer des indicateurs sous forme de données.

Remarque ! 

Les indicateurs personnalisés importés en tant que données sont calculés dans MetaTrader, Tradestation ou votre autre plateforme de trading, et non dans SQ. Pour obtenir des résultats corrects, vous devez utiliser les mêmes données historiques dans StrategyQuant et MT4.
Cela ne fonctionnera pas si vous calculez votre indicateur personnalisé dans MetaTrader avec les données de votre courtier et que vous l'utilisez ensuite dans StrategyQuant avec des données provenant d'une autre source. Avant d'utiliser des indicateurs personnalisés, synchronisez vos données d'historique afin que SQ et MT4 utilisent le même historique.

 

Dans cet exemple, nous allons mettre en œuvre l'indicateur RVI qui est un exemple d'indicateur standard sur la plateforme MT5 :

Indicateur MT5 RVI

 

 

Etape 1 : Définir votre nouvel indicateur externe dans StrategyQuant

Aller à Gestionnaire de données -> Indicateurs externes et cliquez sur Ajouter un nouveau.

Cela ouvrira une nouvelle boîte de dialogue d'indicateur où vous spécifierez les propriétés de l'indicateur que vous ajoutez :

Ajouter un indicateur de données personnalisé

Nom

est le nom de l'indicateur sous lequel vous le verrez dans le SQ. Il doit être unique et ne peut pas contenir d'éléments spéciaux.
caractères.
Parce que l'indicateur personnalisé est calculé spécifiquement pour un symbole et une période de temps, c'est une bonne pratique d'utiliser le symbole et la période de temps dans son nom, comme dans notre cas : RVI_EURUSD_H1.

 

Type de retour

est un type de valeur de retour que l'indicateur calcule, il est utilisé par StrategyQuant pour faire correspondre correctement cet indicateur personnalisé à d'autres blocs de construction dans le programme, de sorte qu'il compare le prix avec le prix, et non pas par exemple le prix avec la valeur CCI. Il peut s'agir de l'un ou l'autre des éléments suivants :

  • Nombre - s'il s'agit d'un indicateur tel que CCI, RSI, MACD, etc.
  • Prix - si la valeur de l'indicateur est le prix, comme la moyenne mobile ou les bandes de Bollinger.
  • Fourchette de prix - si la valeur de l'indicateur est une fourchette de prix (différence entre deux prix), comme ATR ou Bollinger Bands Range.
  • Signal - si vous souhaitez utiliser l'indicateur comme un bloc de signaux personnalisé, utilisez cette option. Vous pouvez utiliser l'indicateur de signal par exemple pour reconnaître des configurations de bougies ou pour mettre en œuvre vos propres règles de trading simples.

Comment choisir le type de retour approprié ?

En général, si l'indicateur trace ses lignes sur le même graphique que le prix, son type de retour est le prix. S'il trace ses lignes dans une fenêtre séparée sous le graphique principal, il s'agit alors du numéro, à l'exception d'indicateurs spéciaux comme l'ATR qui calculent la différence de prix ou la fourchette.

 

Valeurs des indicateurs (lignes)

ce sont les valeurs que l'indicateur produit. Si vous regardez la capture d'écran de l'indicateur RVI ci-dessous, vous pouvez voir qu'il produit deux valeurs dans la fenêtre Data, et qu'elles correspondent à la ligne RVI (verte) et à la ligne Signal (rouge) sur le graphique.

Les valeurs doivent être définies dans le même ordre que celui dans lequel elles ont été créées dans l'indicateur.

Ensuite, il y a une partie intéressante - vous pouvez définir le code source pour chaque plateforme de trading pour chaque ligne. Cela n'est pas nécessaire pour que l'indicateur fonctionne dans SQ, mais c'est nécessaire pour que SQ sache comment générer le code source de la stratégie pour chaque plateforme.

Il n'est pas nécessaire de définir des sources pour les trois plateformes (MT4, MT5, EasyLanguage). Si vous n'utilisez que MT5, il suffit de ne spécifier que ce code.

Le code est la façon dont vous utilisez cet indicateur dans le code de votre plateforme de trading, pour MetaTrader c'est généralement quelque chose comme :

iCustom(NULL, 0, "RVI", 10, 0, #Shift#)

 

Notez que vous pouvez utiliser #Shift# pour le code MT4 - elle sera remplacée par le décalage réel du bloc de construction lors de la génération du code.

Dans MetaTrader5, le décalage est utilisé d'une manière différente et n'a pas besoin d'être calculé.

 

Cliquez sur OK et le nouvel indicateur sera créé :

Il ne peut pas encore être utilisé, car il ne s'agit que d'une définition - nous devons importer des données dans cet indicateur pour que le SQ puisse l'utiliser.

 

 

Étape 2 : Obtenir les valeurs de MetaTrader

Les indicateurs personnalisés fonctionnent de manière à ce que StrategyQuant utilise leurs valeurs calculées dans un autre programme, par exemple dans MetaTrader. Cela signifie que nous devons calculer l'indicateur dans MetaTrader et ensuite importer ses valeurs dans SQ.

C'est un peu compliqué, mais d'un autre côté, cela nous permet d'utiliser pratiquement n'importe quel indicateur disponible pour MetaTrader, même si nous ne savons pas exactement comment il est calculé.

Pour calculer les valeurs des indicateurs, nous utiliserons un EA simple appelé SqIndicatorValuesExportEA.

Il s'agit d'un EA personnalisé de StrategyQuant qui peut être utilisé pour exporter des valeurs d'indicateurs depuis MetaTrader. Vous pouvez trouver ce fichier dans le dossier {StrategyQuant}indicateurs personnalisésMetaTrader5Experts

 

Pour l'utiliser dans votre MetaTrader, vous devez le copier. Démarrez votre MetaTrader 5, allez dans Fichier ->Ouvrir le dossier de données. Cela ouvrira le dossier de données de MT5. Allez dans MQL5Experts et copiez l'EA dans ce dossier.

Redémarrez ensuite votre MetaTrader et le nouvel EA sera disponible.

Avant de pouvoir l'utiliser, nous devons le modifier pour qu'il exporte les valeurs de l'indicateur RVI comme nous le souhaitons.

Ouvrir MT5 -> Outils -> Editeur de langue MetaQuotes et trouver et ouvrir ce nouvel AE dans le dossier Experts.

Le code est relativement simple à utiliser, vous devez apporter des modifications à quelques endroits :

  1. Dans OnInit, vous devez spécifier le nom du fichier d'exportation et le code iCustom :
int OnInit() {
  ...

    // il s'agit du nom du fichier d'exportation. C'est une bonne pratique d'inclure également le symbole et le timeframe
    fileName = "EURUSD_H1_RVI_10.csv" ;
   
    // fonction pour obtenir la poignée de l'indicateur
    indicatorHandle = iCustom(NULL, 0, "ExamplesRVI", 10) ;

 

  1. Dans OnTick, vous devez mettre à jour les valeurs (lignes d'indicateur) qui seront calculées et exportées :
void OnTick()
   ...
   indicatorBufferIndex = 0 ;
   if(!FillArraysFromBuffers(IndicatorBuffer, indicatorHandle, 2)) return ;

   IndicatorBufferIndex = 1 ;
   if(!FillArraysFromBuffers(SignalBuffer, indicatorHandle, 2)) return ;

Si l'indicateur comporte plusieurs lignes, comme dans le cas de RVI, vous devez répéter les lignes :

   indicatorBufferIndex = NUMBER ;
   if(!FillArraysFromBuffers(BUFFER_NAME, indicatorHandle, 2)) return ;

pour chaque ligne.

Où NUMERO est un nombre de lignes commençant à 0 et BUFFER_NAME est le nom du tableau de tampons.
Deux tableaux de tampons sont définis au début du fichier :

double IndicatorBuffer[] ;
double SignalBuffer[] ;

vous pouvez en ajouter si l'indicateur a plus de deux lignes.

  1. Ensuite, dans OnTick, vous devez mettre à jour la méthode FileWrite et ajouter les tampons à exporter à la fin :
FileWrite(handle, currentTime, rt[0].open, rt[0].high, rt[0].low, rt[0].close, rt[0].tick_volume, IndicatorBuffer[0], SignalBuffer[0]) ;

 

C'est tout, vous pouvez maintenant compiler l'EA, il est prêt à être utilisé.

 

Exécuter l'EA d'exportation dans MetaTrader

Lorsque le fichier SqIndicatorValuesExportEA est modifié et compilé sans problème, nous pouvons l'exécuter pour exporter les valeurs.

Allez dans MT5 Strategy Tester, choisissez cet expert et sélectionnez le symbole et la période pour lesquels vous voulez exporter les données de l'indicateur.

Exportation d'indicateurs MT5

Vous devez choisir le symbole et l'horizon temporel pour lesquels l'indicateur doit être calculé, ainsi que la plage de dates appropriée.

Appuyez ensuite sur Démarrage et attendez que l'exportation se termine.

 

Une fois le test d'évaluation environnementale terminé, le fichier d'exportation devrait être disponible dans la rubrique Dossier de données MT5mais il y a une astuce. Le fichier généré ne se trouve pas dans le dossier Terminal, mais dans le dossier Tester.

Lorsque vous ouvrez le dossier de données à partir de MT5, vous verrez votre dossier Terminal :

Dossier du terminal MT5

Mais le fichier n'est pas là. Vous devez aller dans Tester, puis dans votre agent de test/MQL5/Files pour trouver le fichier exporté :

Dossier d'essai MT5

Vous pouvez maintenant copier et coller le fichier vers une destination plus pratique lorsque vous le trouverez.

 

 

Étape 3 : Importer les valeurs des indicateurs dans StrategyQuant

Lorsque les données de l'indicateur sont prêtes, nous pouvons les importer dans notre indicateur personnalisé dans StrategyQuant.

Aller à Gestionnaire de données -> Indicateurs externes sélectionnez votre nouvel indicateur et cliquez sur Importer des données d'indicateurs.

Recherchez le fichier et spécifiez les colonnes d'importation.

Si vous examinez l'EA, les données de l'indicateur ont été exportées sous la forme des deux dernières valeurs :

FileWrite(handle, currentTime, rt[0].open, rt[0].high, rt[0].low, rt[0].close, rt[0].tick_volume, IndicatorBuffer[0], SignalBuffer[0]) ;

Choisissez donc les deux dernières colonnes comme Valeur1 et Valeur2.

Cliquez sur Démarrer l'importation et l'indicateur devrait être importé avec succès.

Indicateur SQ cusotm importé

L'indicateur est maintenant prêt à être utilisé dans le SQ.

 

 

Étape 4 : Utilisation de l'indicateur externe

Lorsque l'indicateur est importé avec succès, il peut être utilisé comme n'importe quel autre élément de construction. Aller à Constructeur -> Paramètres -> Blocs de construction et vous devriez voir notre nouvelle RVI l'indicateur :

Bloc de construction de l'indicateur de données SQ cusotm

Si vous ne le voyez pas, Veuillez vérifier si vous avez le bon délai dans la rubrique Paramètres -> Données.

Rappelez-vous que les données des indicateurs sont toujours calculées pour une période spécifique et qu'elles ne peuvent pas être utilisées dans une autre période. Si vous passez par exemple à la période M30, vous ne verrez que les indicateurs externes qui ont été importés pour les données M30.

 

Lorsque les éléments de base sont configurés, nous pouvons lancer la construction.

SQ

Au bout d'un certain temps, la banque de données se remplira de nouvelles stratégies utilisant notre nouvel indicateur externe.

Lorsque nous ouvrons une stratégie, nous pouvons vérifier le pseudo-code :

Pseudo-code de l'indicateur de données personnalisé de la SQ

Nous pouvons voir que cette stratégie compare nos indicateurs RVI_EURUSD_H1.

Lorsque nous passerons le code source à MetaTrader 5, il générera un code MT5 valide qui pourra être compilé et exécuté dans MT5 :

Code de l'indicateur de données personnalisées SQ MT5

 

Vous pouvez également consulter la vidéo étape par étape dans laquelle notre programmeur senior montre comment coder votre indicateur personnalisé. Lien vidéo : https://www.youtube.com/watch?v=veiqIh0BS10&t=26s&ab_channel=StrategyQuant

Cet article a-t-il été utile ? L'article était utile L'article n'était pas utile

S'abonner
Notification pour
1 Commentaire
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires
John Warner
28. 12. 2022 10:11 pm

Valeurs des indicateurs (lignes):est mal expliqué. Qu'en est-il pour TradeStation ? Comment le nom est-il utilisé ? Quelles valeurs doivent figurer dans le champ "Code" pour TradeStation ?