Fehler, Irrtümer, Fragen - Seite 676

 

costy_,

nach einer fehlgeschlagenen Initialisierung eine Neuinitialisierung versuchen und in eine Endlosschleife geraten?

I in Oninite initialisiert Variablen (weist Variablen Werte zu), die sich auf die globale Ebene des Programms beziehen. In der Lage, Nicht-Null-Rückgabecode zu verwenden, ermöglicht es mir, die Ursache des Fehlers ausdrucken und das Programm in einer anständigen Weise zu stoppen (d.h. stoppen über OnDeinit). Das ist durchaus zufriedenstellend.

 

Nicht ewig, bis zum erfolgreichen Abschluss der initio. poiticovo (als Indikator) Warnung in der Hilfe.

Überprüfen Sie die globalen Variablen nach der Initialisierung, um festzustellen, ob sie korrekt initialisiert wurden?

Möchten Sie versuchen, sie noch ein paar Mal zu initialisieren, wenn die Initialisierung fehlschlägt?

 

Danke an alle, die geantwortet haben. Dieser Code entpuppte sich als ein Ausschnitt aus dem Multicurrency EA - es wurde festgestellt, dass der Tester ihn nicht essen will.

Neue Details: Der Drop findet nur am 7. und 8. März 2011 statt, nur auf Alpha forex

 

köstlich_

 Не вечный, до удачного завершения иниц. потиково (т.к. индикатор) предупредив в справке.

Offenbar verstehe ich Ihre Absicht nicht, nämlich, ich verstehe nicht, was "Initialisierung in Oninit() po-tikovo" ist, und was"erfolgreiche Initialisierung in Oninit() po-tikovo" ist.

Überprüfen Sie globale Variablen nach der Initialisierung, um sicherzustellen, dass sie korrekt initialisiert wurden?

Ein weiteres Konzept, das mir neu ist: "Globale Variablen eines Programms nach der Initialisierung auf Konsistenz mit der Initialisierung prüfen".

Aber ich kann die Frage beantworten. Die Prüfung, ob die Zuweisung von Werten an globale Variablen eines Programms (z. B. Handles) erfolgreich war, erfolgt innerhalb der Funktion Oninit(). Im Falle eines Fehlers führe ich die letzte Schleife dort (in Oninit) aus, falls erforderlich. Im Falle eines endgültigen Fehlers bei der Zuweisung von Werten an die Variable innerhalb von Oninit(), sende ich eine Nachricht an den Drucker. Dann finde ich entweder meinen Fehler im Code oder melde ihn im Forum.

Ich prüfe nicht, ob der Typ "Initialisierung passend" nach Beendigung der Funktion Oninit() vorliegt, da es keinen Sinn macht, wenn die Funktion Oninit() erfolgreich beendet wird.

Was ist mit Ihrem Beispiel: Dort ist eine lokale Variable bool err deklariert. Haben Sie vor, die lokale Variable der Funktion Oninit() irgendwie zu initialisieren?

Möchten Sie versuchen, sie noch ein paar Mal zu initialisieren, wenn sie fehlschlagen?

Ich tue dies die ganze Zeit innerhalb der Funktion Oninit(), bis sie beendet wird.

Lassen Sie mich hinzufügen. Mit "Initialisierung" meine ich in diesem Thread die Zuweisung von Werten an globale Variablen in der Oninit-Funktion (d.h. in der Umgangssprache). Ich füge hinzu, dass das Client-Terminal vor dem Senden des Init-Ereignisses seinen eigenen Prozess der Initialisierung der globalen Variablen startet.

 

ilunga

In der Tat sind bessere Code- und Testbedingungen in der Warteschleife.

 

In der Funktiontrali_vali_for_indicator() werden mehrereMqlRates EURUSD[],AUDUSD[],GBPUSD[],NZDUSD[],USDCAD[],USDCHF[],USDJPY[]synchronisiert;

es gibt keine Möglichkeit, dies beim ersten Versuch zu tun, theoretisch einmal synchronisiert und es gibt beispielhafte Strukturen mit xxxxxx[0].time == yyyyy[0].time== ..... zzzzzzzz[0] further sync by time > xxxxxxxx[0].time.

Ich habe meine init()-Funktion erstellt, aber es geht umOnInit()!

WennOnInit() fehlschlägt, wird der Start nicht erfolgen (wenn der Anlasser nicht startet >> Kurbelwelle von Hand drehen), dann muss der Benutzer entweder

  • Liste der Indikatoren >> Neustart der Ind.
  • Ind. entfernen >> Ind. verbinden
  • Aufruf zur Unterstützung >>
  • andere

Auf ticko heißt es >> " bei erfolglosem Abschluss von f.OnInit()erzeugt einDeinit-Ereignis mit dem UrsachencodeREASON_INITFAILED"+ mit anschließender Reinitialisierung beim nächsten Tick bis zum erfolgreichen Reinit. +

(Warum unterbrechen - deinitieren, wenn der Indikator sowieso Igel anzeigt).

Dies ist eher eine Frage für Entwickler...

 
abolk:
Was ist mit dem Problem, dass die Schaltfläche "Antworten" im Forum nicht mehr funktioniert? Werden sie es reparieren? Eine Art Schweigen der Unterstützung. Zumindest eine Beruhigung wie "tun/nicht tun".
Behoben, danke an alle, die aufgepasst haben.
 

costy_:

Ich selbst vermeide das Synchronisationsproblem, daher kann ich Ihnen keinen Rat geben. Aber das Problem selbst wurde in diesem Forum schon oft diskutiert. Schauen Sie mit einer Stichwortsuche nach.

 
Yedelkin:

Ich selbst vermeide das Synchronisationsproblem, daher kann ich Ihnen keinen Rat geben. Aber das Problem selbst wurde in diesem Forum schon oft diskutiert. Achten Sie auf die Stichwortsuche.

Danke, ich werde es mir noch einmal ansehen.

 

Hallo, könnten Sie mich bitte beraten?

Ich versuche, einen ADX-Indikator für das Handelsmodul hinzuzufügen. Ich versuche, ein Signal aus zwei gleitenden Durchschnitten mit Bestätigung durch den ADX zu erstellen. Ich habe diesen Code von einem anderen Modul kopiert, in der Originalversion funktioniert natürlich alles, ich habe ihn von dieser Seite heruntergeladen und der Code selbst sollte keine Fehler ausgeben.

//+------------------------------------------------------------------+
//| Create ADX indicator.                                            |
//| INPUT:  indicators -pointer of indicator collection.             |
//| OUTPUT: true-if successful, false otherwise.                     |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
bool CSignalMY_MA_ADX::InitADX(CIndicators* indicators)
  {
//--- create ADX indicator
   if(m_ADX==NULL)
      if((m_ADX=new CiADX)==NULL)
        {
         printf(__FUNCTION__+": error creating object of the ADX");
         return(false);
        }
//--- add ADX indicator to collection
   if(!indicators.Add(m_ADX))
     {
      printf(__FUNCTION__+": error adding object of the ADX");
      delete m_ADX;
      return(false);
     }
//--- initialize ADX indicator
   if(!m_ADX.Create(m_symbol.Name(),m_period,m_period_ADX))
     {
      printf(__FUNCTION__+": error initializing object of the ADX");
      return(false);
     }
//--- ok
   return(true);
  }

Aber ich muss irgendetwas falsch gemacht haben, so dass ich solche Fehler bekomme:

'==' - illegale Operation verwenden SignalADX-MA.mqh 183 12

CiADX' - Typ-Unstimmigkeit SignalADX-MA.mqh 184 21

'=' - unzulässige Operation verwenden SignalADX-MA.mqh 184 16

'm_ADX' - Parameterumwandlung nicht erlaubt SignalADX-MA.mqh 190 23

'm_ADX' - Objektzeiger erwartet SignalADX-MA.mqh 193 14

Bitte helfen Sie mir, ich wäre Ihnen sehr dankbar. Ich kann die Datei hier anhängen, wenn Sie benötigen, kümmern Sie sich nicht, es ist ein Chaos, ich bin gerade lernen und der gesamte Prozess bestand aus mir Ausschneiden und Einfügen wieder ein paar verschiedene Handelsmodule für die EA.