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

 
CopyBuffer nicht in mt4 gefunden, nur in mt5 Nicht in mt4? gibt es eine einfache Puffer-Array-Nummern, um Daten in mt4 zu erhalten?
 
Valeriy Yastremskiy:
CopyBuffer nicht in mt4 gefunden, nur in mt5 Nein in mt4?

keine

in MT4 ist es iCustom()https://docs.mql4.com/ru/indicators/icustom

Ich habe es letztes Jahr überprüft, der iCustom()-Aufruf von EA ist zwischenspeicherbar, d.h. wenn SieiCustom() mehrmals von EAfür verschiedene Puffer oder Indizes auf demselben Tick aufrufen, wird der Indikator selbst einmal für diesen Tick neu berechnet, d.h. mit der Leistung ist alles in Ordnung

ZS: warum MT4 - wenn MT5 bereits "ausgereift" ist, die Produktivität höher ist, der Tester genauer ist... Alles in allem eine gute Sache für die Forschung, denke ich.

 
Igor Makanu:

keine

in MT4 ist es iCustom()https://docs.mql4.com/ru/indicators/icustom

Ich habe es letztes Jahr überprüft, der iCustom()-Aufruf von EA ist zwischenspeicherbar, d.h. wenn SieiCustom() mehrmals von EAfür verschiedene Puffer oder Indizes auf demselben Tick aufrufen, wird der Indikator selbst einmal für diesen Tick neu berechnet, d.h. mit der Leistung ist alles in Ordnung

ZS: warum MT4 - wenn MT5 schon "ausgereift" ist, die Produktivität höher ist, der Tester genauer ist... Alles in allem eine gute Sache für die Forschung, denke ich.

Auf MT4 ist es einfacher, mit Ideen zu arbeiten. Die Schale ist einfacher))) Nein, also nein. Schreiben wir)))) in einer Schleife in das Array auf die altmodische Weise Ich habe diese Stufen noch nicht erreicht)))) In MT5 macht es Sinn, zu skalieren, wenn MT4 nicht mehr funktioniert))) und das ist entweder zu langsam oder zu viele Daten.

hinzugefügt. Und wenn die Idee bis zu einem akzeptablen Fehler ausgearbeitet ist.
 

Guten Tag zusammen. Die Gralsmaschine ist fast fertig, aber wenn ich sie kompiliere, erhalte ich etwa 50-60 Warnungen, dass der Rückgabewert von'OrderSend' überprüft werden sollte TREND+ _V_1,1.mq4 1626 11

Soweit ich es verstehe, denn ich schreibe die Eröffnung von Aufträgen ohne jede Prüfung, etwa so

//--- АО БАЙ--

   /*УСЛОВИЕ 1*/
   if(flag_screen1==en_vbIkl_screen1 &&flag_screen2==en_vbIkl_screen2)
   { // НАЧАЛО УСЛОВИЕ 1
   if(ao_buy!=EMPTY_VALUE && count_orders_market_buy ==0)
   {
     OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_buy); // ОТКРЫВАЕМ БАЙ ОРДЕР
   }
   } // КОНЕЦ УСЛОВИЕ1
 
DanilaMactep:

Guten Tag zusammen. Die Gralsmaschine ist fast fertig, aber wenn ich sie kompiliere, erhalte ich etwa 50-60 Warnungen, dass der Rückgabewert von 'OrderSend' überprüft werden sollte TREND+ _V_1,1.mq4 1626 11

Soweit ich es verstehe, denn ich schreibe die Eröffnung von Aufträgen ohne jede Prüfung - etwa so

Schreiben Sie es so

if(OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_buy)) Print(Buy Open); // ОТКРЫВАЕМ БАЙ ОРДЕР
 
MakarFX:

dies schreiben

diese Code-Zeile funktioniert nicht:( 2 Fehler wie dieser erscheinen auf einmal:

Kaufen" - nicht deklarierter Bezeichner TREND+_1,1.mq4 860 98


Open' - irgendein Operator erwartet TREND+_V_1,1.mq4 860 102

Und der Code selbst sieht folgendermaßen aus

if(OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_market_buy)) Print(Buy Open); // ОТКРЫВАЕМ БАЙ ОРДЕР


Ich habe alles wie empfohlen geschrieben, mit dem einzigen Unterschied, dass ich den Variablennamen für den Kommentar geändert habe, um den Kommentar für Market und Pending Orders zu trennen. Was mache ich falsch?
 
Print("Buy Open");
 
DanilaMactep:

Diese Codezeile funktioniert nicht:( Es erscheinen 2 Fehler dieser Art auf einmal:

Kaufen" - nicht deklarierter Bezeichner TREND+_1,1.mq4 860 98


Open' - irgendein Operator erwartet TREND+_V_1,1.mq4 860 102

und der Code selbst sieht folgendermaßen aus


Ich habe alles wie empfohlen geschrieben, mit dem einzigen Unterschied, dass ich den Variablennamen für den Kommentar geändert habe, um den Kommentar für Market und Pending Orders zu trennen. Was mache ich falsch?

Ich habe "" vermisst.

Vladislav Andruschenko:

Print("Buy Open");


 
Beim ersten Start des Indikators in der OnCalculate-Methode funktioniert CopyRates nicht
                MqlRates rates[];
                if (CopyRates(_Symbol, _Period, (datetime)SeriesInfoInteger(Symbol(), Period(), SERIES_SERVER_FIRSTDATE), 1, rates) == -1)
                {
                        return(0);
                }

Ticks kommen, es ist sichtbar auf Drucke, aber es kopiert nicht, als ob es keinen Indikator im Terminal, nur Änderung der Periode mit Indikator hilft, dann nach dem ersten Start Indikator funktioniert gut.

 
BillionerClub:
Beim ersten Start des Indikators in der OnCalculate-Methode funktioniert CopyRates nicht

Ticks kommen es ist sichtbar auf Drucke, aber nicht kopieren, als ob es keine Indikator im Terminal, nur Änderung der Periode mit Indikator hilft, dann nach dem ersten Start Indikator funktioniert normal.

Hilfe:CopyRates

Hinweis

Wenn das Intervall der angeforderten Daten auf dem Server vollständig außerhalb des Bereichs liegt, gibt die Funktion -1 zurück. Falls Daten außerhalb vonTERMINAL_MAXBARS(maximale Anzahl von Balken im Diagramm) angefordert werden, gibt die Funktion ebenfalls -1 zurück.

Wenn die Daten vom Indikator angefordert werden und die angeforderten Zeitreihen noch nicht erstellt wurden oder von einem Server heruntergeladen werden müssen, gibt die Funktion sofort -1 zurück, aber der Prozess des Herunterladens/Erstellens wird eingeleitet.

Wenn Daten vom Expert Advisor oder einem Skript angefordert werden, wird dasLaden vom Server initiiert, wenn das Terminal diese Daten nicht lokal hat, oder der Aufbau der benötigten Zeitreihen beginnt, wenn die Daten aus der lokalen Historie aufgebaut werden können, aber noch nicht bereit sind. Die Funktion gibt die Datenmenge zurück, die bis zur Timeout-Zeit fertig ist, aber das Laden der Historie wird fortgesetzt, und die nächste ähnliche Anfrage wird mehr Daten zurückgeben.

Bei der Abfrage von Daten nach dem Anfangsdatum und der Anzahl der gewünschten Positionen werden nur Daten mit einem Datum kleiner (früher als) oder gleich dem angegebenen Datum zurückgegeben. Gleichzeitig wird das Intervall auf die Sekunde genau angegeben und berücksichtigt. Es bedeutet, dass das Eröffnungsdatum eines jeden Balkens, für den der Wert zurückgegeben wird (Volumen, Spread, Wert im Indikatorpuffer, Preis Open, High, Low, Close oder Open Time Time), immer gleich oder kleiner als der angegebene Wert ist.

Bei der Abfrage von Daten im angegebenen Datumsbereich werden nur Daten zurückgegeben, die in das angeforderte Intervall fallen, wobei das Intervall auf die Sekunde genau angegeben und berücksichtigt wird. Das bedeutet, dass die Eröffnungszeit eines jeden Balkens, für den ein Wert zurückgegeben wird (Volumen, Spread, Wert im Indikatorpuffer, Preis Open, High, Low, Close oder Open Time Time), immer innerhalb des angeforderten Intervalls liegt.

Wenn also deraktuelle Wochentag der Samstag ist, gibt die Funktionbeim Versuch, die Daten in den wöchentlichen Zeitrahmen zu kopieren, unter Angabe vonstart_time=Last Tuesday undstop_time=Last Friday den Wert 0 zurück, da die Eröffnungszeit des wöchentlichen Zeitrahmens immer auf den Sonntag fällt, aber kein wöchentlicher Balken in den angegebenen Bereich fällt.

Wenn Sie den Wert des aktuellen, noch nicht beendeten Taktes abrufen möchten, können Sie die erste Form des Aufrufs verwenden, wobei Siestart_pos=0 undcount=1angeben.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
CopyRates - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5