TradingBoxing : un Expert pour MetaTrader 5

Mike 2018.06.18 22:58 10 0 0
Pièce jointe

En développant TradingBoxing, nous nous sommes inspirés du code de TradingBoxing. Cependant, le code ci-dessous est uniquement basé sur cette idée, tandis que toute l'implémentation se fait en MQL5 et utilise de nouvelles classes de trading.

Le panneau de trading dispose d'un seul paramètre d'entrée : le numéro magique - l'identifiant unique pour l'EA.

Voici à quoi ressemble le panneau de trading :

TradingBoxing

Pour afficher les volumes (pour les positions et les ordres en attente), la classe standard CSpinEdit a été légèrement modifiée et sauvegardée sous le nom CSpinEditDouble. Malheureusement, nous n'avons pas pu créer cette classe par héritage, car nous devions modifier les membres de la classe déclarés comme "privés".

Comme vous pouvez le voir dans le nom de la classe, elle a été conçue pour afficher des données de type double. Nous avons donc ajouté la méthode DisplayedDigits qui définit la précision d'affichage du texte dans le contrôle.

Le champ de texte dans ce contrôle est également modifiable. Par exemple, cela peut être utile lorsque vous devez entrer un prix ou un volume très différent de la valeur dans le champ de texte. Pour que le texte du champ soit enregistré en tant que valeur, nous avons ajouté la méthode EndEdit à la classe CSpinEditDouble :

   int               m_digits;              // chiffres affichés
   //---
   void              EndEdit() { Value(StringToDouble(Text())); }

public:
                     CSpinEditDouble(void);

Cette méthode mémorise le texte saisi en tant que valeur.


La méthode EndEdit est appelée depuis la classe OnEvent CSpinEditDouble :

//+------------------------------------------------------------------+
//| Gestionnaire commun des événements de graphique                                   |
//+------------------------------------------------------------------+
EVENT_MAP_BEGIN(CSpinEditDouble)
  ON_EVENT(ON_CLICK,m_inc,OnClickInc)
  ON_EVENT(ON_CLICK,m_dec,OnClickDec)
  ON_EVENT(ON_END_EDIT,m_edit,EndEdit)
EVENT_MAP_END(CWndContainer)

Pour que les ordres de trading soient traités le plus rapidement possible (même sur un marché très calme où les ticks arrivent à de grands intervalles), chaque clic sur le bouton du panneau de trading appelera de manière forcée le gestionnaire interne CTradingBoxingDialog::OnTick().

Liste
Commentaire 0