Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 11.06.22
pascalper pascalper ist offline
Mitglied
 
Registriert seit: Feb 2017
Beiträge: 79
pascalper befindet sich auf einem aufstrebenden Ast
Standard Umstellung MT4 -> MT5

Hallo,
ich beginne meinen MT4 EA auf MT5 umzustellen, die Vorteile sind klar.
Coding C, Pascal kein Problem für mich, MT5 C++ "Dialekt" ist schon eine Herausforderung

Nun möchte ich die Community befragen ob die Umstellung nachfolgender Funktion korrekt ist? Bitte Danke im voraus!
Arbeite viel mit globalen Variablen, die Weiterverarbeitung (nächste Order, etc) erleichtert sich um einiges.
Beim kompilieren im MT5 gibt es keine Fehler, jeglicher Art.

MT4
Code:
  void GlobalSet() {
   for(int pos=0;pos<HistoryOrdersTotal();pos++)
   if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY))
   if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {
    if(OrderType()==OP_BUY && OrderProfit()<0) {
     GlobalVariableSet(Symbol()+"-LastBuyLots",OrderLots());
     GlobalVariableSet(Symbol()+"-LastBuyProfit",OrderProfit());
     GlobalVariableSet(Symbol()+"-LastSellLots",0);
     GlobalVariableSet(Symbol()+"-LastSellProfit",0);
     } 
    if(OrderType()==OP_SELL && OrderProfit()<0) {
     GlobalVariableSet(Symbol()+"-LastSellLots",OrderLots());
     GlobalVariableSet(Symbol()+"-LastSellProfit",OrderProfit());
     GlobalVariableSet(Symbol()+"-LastBuyLots",0); 
     GlobalVariableSet(Symbol()+"-LastBuyProfit",0);
     }
   }
  }
MT5
Code:
  void GlobalSet() {
   ulong total=HistoryOrdersTotal();
   ulong ticket;
   for(uint i=0;i<total;i++) {
    if((ticket=HistoryOrderGetTicket(i))>0) {
     if(PositionGetString(POSITION_SYMBOL)==Symbol() && PositionGetInteger(POSITION_MAGIC)==Magic) {
     
      if(ENUM_POSITION_TYPE(ORDER_TYPE_BUY) && ENUM_ORDER_PROPERTY_DOUBLE(POSITION_PROFIT)<0) {
      GlobalVariableSet(Symbol()+"-LastBuyLots",ENUM_ORDER_PROPERTY_DOUBLE(ORDER_VOLUME_INITIAL));
      GlobalVariableSet(Symbol()+"-LastBuyProfit",ENUM_ORDER_PROPERTY_DOUBLE(POSITION_PROFIT));
      GlobalVariableSet(Symbol()+"-LastSellLots",0);
      GlobalVariableSet(Symbol()+"-LastSellProfit",0); }
     
      if(ENUM_POSITION_TYPE(ORDER_TYPE_SELL) && ENUM_ORDER_PROPERTY_DOUBLE(POSITION_PROFIT)<0) {
      GlobalVariableSet(Symbol()+"-LastSellLots",ENUM_ORDER_PROPERTY_DOUBLE(ORDER_VOLUME_INITIAL));
      GlobalVariableSet(Symbol()+"-LastSellProfit",ENUM_ORDER_PROPERTY_DOUBLE(POSITION_PROFIT));
      GlobalVariableSet(Symbol()+"-LastBuyLots",0);
      GlobalVariableSet(Symbol()+"-LastBuyProfit",0); } 
         }
       }
     }
   }
Fragen:
- Richtig von MT4 auf MT5 übertragen?
- MT5 "ticket" (rot) überhaupt notwendig?

Beste Grüße
pascalper