Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1030

 
Sabit Dosaev:
Eine einfache Frage. Die Eule lässt sich nicht kompilieren. Am Ende des Codes ist ein Fehler aufgetreten. + __FUNCSIG__
+ ": "+Market_Err_To_Str(errIndex)
+ "; Bestellschein = " + (string)OrderTicket()
+ "; Auftragsart = " + (string)OrderType()
+ "; Order Stop Loss = " + DoubleToStr(OrderStopLoss(), Digits())
+ "; neuer Stop-Loss = " + DoubleToStr(newStopLoss, Digits())
+ "; Bid = " + DoubleToStr(Bid, Digits())
+ "; Ask = " + DoubleToStr(Ask, Digits())
);
}
}
lastSetNonlosTryTime = TimeLocal();
}


Wirft einen Kompilierungsfehler. Bitte helfen Sie, wenn Sie können. Ich danke Ihnen!

Fügen Sie den Code korrekt ein:


И... Aus dem Code ist nicht ersichtlich, worin Ihr Fehler besteht. Der Code sollte reproduzierbar sein.

 
string LastComm(int a_magic_0)
  {
   int l_hist_total_4 = OrdersHistoryTotal();
   int l_datetime_8 = 0;
   int l_datetime_12 = 0;
   string ls_ret_16 = "0";
   for(int l_pos_24 = 0; l_pos_24 < l_hist_total_4; l_pos_24++)
     {
      OrderSelect(l_pos_24, SELECT_BY_POS, MODE_HISTORY);
      l_datetime_8 = OrderCloseTime();
      if(l_datetime_8 > l_datetime_12 && OrderMagicNumber() == a_magic_0)
        {
         l_datetime_12 = l_datetime_8;
         ls_ret_16 = OrderComment();
        }
     }
   return (ls_ret_16);
  }

@Artyom Trishkin

Wie kann ich diese Funktion von MQL4 in MQL5 umwandeln?

 

Guten Tag an alle.

Könnten Sie mir bitte sagen, wo ich die Funktion IsConnected () einfügen soll, um den Status der Kommunikation zu ermitteln?

Wenn ich sie in die Funktion OnTick() einfüge, besteht immer eine Verbindung (d. h. wenn ein Tick eintrifft, besteht eine Verbindung, wenn kein Tick eintrifft (aufgrund des Fehlens oder der Abwesenheit einer Verbindung), gibt es keinen Aufruf von OnTick() bzw. der Funktion, die den Verbindungsstatus IsConnected () definiert). Auf diesem ist es nutzlos, IsConnected () in den Rahmen OnTick () einzufÃŒgen (wie viele Male ich das Internet nicht ausgeschaltet habe, trotzdem schreibt es in die Datei ÃŒber die Abwesenheit der Verbindung nicht)

Aus diesem Grund stellt sich die Frage, wo man die IsConnected () Funktion richtig einfügt oder welche anderen Möglichkeiten es gibt, den Verbindungsstatus zu bestimmen (nur für MT4)

Ich danke Ihnen!

 
Roni Iron:

Guten Tag an alle.

Könnten Sie mir bitte sagen, wo ich die Funktion IsConnected () einfügen soll, um den Status der Kommunikation zu ermitteln?

Wenn ich sie in die Funktion OnTick() einfüge, besteht immer eine Verbindung (d.h. wenn ein Tick eintrifft, besteht eine Verbindung, wenn kein Tick eintrifft (aufgrund des Fehlens oder der Abwesenheit einer Verbindung), gibt es keinen Aufruf von OnTick() bzw. der Funktion, die den Verbindungsstatus IsConnected () definiert). Auf diesem ist es nutzlos, IsConnected () in den Rahmen OnTick () einzufÃŒgen (wie viele Male ich das Internet nicht ausgeschaltet habe, trotzdem schreibt es in die Datei ÃŒber die Abwesenheit der Verbindung nicht)

Aus diesem Grund stellt sich die Frage, wo man die IsConnected () Funktion richtig einfügt oder welche anderen Möglichkeiten es gibt, den Verbindungsstatus zu bestimmen (nur für MT4)

Ich danke Ihnen!

OnTimer()

Документация по MQL5: Обработка событий / OnTimer
Документация по MQL5: Обработка событий / OnTimer
  • www.mql5.com
//|                                               OnTimer_Sample.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Roman Shiredchenko:

Sie haben eine Verwechslung von Variablen und Funktionen, wenn es sich um eine Funktion handelt, versuchen Sie es auf diese Weise:

ALT + S für den Code

Dankeschön

Roman Shiredchenko:

Sie haben Verwirrung über Variablen und Funktionen, wenn es eine Funktion ist, versuchen Sie dies:

ALT + S

Ja, es ist eine Funktion.

Danke, aber aus irgendeinem Grund gibt es einen Fehler

'}' - nicht alle Kontrollpfade geben einen Wert zurück

obwohl ich anscheinend sowohl in meinem Code als auch in einer leeren Vorlage alles korrekt überprüft habe.

ALT + S - danke, ich werde es berücksichtigen

 
wolder1:

Dankeschön

Ja, es ist eine Funktion.

Danke, aber aus irgendeinem Grund gibt es einen Fehler

'}' - nicht alle Kontrollpfade geben einen Wert zurück

Obwohl die Klammern korrekt zu sein scheinen, sowohl in meinem Code als auch in der leeren Vorlage.

ALT + S - danke, ich werde es berücksichtigen.

Eine gute Frage enthält die Antwort (C)

 
wolder1:

Dankeschön

Ja, es ist eine Funktion.

Danke, aber aus irgendeinem Grund gibt es einen Fehler

'}' - nicht alle Kontrollpfade geben einen Wert zurück

Obwohl ich alles korrekt mit Klammern sowohl in meinem Code als auch in einer leeren Vorlage überprüft habe.

ALT + S - Dankeschön.

Die Funktion double sollte einen Wert zurückgeben, nicht wenn die Funktion ungültig ist.

wenn Sie oben in Ihrem Code Variablen definiert haben, können diese auskommentiert werden + Sie hatten hier zusätzliche Leerzeichen (Bid > = L8b)) - Ich habe eine Änderung vorgenommen:

double lot=0; //, Lots;
//   double L0a3, L2a3, L5a3, L8a3, L0b1, L2b1, L5b1, L8b1, L0a, L2a, L5a, L8a,L0b,L2b,L5b,L8b,L0a1,L2a1,L5a1,L8a1,L0b3,L2b3,L5b3,L8b3;  
double _LOTS()
  {
   double lot=0, Lots;
   double L0a3, L2a3, L5a3, L8a3, L0b1, L2b1, L5b1, L8b1, L0a, L2a, L5a, L8a,L0b,L2b,L5b,L8b,L0a1,L2a1,L5a1,L8a1,L0b3,L2b3,L5b3,L8b3;  
   if((Ask <= L0a3) || (Ask <= L2a3) || (Ask <= L5a3) || (Ask <= L8a3) || (Bid >= L0b1) || (Bid >= L2b1) ||
      (Bid >= L5b1) || (Bid >= L8b1))
      {
       lot=(NormalizeDouble(Lots, 2));
       Print(" lot = ", lot); 
       return(lot);
      }
      
    if((Ask <= L0a) || (Ask <= L2a) || (Ask <= L5a) || (Ask <= L8a) || (Bid >= L0b) || (Bid >= L2b) ||
      (Bid >= L5b) || (Bid >= L8b))
      {
       lot=(NormalizeDouble((Lots*1.5), 2));
       Print(" lot = ", lot); 
       return(lot);
      }
     
    

   if((Ask <= L0a1) || (Ask <= L2a1) || (Ask <= L5a1) || (Ask <= L8a1) || (Bid >= L0b3) ||
      (Bid >= L2b3) || (Bid >= L5b3) || (Bid >= L8b3))      
      {
       lot=(NormalizeDouble((Lots*2.5), 2));
       Print(" lot = ", lot); 
       return(lot);
      }
    return(lot);  
  } 
 

Guten Morgen.

Frage. Im Tester sollte das Programm an der tageslichtabhängigen Schnittstelle (wenn die nächste Tageslinie durchläuft) einen schwebenden Auftrag erteilt haben. Die schwebende Order, die bereits vorhanden war und der Preis sie berührte, wurde geöffnet, aber die Anweisung, eine weitereschwebende Order zu öffnen, wurde vom System aus irgendeinem Grund ignoriert. Kann dies auch bei einem echten Konto passieren, bei dem die Anweisungen des Roboters einfach ignoriert werden und daher die gewünschte Aktion nicht ausgeführt wird?


Und noch eine Frage. Ich führe einen Strategietester aus, aber ich war sehr verwirrt von der Tatsache, dass er eine Woche oder so in der Visualisierung geht und dann die folgende Meldung anzeigt

177564 Tick-Ereignisse (447 Takte, 7888506 Taktzustände) verarbeitet in 0:17:42.694 (Gesamtzeit 0:17:48.217)

177564 Tick-Ereignisse (447 Takte, 7888506 Taktzustände) verarbeitet in 0:17:42.694 (Gesamtzeit 0:17:48.217)

Ich verstehe das nicht, ist er zu beschäftigt, um weiter zu testen? Oder ist er so fürsorglich und besorgt um die Ressourcen meines Computers? Ich sehe keine Fehlermeldungen. Er beendet sich einfach selbst. Allerdings habe ich das Datum nicht auf 7 Tage, sondern auf 7 Monate festgelegt. Ich würde gerne den gesamten Testpfad von Anfang bis Ende sehen.

Welche Religion erlaubt es ihm nicht, zum Beispiel ein Jahr oder mehrere Jahre lang visuell zu prüfen? Und Sie können visuell nachvollziehen, wie Ihr Programm beispielsweise im vergangenen Jahr funktioniert hat.


Und noch eine Frage. (Auch wenn sie unbeantwortet bleiben kann). ) Wie kann es passieren, dass der Tester 2 Runden lang arbeitet, wie er sollte, und kurz vor der oben erwähnten Einschreibung am Tag einfach alle Anweisungen ignoriert. Wie ist es möglich, dass das Programm mehrere Runden lang korrekt funktioniert hat (Aufträge geöffnet und dann geschlossen), und dann, bumm, ignoriert es alles. Er öffnet und schließt sich nicht. Ist es wegen des Endes einer Testphase oder gibt es andere Gründe?

 

Guten Tag!!!

Ich benötige den Zeitpunkt der letzten abgeschlossenen Bestellung.

Ich habe eine Funktion geschrieben, aber sie funktioniert nicht richtig.

//+------------------------------------------------------------------+

//| Zeitpunkt des letzten Auftragsabschlusses |

//+------------------------------------------------------------------+

double Last_Ticets_Close()

{

Letztes_Ticet = 0;

Letzte_OrClZeit = 0;


for(int i=0; i<OrdersTotal(); i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY ))

{

if(OrderSymbol()==Symbol() && OrderMagicNumber()==magisch)

{

if(Last_Ticet<OrderTicket())

{

Last_Ticet = OrderTicket();

Last_OrClTime = OrderCloseTime();

}

}

}

}

zurück (Last_Ticet);

}

Kann mir jemand sagen, was los ist?

 
142vs:

Guten Tag!!!

Ich brauche den Zeitpunkt der letzten abgeschlossenen Bestellung.

Ich habe ein f-iio geschrieben, aber es funktioniert nicht richtig.

Kann mir jemand sagen, was los ist?

bei der Suche nach einem späteren Zeitpunkt die Zeiten vergleichen, nicht die Fahrkarten

Grund der Beschwerde: