TradingBoxing: Dein Expertenratgeber für MetaTrader 5

Mike 2018.06.18 22:58 31 0 0
Anhang

Bei der Entwicklung von TradingBoxing haben wir uns von dem Code TradingBoxing inspirieren lassen. Der folgende Code basiert jedoch nur auf dieser Idee. Die vollständige Umsetzung erfolgt in MQL5 mit neuen Handelsklassen.

Das Handelspanel hat nur einen Eingabeparameter: die Magic-Nummer – ein einzigartiger Identifikator für den EA.

So sieht das Handelspanel aus:

TradingBoxing

Um die Volumina (für Positionen und offene Aufträge) anzuzeigen, wurde die Standardklasse CSpinEdit leicht modifiziert und als CSpinEditDouble gespeichert. Leider konnten wir sie nicht durch Vererbung erstellen, da wir die Klassenelemente, die als "private" deklariert wurden, ändern mussten.

Wie der Klassenname schon sagt, wurde sie erstellt, um Daten vom Typ Double anzuzeigen. Daher haben wir die Methode DisplayedDigits hinzugefügt, die die Genauigkeit der Textanzeige im Steuerfeld definiert.

Das Textfeld in diesem Steuerfeld ist ebenfalls bearbeitbar. Das kann hilfreich sein, wenn du einen Preis oder ein Volumen eingeben musst, das stark von dem im Textfeld angezeigten Wert abweicht. Damit der Text aus dem Textfeld als Wert gespeichert wird, wurde die Methode EndEdit zur Klasse CSpinEditDouble hinzugefügt:

   int               m_digits;              // angezeigte Ziffern
   //---
   void              EndEdit() { Value(StringToDouble(Text())); }

public:
                     CSpinEditDouble(void);

Diese Methode speichert den eingegebenen Text als Wert.


Die Methode EndEdit wird aus der OnEvent-Klasse CSpinEditDouble aufgerufen:

//+------------------------------------------------------------------+
//| Allgemeiner Handler für Diagrammereignisse                                 |
//+------------------------------------------------------------------+
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)

Damit Handelsaufträge so schnell wie möglich verarbeitet werden (auch in einem sehr ruhigen Markt, in dem die Ticks in großen Abständen kommen), wird jeder Klick auf die Schaltfläche des Handelspanels gezwungen, den internen Handler CTradingBoxingDialog::OnTick() aufzurufen.

Liste
Kommentar 0