Fehler, Irrtümer, Fragen - Seite 133

 
Interesting:
Soweit ich die Abgrenzung verstehe, wie in der Demo oder im Tester...
Was ist das? "Re-accrual" oder "accrual"?
 
Dmitriy2:

Also bei der Ausgabe von Werten in das Protokoll, nur einmal (zum ersten Mal) die Parabelfunktion, d.h. CopyBuffer, gibt 0 und nicht -1 zurück, wie es im Falle eines Fehlers sein sollte (obwohl es auch nicht sein sollte, alle Daten sind da, alle heruntergeladen, keine großen mehrdimensionalen Arrays, sollte kein Fehler auftreten!) Und dies geschieht NUR im Tester und NUR EINMAL. Von nun an funktioniert alles einwandfrei.

Im Basiscode ist es mir egal, was die Funktionen zurückgeben, wenn es schließlich zu einer Handelsanfrage kommt, werden die für die Anfrage erhaltenen Werte von der universellen Funktion überprüft, und wenn alles in Ordnung ist, senden wir die Anfrage, wenn nicht - warten wir darauf, dass sie in Ordnung ist...

Versuchen Sie, den folgenden Code in Ihre Funktion zum Abrufen von Parabelwerten einzubauen.

double Параболик(ENUM_TIMEFRAMES период,double step,double maximum,int бар)
  {
   double ЗначениеParabolic[1];
   int Parabolic=iSAR(Symbol(),период,step,maximum);
   int cb=CopyBuffer(Parabolic,0,бар,1,ЗначениеParabolic);
   if(cb!=1) Print("BarsCalculated ",BarsCalculated(Parabolic),", CopyBuffer ", cb, ", ArrayValue ",ЗначениеParabolic[0]);
   return(ЗначениеParabolic[0]);
  }

Im Protokoll erhalten Sie dann etwa folgende Meldung

2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1    SLпоПервойТочкеПараболика=true

Das wird erklären, warum Sie 0 und nicht -1 erhalten.

Ich wiederhole es zum 3. Mal. Die Daten sind vorhanden, aber die Indikatorwerte können zu diesem Zeitpunkt noch nicht berechnet werden. Es wird in der Hilfe beschrieben!

 
maryan.dirtyn:
Was ist das? Wiederverschlüsselung oder Akkumulation
Overcritching leidet unter FC, MT hat sein ganzes Leben lang unter Akkumulation gelitten. Single an normalen Tagen und x3 am Mittwoch(Triple Swap Day sollte geklärt werden)...
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
Interesting:
FC leidet an Überakkumulation, MT hat sein ganzes Leben lang Akkumulation betrieben. Single an normalen Tagen und x3 am Mittwoch(Triple Swap Day sollte geklärt werden)...
Ich weiß nicht, was fc ist... Ich muss nur wissen, WIE es bei den Meisterschaften sein wird.
 
alexvd:

Probieren Sie diesen Code in Ihrer Funktion aus, um den Wert der Parabel zu ermitteln.

Im Protokoll erhalten Sie ungefähr diese Ausgabe

Dies erklärt, warum Sie 0 und nicht -1 erhalten.

Ich werde es zum 3. Mal wiederholen. Die Daten sind vorhanden, aber die Indikatorwerte sind zu diesem Zeitpunkt möglicherweise noch nicht berechnet worden. Das steht in der Hilfe!

Genau, wir erhalten den Parabelwert, nicht die CopyBuffer-Antwort...

Okay... Ändern Sie die Parabelfunktion in die von Ihnen angegebene Funktion (mit den Ausdrucken).

Ich füge die Ausdrucke in die for-Schleife ein (sie hat keinen Nullschutz)

if(НапрСигнала==ORDER_TYPE_BUY)
     {
      if(SLпоПервойТочкеПараболика==true)
         for(i=0;;i=i+1)
           {
            Print("бай, параболик до иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
            if(iLow(PERIOD_CURRENT,i+1,1)<Параболик(PERIOD_CURRENT,0.02,0.2,i+1))// || Параболик(PERIOD_CURRENT,0.02,0.2,i+1)<=0
              {
               Print("бай, параболик после иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
               break;
              }
           }
      ЗначениеSAR=NormalizeDouble(Параболик(PERIOD_CURRENT,0.02,0.2,i)/ТИК,0)*ТИК;
      if(БИД>ЗначениеSAR) //bay
         slтики=(int)NormalizeDouble((АСК-ЗначениеSAR)/ТИК,0);
     }
   if(НапрСигнала==ORDER_TYPE_SELL)
     {
      if(SLпоПервойТочкеПараболика==true)
         for(i=0;;i=i+1)
           {
            Print("селл, параболик до иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
            if(iHigh(PERIOD_CURRENT,i+1,1)>Параболик(PERIOD_CURRENT,0.02,0.2,i+1))// || Параболик(PERIOD_CURRENT,0.02,0.2,i+1)<=0
              {
               Print("селл, параболик после иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
               break;
              }
           }
      ЗначениеSAR=NormalizeDouble(Параболик(PERIOD_CURRENT,0.02,0.2,i)/ТИК,0)*ТИК;
      if(БИД<ЗначениеSAR) //sell
         slтики=(int)NormalizeDouble((ЗначениеSAR-БИД)/ТИК,0);
     }

Führen Sie es im Testgerät aus

JQ      0       Core 1  15:16:37        agent process started
NJ      0       Core 1  15:16:37        connecting to 127.0.0.1:3000
NJ      0       Core 1  15:16:39        connected
GP      0       Core 1  15:16:39        authorized (agent build 328)
LK      0       Tester  15:16:39        EURUSD,H1 (MetaQuotes-Demo): testing of Experts\Отладка.ex5 from 2010.01.01 00:00 to 2010.09.11 00:00 to be started
RH      0       Core 1  15:16:41        common synchronization completed
RS      0       Core 1  15:16:41        3124 bytes of account info loaded
RI      0       Core 1  15:16:41        3768 bytes of group info loaded
MN      0       Core 1  15:16:41        7170 bytes of tester parameters loaded
EL      0       Core 1  15:16:41        275 bytes of selected symbols loaded
IK      0       Core 1  15:16:41        expert file added: Experts\Отладка.ex5. 6597 bytes loaded
LE      0       Core 1  15:16:41        initial deposit 10000.00 USD, leverage 1:100
KO      0       Core 1  15:16:41        successfully initialized
RQ      0       Core 1  15:16:41        23 Kb of total initialization data received
KK      0       Core 1  15:16:41        performance: 72
HP      0       Core 1  15:16:41        EURUSD: symbol synchronized, 2904 bytes of symbol info received
RI      0       Core 1  15:16:43        EURUSD: load 27 bytes of history data to synchronize
MG      0       Core 1  15:16:43        EURUSD: history synchronized from 1993.05.13 to 2010.09.10
MP      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
CD      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
IK      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
ON      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
ER      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
KI      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
QL      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
GP      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
MG      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
CK      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
IN      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
OE      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
EI      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
KL      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
QS      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
GG      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
KJ      0       Core 1  15:16:47        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
EN      0       Core 1  15:16:47        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0

und so weiter, bis Sie auf Abbrechen drücken

Expert Advisor auf dem Diagramm

PJ      0       Experts 15:27:14        expert Отладка (EURUSD,M20) removed
MR      0       Trades  15:27:18        '677265' : instant buy 0.10 EURUSD at 1.29697
EH      0       Trades  15:27:19        '677265' : accepted instant buy 0.10 EURUSD at 1.29697
GL      0       Trades  15:27:21        '677265' : order #1350474 buy 0.10 EURUSD at 1.29697 done
LH      0       Trades  15:27:21        '677265' : deal #1426626 buy 0.10 EURUSD at 1.29697 done (based on order #1350474)
LI      0       Experts 15:27:56        expert Отладка (EURUSD,M20) loaded successfully
IR      0       Trades  15:28:07        '677265' : instant sell 0.10 EURUSD at 1.29690 sl: 1.30136 tp: 1.29502
IM      0       Trades  15:28:08        '677265' : accepted instant sell 0.10 EURUSD at 1.29690 sl: 1.30136 tp: 1.29502
RK      0       Trades  15:28:10        '677265' : order #1350477 sell 0.10 EURUSD at 1.29690 done
RO      0       Trades  15:28:10        '677265' : deal #1426629 sell 0.10 EURUSD at 1.29690 done (based on order #1350477)

keine Fehler im Journal

Sehen Sie sich das Bild auf der Registerkarte Experten an; auch hier keine Fehlermeldungen

man kann die parabolischen Punkte zählen, alles fällt gut zusammen, am zwölften Punkt verlässt man den Zyklus...

 

Ich habe schon vor langer Zeit festgestellt, dass in MQL5 in "diesem Moment" oder zu diesem Zeitpunkt... Die Daten hier oder dort werden möglicherweise nicht berechnet... Aber es ist nicht richtig, man muss es beheben und nicht nur Krücken in den Code schreiben.

Das gilt übrigens auch für alle anderen Indikatoren, nicht nur für den Parabolspiegel.

 
maryan.dirtyn:
ich weiß nicht, was fc ist. ich muss nur wissen, WIE es bei den Meisterschaften sein wird.

FC - Forex Club und sagen, sein Terminal Rumus2.

Haben Sie ein Testkonto für die Meisterschaft? Probieren Sie es aus und alles wird klar...

 
Dmitriy2:

Ich habe schon vor langer Zeit festgestellt, dass in MQL5 in "diesem Moment" oder zu diesem Zeitpunkt... Die Daten hier oder dort werden möglicherweise nicht berechnet... Aber es ist nicht richtig, man muss es beheben und nicht nur Krücken in den Code schreiben.

Übrigens gilt das auch für alle anderen Indikatoren, nicht nur für den Parabolspiegel.

Wir sollten die Diskussion nicht vervielfachen.

Dieses Thema wurde bereits mehrfach diskutiert. Sie wurde vor nicht allzu langer Zeit wieder aufgegriffen(https://www.mql5.com/ru/forum/1951)

Тестер стратегий. Помогите разобраться с ошибкой.
Тестер стратегий. Помогите разобраться с ошибкой.
  • www.mql5.com
mq5) handle индикатора объявляется как глобальная переменная, индикатор инициализируется в OnInit() и передается в функцию.
 

Sitzen... Ich beobachte...

Ich werde nie glauben, dass MQL5 und MQL4 von demselben Team geschrieben wurden.(((

MQ4 - Fliegen...

MQ5 ist ein Kinderspiel. Nicht böse gemeint - aber...(((

 
alexvd:

Lassen Sie uns keine Diskussion führen.

Dieses Thema wurde bereits mehrfach diskutiert. Sie wurde vor nicht allzu langer Zeit wieder aufgegriffen(https://www.mql5.com/ru/forum/1951)

Ich habe diesen Thread nicht gesehen... das Gleiche...

Der Punkt ist, dass ich nicht dummerweise in jeder Zeile Prüfungen für alle Fälle vornehmen will, was den Code verwirrt und unübersichtlich macht. Wenn das nicht in Frage kommt, dann... werden Krücken hinzugefügt, ein ausreichend großes Projekt wird endlich komplett überarbeitet und funktioniert...

Und ganz allgemein bin ich über diesen Ansatz erstaunt... Es stellt sich heraus, dass nicht das erste Mal eine solche Frage entsteht (und ich bin sicher, mehr als einmal in der Zukunft wird in anderen Menschen entstehen), und jedes Mal "zum ersten Mal", um eine Menge von Ihrem und anderen Arbeit Zeit zu erklären, was Sie tun müssen, um diesen Fehler zu umgehen ...

Das einzige, was zu tun ist, um in TESTER, dass in diesem Thread empfohlen, nur ONE Sleep (1000) zu Beginn der Expert Advisor hinzufügen.

Es darf nicht so sein, dass die Shell Pannen implizieren würde, und diese Pannen müssen im Code vermieden werden. Und das TERMINAL arbeitet korrekt und einwandfrei, es gibt KEINE FEHLER (in dieser Situation). Die Funktionsweise des Prüfgeräts unterscheidet sich jedoch von der des Terminals.

ps EQU Hallo:)

Grund der Beschwerde: