Übersetzungsschwierigkeiten :) - Seite 4

 
Alexey Volchanskiy:

Bitte sehr. Aber ich habe geschrieben, dass ich ein faules Kätzchen bin))

Das ist der Grund, warum ich den Teufel nicht jedes Mal an den Eiern ziehe, sondern die Auftragsdaten im Unterricht behalte.

Rein auf eine Frage hin: Vermutlich wollten Sie Positionen überprüfen, nicht Haftbefehle? М... Ich hätte es anders gemacht, aber der Live-Feed sieht ungefähr so aus

Ich habe 40 dieser Funktionen in meiner Vorlage für alle Gelegenheiten. Ich habe sie getrennt für Aufträge und getrennt für Positionen. Wir verwenden diejenigen, die wir in unserem EA benötigen, und außerdem können wir den Algorithmus des EA in wenigen Minuten erweitern oder ändern. Deshalb verwende ich die Funktionen innerhalb einer Datei und brauche nichts zusätzlich zu verbinden.

Ja, ich würde gerne die Positionen und, wenn möglich, auch die Aufträge überprüfen, das wäre toll)

Aleksey, wenn du nach dem Nachtspaziergang Zeit und Lust hast, schreibe bitte, ich werde schauen, wie es aussehen soll und ich werde alles analog umschreiben.

Danke!

//==================

P.S. Während ich schrieb, gaben Sie eine Antwort)

(c) Warum müssen Sie nach demEinfügen von code!!!! alle möglichen Dinge einfügen?

Es ist zu wissen, welche Funktion, wie ein Kommentar, es gibt eine Menge von ihnen

Danke für die Antwort, ich werde weiter recherchieren ))))

 
Alexey Volchanskiy:

Bitte sehr. Aber ich habe geschrieben, dass ich ein faules Kätzchen bin))

Das ist der Grund, warum ich den Teufel nicht jedes Mal an den Eiern ziehe, sondern die Auftragsdaten im Unterricht behalte.

Rein auf eine Frage hin: Vermutlich wollten Sie Positionen überprüfen, nicht Haftbefehle? М... Ich hätte es anders gemacht, aber die Live-Übertragung sieht so aus

Die blöde Seite ist wieder abgestürzt, ich gehe zu reddit, da ist alles klar.

****************** dumme Website !!!!!!!!!!!!!!

warum muss man nach der Eingabe von code!!!! noch so einen Scheiß einfügen?

Nein Alexey, das ist nicht ganz richtig. PositionSelect(Symbol()) wählt die gleiche Position. Das ist gut für ein Netz.

Hier ist auch ein Stück mit ungepaarten Klammern, jeder hier versteht es

    for(i = 0; i < PositionsTotal(); i++)
     {
      if(PositionGetTicket(i) > 0 && PositionGetString(POSITION_SYMBOL) == Symbol() && PositionGetInteger(POSITION_MAGIC) == magic)
       {
        if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY || PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)
         {
 
Vitaly Muzichenko:

Ja, ich wollte einen Blick auf die Positionen werfen und wenn du kannst, auch auf die Aufträge, das wäre super)


Für schwebende Aufträge wäre es fast dasselbe

    for(i = 0; i < Orders Total(); i++)
     {
      if(OrderGetTicket(i) > 0 && Order GetString(POSITION_SYMBOL) == Symbol() && Order GetInteger(POSITION_MAGIC) == magic)
       {
        if(Order GetInteger(POSITION_TYPE) == POSITION_TYPE_BUY_STOP || Order GetInteger(POSITION_TYPE) == POSITION_TYPE_SELL_STOP) // или другие типы
         {
 
Alexey Viktorov:

Für schwebende Aufträge ist es fast dasselbe

Herzlichen Dank an die fünf Autoren für ihre Hilfe!
 
Vitaly Muzichenko:

Alexej, eine Frage an Sie:

Wie langwierig und schwierig ist es, Projekte zu übersetzen, die im prozeduralen Stil geschrieben sind? Warum verfahrenstechnisch? - Früher habe ich es so gemacht: eine Vorlage für alle Gelegenheiten, 3-5 Zeilen für die Bedingungen, und jede Eule ist in einer halben Stunde fertig, mit all dem Debugging

Nächste:

Ist es möglich, die Funktion zum Öffnen der Position so umzuschreiben, dass sie auf die gleiche Weise wie in Quad angewendet wird? Ich habe mich im Laufe der Jahre an die Namen und die Verwendung der Funktionen gewöhnt und muss keine Bibliotheken einbinden.

Nun, und ein Block von Bedingungen für das Öffnen und Erstellen von Grafiken:

Viele weitere Grafiken, schrieb einmal auf fünf, so gibt es etwas durch .opa Zeit und Preis der Auswahl des ersten Punktes und der zweiten getan. Im vierten Fall funktioniert ObjectSetInteger(0,nm,OBJPROP_TIME1, t1) und ObjectSetInteger(0,nm,OBJPROP_TIME2, t2), aber im fünften Fall funktioniert eine solche Konstruktion nicht(

Ich danke Ihnen im Voraus für Ihre Antwort!

Ich habe gestern ein weiteres Projekt umgeschrieben, es ist ein ziemlich großer Expert Advisor. Mein Kunde hat wochenlang an der Optimierung gearbeitet, der Code ist sehr umfangreich und es gibt viele Parameter. Ich habe ihn ermutigt, auf 5 mit Hedge umzusteigen, ich sagte, er könne es in der Cloud optimieren. Heute schreibt er, dass er sich so schnell in die Hose macht, dass er ein paar Stunden brauchte, um alles zu optimieren, wofür er früher Wochen brauchte. Natürlich gibt es in der Regel ein paar tausend freie Mitarbeiter in der Cloud.

Nun zu Ihrer Frage, ich habe einige Erfahrungen gesammelt, es gibt einige Antworten.

Lassen Sie sie den prozeduralen Stil beibehalten, niemand zwingt Sie zur Verwendung von OOP.

2. Hier ist ein guter Artikel über Funktionen in MQL4 und 5. Dort befindet sich ein Tisch . https://www.mql5.com/ru/articles/81.

Hier finden Sie eine Bibliothek zur kombinierten Nutzung von 4 und 5 Handelsfunktionen. Ich habe es nicht ausprobiert, aber es ist interessant. https://www.mql5.com/ru/code/16006

Переход с MQL4 на MQL5
Переход с MQL4 на MQL5
  • 2010.05.11
  • Sergey Pavlov
  • www.mql5.com
Данная статья, построенная в форме справочника по функциям MQL4, призвана помочь переходу с MQL4 на MQL5. Для каждой функции языка MQL4 приведено описание и представлен способ ее реализации на MQL5, что позволит вам значительно ускорить перевод своих программ с MQL4 на MQL5. Для удобства функции разбиты на группы, как в документации по MQL4.
 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Übersetzungsschwierigkeiten :)

Vitaly Muzichenko, 2016.08.15 21:00

Ich stimme zu.)

Alexey, dann als ein Spiel) übersetzen Sie bitte diese Funktion zu Fünfen:

//===============================================================================================
//------------------------------- Возвращает количество позиций --------------------------------+
//===============================================================================================
int NumberOfPositions(string symb="0", int type=-1, int mg=-1) {
 int kp=0;
  if(symb=="0") { symb=Symbol();}
  for(int i=0; i<OrdersTotal(); i++) {
   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
    if((OrderSymbol()==symb||symb=="")&&(type<0||OrderType()==type)&&(mg<0||OrderMagicNumber()==mg)) {
     if(OrderType()==OP_BUY || OrderType()==OP_SELL) {
      kp++;
 }}}}
  return(kp);
 }

Wie man es in vier - Sie wissen schon - verwendet.

Ich danke Ihnen!


Ich habe eine etwas andere Meinung zur Übersetzung. Keine "Ersetzungen" in VS. Ich füge nur eine einzige Zeile hinzu. Der Arbeitscode der genannten Funktion für MT5-Hedge

// https://www.mql5.com/ru/code/16006
#include <MT4Orders.mqh>

//===============================================================================================
//------------------------------- Возвращает количество позиций --------------------------------+
//===============================================================================================
int NumberOfPositions(string symb="0", int type=-1, int mg=-1) {
 int kp=0;
  if(symb=="0") { symb=Symbol();}
  for(int i=0; i<OrdersTotal(); i++) {
   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
    if((OrderSymbol()==symb||symb=="")&&(type<0||OrderType()==type)&&(mg<0||OrderMagicNumber()==mg)) {
     if(OrderType()==OP_BUY || OrderType()==OP_SELL) {
      kp++;
 }}}}
  return(kp);
 }

Der Code wurde sofort plattformübergreifend.

Ähnlich verhält es sich mit dem MT4 Expert Advisor eines anderen Anbieters im MT5-Tester - Beispiel.

 
fxsaber:

Ich habe eine etwas andere Auffassung von Übersetzung. Keine "Ersetzungen" in VS. Ich füge nur eine einzige Zeile hinzu. Arbeitscode der genannten Funktion für MT5-Hedge

Der Code wurde sofort plattformübergreifend.

Ähnlich verhält es sich mit dem MT4 Expert Advisor eines anderen Anbieters im MT5-Tester - Beispiel.

Super! Ich habe CTrade gestern wegen der Übersetzungsgeschwindigkeit benutzt, die Bibliothek habe ich mir noch nicht angesehen. Aber ich werde es mir auf jeden Fall ansehen.
 
Alexey Volchanskiy:
Super! Ich habe CTrade gestern wegen der Übersetzungsgeschwindigkeit benutzt, die Bibliothek habe ich mir noch nicht angesehen. Aber ich werde auf jeden Fall einen Blick darauf werfen.

Meine MT4Orders.mqh hat bei mir nicht funktioniert - sie steht im Konflikt mit der Standardbibliothek, die ich bereits verwende. Wahrscheinlich sollte er nur bei einem sauberen Blatt sein.

'::' - unexpected token Trade.mqh       126     22
'::' - unexpected token Trade.mqh       1477    14
'MqlTradeResult' - identifier already used      Trade.mqh       1477    55
see previous declaration of '           0       0
'&' - semicolon expected        Trade.mqh       1477    70
'if' - expressions are not allowed on a global scope    Trade.mqh       1483    4
'else' - expressions are not allowed on a global scope  Trade.mqh       1485    4
'if' - expressions are not allowed on a global scope    Trade.mqh       1488    4
'else' - expressions are not allowed on a global scope  Trade.mqh       1493    4
'return' - expressions are not allowed on a global scope        Trade.mqh       1499    4
')' - expressions are not allowed on a global scope     Trade.mqh       1500    3
declaration of 'action' hides global declaration in file 'Trade.mqh' at line 1480       DealInfo.mqh    244     55

**

 
Alexey Volchanskiy:

Meine MT4Orders.mqh hat bei mir nicht funktioniert - sie steht im Konflikt mit der Standardbibliothek, die ich bereits verwende. Wahrscheinlich sollte er nur bei einem sauberen Blatt sein.

**

#include <MT4Orders.mqh> // если есть #include <Trade/Trade.mqh>, вставить эту строчку ПОСЛЕ
 

Frage: Woher weiß ich, wie hoch die Provision für eine Position in MQL5 ist?

Ich habe es in MQL4 wie folgt gemacht

double oProfit = OrderProfit() + OrderSwap() + OrderCommission(); // MQL4

In MQL5 gibt es keine Provision.

double oProfit = PositionGetDouble(POSITION_PROFIT) + PositionGetDouble(POSITION_SWAP);

Ich habe in den Auftragseigenschaften nachgeschaut, und auch dort gibt es keine Provision. Was sollte ich tun?