Home Systeemhandel Bericht

Multivaluta OnTick Event Handler voor MetaTrader 5

Bijlage
280.zip (5 KB, Downloaden 0 keer)

In dit artikel bespreken we de nieuwe implementatie van de multifunctionele multivaluta modus in MetaTrader 5. Deze functie is geïntegreerd in de uitgebreide OnTick(string symbol) functie.

Voordelen:

  • Het biedt een echte multivaluta modus op zowel demo- als echte rekeningen.
  • De instellingen zijn eenvoudig aan te passen.
  • De evenementenlijst voor OnTick(string symbol) kan geconfigureerd worden: NewTick en/of NewBar.
  • De lijst van symbolen kan aangepast worden (alle symbolen uit de Market Watch of specifieke symbolen).
  • Bij het werken met symbolen uit de Market Watch is het mogelijk om evenementen "on the fly" te beheren in OnTick(string symbol).
  • Het is niet nodig om de technische details te begrijpen. Alle code is opgenomen in het include-bestand.
  • Het kan gebruikt worden in de Strategie Tester.

Het sjabloon van de Expert Advisor ziet er als volgt uit:

//+------------------------------------------------------------------+
//|                                        OnTick(string symbol).mq5 |
//|                                            Copyright 2010, Lizar |
//|                            https://www.mql5.com/ru/users/Lizar |
//+------------------------------------------------------------------+
#define VERSION       "1.00 Build 1 (01 Fab 2011)"

#property copyright   "Copyright 2010, Lizar"
#property link        "https://www.mql5.com/ru/users/Lizar"
#property version     VERSION
#property description "Template van de Expert Advisor"
#property description "met multivaluta OnTick(string symbol) event handler"

//+------------------------------------------------------------------+
//|                MULTICURRENCY MODE INSTELLINGEN                       |
//|           van OnTick(string symbol) event handler                 |
//|                                                                  |
//| 1.1 Lijst van symbolen die nodig zijn voor de evenementen:             |
#define  SYMBOLS_TRADING    "EURUSD","GBPUSD","USDJPY","USDCHF"
//| 1.2 Als je alle symbolen uit de Market Watch wilt, gebruik dit:         |
//#define  SYMBOLS_TRADING    "MARKET_WATCH"
//|     Let op: Selecteer slechts één manier van 1.1 of 1.2.                   |
//|                                                                  |
//| 2.  Evenementtype voor OnTick(string symbol):                        |
#define  CHART_EVENT_SYMBOL CHARTEVENT_TICK 
//|     Let op: het evenementtype moet overeenkomen met de                 |
//|                 ENUM_CHART_EVENT_SYMBOL enumeratie.             |
//|                                                                  |
//| 3.  Include-bestand:                                                |
#include <OnTick(string symbol).mqh>
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Expert initialisatiefunctie                                   |
//| Deze functie moet gedeclareerd worden, zelfs als deze leeg is.                |
//+------------------------------------------------------------------+
int OnInit()
  {
   //--- Voeg hier je code toe...
   return(0);
  }
  
//+------------------------------------------------------------------+
//| Expert multi tick functie                                       |
//| Gebruik deze functie in plaats van de standaard OnTick() functie      |
//+------------------------------------------------------------------+
void OnTick(string symbol)
  {
   //--- Voeg hier je code toe...
   Print("Nieuw evenement op symbool: ",symbol);
  }
  
//+------------------------------------------------------------------+
//| ChartEvent functie                                              |
//| Deze functie moet gedeclareerd worden, zelfs als deze leeg is.                |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // evenement id
                  const long& lparam,   // evenement param van lange type
                  const double& dparam, // evenement param van dubbele type
                  const string& sparam) // evenement param van string type
  {
   //--- Voeg hier je code toe...
  }
  
//+------------------------------------------------------------------+
//| Expert deinitialisatiefunctie                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   //--- Voeg hier je code toe...
  }

//+------------------------------ einde -------------------------------+

Sommige kenmerken:

1. Instellingen

Alle instellingen kunnen worden geconfigureerd met behulp van de #define-directieven. Voor het correcte functioneren van de OnTick(string symbol) functie moet je slechts twee parameters opgeven: SYMBOLS_TRADING en CHART_EVENT_SYMBOL. De eerste (SYMBOLS_TRADING) definieert de lijst van symbolen die gebruikt worden voor de evenementen. De tweede (CHART_EVENT_SYMBOL) definieert de evenementtypes voor alle symbolen.

De SYMBOLS_TRADING bevat de lijst van symbolen, bijvoorbeeld:

#define  SYMBOLS_TRADING    "EURUSD","GBPUSD","USDJPY","USDCHF"

De lijst moet worden voorbereid als strings, gescheiden door een komma. De lijst eindigt met het einde van de regel.

De SYMBOLS_TRADING kan als volgt worden gedefinieerd:

#define  SYMBOLS_TRADING    "MARKET_WATCH"

Deze manier betekent dat alle symbolen uit de Market Watch zullen worden gebruikt. Deze methode kan worden gebruikt om de lijst van symbolen "on the fly" te veranderen. Voeg gewoon de benodigde symbolen toe of verwijder ze uit de Market Watch.

Het CHART_EVENT_SYMBOL evenementtype wordt gedefinieerd door vlag of een combinatie ervan uit de ENUM_CHART_EVENT_SYMBOL enumeratie. Zie voor details hier (in het Russisch).

Hier zijn voorbeelden van de evenementtypes:

//--- Voorbeeld 1. OnTick evenement:
#define  CHART_EVENT_SYMBOL CHARTEVENT_TICK 
//--- Voorbeeld 2. NieuweBar M1 en Nieuwe Bar H1:
#define  CHART_EVENT_SYMBOL CHARTEVENT_NEWBAR_H1|CHARTEVENT_NEWBAR_M1

2.  Include-bestand.

Het #include OnTick(string symbol).mqh is nodig, dit bestand bevat de implementatie van de OnTick(string symbol) functie. Het biedt de eenvoudige manier om alle functies van de OnTick(string symbol) functie te gebruiken. Sommige standaardfuncties moeten in de code van de Expert Advisor worden gedeclareerd, zelfs als ze leeg zijn.

3. Strategie Tester.

Zoals je weet (op dit moment), wordt de OnChartEvent niet ondersteund in de Strategie Tester. Om dit probleem op te lossen, worden de globale variabelen gebruikt om de evenementen te verwerken. Deze manier wordt alleen in de Strategie Tester gebruikt, in alle andere gevallen (op echte/demo rekeningen) worden de evenementen verwerkt via de OnChartEvent. 

Hier is de functie. In de Strategie Tester zal de OnTick(string symbol) werken op de ticks van het symbool, dat is opgegeven in de instellingen van de Strategie Tester. Met andere woorden, het werkt als OnTick(), maar wordt ook aangeroepen wanneer er nieuwe ticks op de geselecteerde symbolen zijn. Voor het werken met de Strategie Tester moet de SYMBOLS_TRADING als een lijst van symbolen worden opgegeven.

4. "Spionnen".

Het gebruikt de "spionnen" (agent-indicatoren). Het bestand "Spy Control panel MCM.ex5" moet in de map \MQL5\Indicators\ worden geplaatst.

5. De bestanden uit het archief moeten worden uitgepakt in de \MQL5 map. De benodigde bestanden zijn:

    • /MQL5/Experts/OnTick(string symbol).mq5 - Voorbeeld van Expert Advisor, broncode van het sjabloon;
    • /MQL5/Experts/OnTick(string symbol).ex5 - Voorbeeld van Expert Advisor gecompileerd bestand;
    • /MQL5/Indicators/Spy Control panel MCM.mq5 - Agent-indicator, broncode;
    • /MQL5/Indicators/Spy Control panel MCM.ex5 - Agent-indicator, gecompileerd bestand;
    • /MQL5/Include/OnTick(string symbol).mqh - include-bestand met alle functies die nodig zijn voor de implementatie van de OnTick(string symbol) functie.

Gerelateerde berichten

Reactie (0)