Bibliotheken: MT4Orders - Seite 80

 
fxsaber #:

Probieren Sie die neueste Version aus. Kopieren und Einfügen.

Danke, fxsaber. Es wird einige Zeit dauern, bis ich das bestätigen kann, aber bisher scheint der Speicherverbrauch nicht geringer zu sein.

Nur so aus Neugier: Wo ist OrderSwap() definiert? Ich kann sie im Code nicht finden.

 
pcdeni #:

Bisher scheint der Speicherverbrauch nicht geringer zu sein.

Ich brauche Daten, um das Problem zu reproduzieren. Lakonischer Code und Zugriff auf das Handelskonto, in dem das Problem auftritt. Vielleicht in privaten Nachrichten.

Aus reiner Neugier: Wo ist OrderSwap() definiert? Ich kann es im Code nicht finden.

MT4_ORDERFUNCTION(Swap, double, ::PositionGetDouble(POSITION_SWAP), 0, true)
 
Hallo, ich habe ein seltsames Problem. Ich benutze diese Bibliothek seit einiger Zeit, ich möchte DANKE sagen, seine unglaubliche Hilfe,

So habe ich nie irgendwelche Probleme mit der Einbeziehung dieser Bibliothek / Code in EAs seit Jahren.

Jetzt, wenn ich MT5 EA kompilieren, gibt es 3 Fehler von diesem Code, sie sind alle im Grunde über 1 Zeile: ( siehe Code unten )
'=' - unerwartetes Token MT4Orders.mqh 192 25
')' - unerwartetes Token MT4Orders.mqh 192 68
'*=' - Name erwartet MT4Orders.mqh 194 13

in meinem EA füge ich auch ein:

#include <stderror.mqh>
#include <stdlib_mq5.mqh>
#import"kernel32.dll"

Haben Sie eine Idee, was hier los sein könnte?

Library allein kompiliert ohne Fehler, keine Probleme, wie üblich. Nur wenn ich versuche, EA zu kompilieren, treten diese Fehler auf.

#define  ORDER_SELECT (-2)

   static int GetDigits( double Price )
  {
    int Res = 0;

    while ((bool)(Price = ::NormalizeDouble(Price - (int)Price, 8)))   // <- ZEILE 192 dies ist also offensichtlich ein Problem "= :: "
    {
      Price *= 10; // LINE 194

      Res++;
    }

    return(Res);
  }

Ich habe etwas Verdächtiges in meinem EA gefunden:
union Price
  {
   uchar             buffer[8];
   double            close;
  };

Der Name der Gewerkschaft Preis überschreibt den Namen des Preises in der Funktion GetDigits ? könnte dies das Problem sein ?
 
Filip Valkovic #:
Ich habe etwas Verdächtiges in meinem EA gefunden:
also überschreibt dieser Gewerkschaftspreisname den Preisnamen in der GetDigits Funktion ? das könnte das Problem sein ?

Das ist der Grund.

 
Bitte helfen Sie mir, einen Fehler in der Provisionsberechnung zu finden. Führen Sie dazu dieses Skript auf allen verfügbaren Handelskonten aus.
// Berechnung und Vergleich der Gesamtkommission/Swap/Gewinn über MT4/MT5-Style.

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // Maximale Wartezeit (in µs) für die Synchronisierung der Handelsumgebung
#include <MT4Orders.mqh>

#define  TOSTRING(A) (#A + " = " + DoubleToString(A, 2))
#define  PRINT(A, B) Print(TOSTRING(A) + ", " + TOSTRING(B) + ", " + (string)!NormalizeDouble((A) - (B), 2))

// MT4-Stil
void Calc_MT4( double &Commission, double &Swap, double &Profit )
{
  Commission = 0;
  Swap = 0;
  Profit = 0;
  
  for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderType() <= OP_SELL))
    {
      Commission += OrderCommission();
      Swap += OrderSwap();
      Profit += OrderProfit();
    }
}

// MT5-Stil
void Calc_MT5( double &Commission, double &Swap, double &Profit )
{
  Commission = 0;
  Swap = 0;
  Profit = 0;
  
  if (HistorySelect(0, INT_MAX))  
    for (int i = HistoryDealsTotal() - 1; i >= 0; i--)
    {
      const ulong Ticket = HistoryDealGetTicket(i);
      
      if (HistoryDealGetInteger(Ticket, DEAL_TYPE) <= DEAL_TYPE_SELL)
      {
        Commission += HistoryDealGetDouble(Ticket, DEAL_COMMISSION);
        Swap += HistoryDealGetDouble(Ticket, DEAL_SWAP);
        Profit += HistoryDealGetDouble(Ticket, DEAL_PROFIT);
      }
    }
}

void OnStart()
{
  if (PositionsTotal())
    MessageBox("The script works when there are no open positions.");
  else
  {
    double Commission_MT4, Swap_MT4, Profit_MT4;
    double Commission_MT5, Swap_MT5, Profit_MT5;
    
    Calc_MT4(Commission_MT4, Swap_MT4, Profit_MT4); // MT4-Stil
    Calc_MT5(Commission_MT5, Swap_MT5, Profit_MT5); // MT5-Stil
    
    PRINT(Commission_MT4, Commission_MT5);
    PRINT(Swap_MT4, Swap_MT5);
    PRINT(Profit_MT4, Profit_MT5);
  }
}


Es wird etwas Ähnliches wie das hier erzeugen.

Commission_MT4 = -15591.12, Commission_MT5 = -15591.12, true
Swap_MT4 = -5948.77, Swap_MT5 = -5948.77, true
Profit_MT4 = 34851.13, Profit_MT5 = 34851.13, true


Falls in dem hervorgehobenen Bereich etwas Falsches steht, lassen Sie es mich wissen. Ich danke Ihnen.

 
2023.01.02 13:23:28.780 fxsaber_test (EURCHF,H1)        Commission_MT4 = -2875.33, Commission_MT5 = -2875.29, false
2023.01.02 13:23:28.835 fxsaber_test (EURCHF,H1)        Swap_MT4 = -1051.56, Swap_MT5 = -1051.56, true
2023.01.02 13:23:28.835 fxsaber_test (EURCHF,H1)        Profit_MT4 = 7198.08, Profit_MT5 = 7198.08, true
 
Enrique Dangeroux #:

Sind Sie sicher, dass Sie mit dieser Zeile kompiliert haben?

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Bibliotheken: MT4Orders

fxsaber, 2023.01.02 12:24 Uhr.

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // Maximale Wartezeit (in µs) für die Synchronisierung der Handelsumgebung
EX5 von telegram gibt falsch?
 
Kompiliert durch Copypaste 1:1, mit Ausnahme der fehlenden Semikolons nach Swap = 0.
 
fxsaber #:

EX5 von telegram wird falsch?

Dies ist wahrscheinlich der zuverlässigste Weg, um eine falsche Quellversion auszuschließen.

 
Schreiben Sie an EX5 private Nachrichten, ich habe gerade keinen Zugang zu Telegramm