Fehler, Irrtümer, Fragen - Seite 564

 
Cloud nerwork mit Fehler.
Was ist die Ursache für dieses Problem? Kann keine Cloud-Ressourcen nutzen.
 
Urain:

Erklären Sie das.


Es gab eine vorläufige Ankündigung der geplanten Änderungen. Die endgültige Liste der Änderungen im nächsten Build wird nach der Veröffentlichung des Builds selbst veröffentlicht.
 
Rosh:
Es wurde eine vorläufige Ankündigung der geplanten Änderungen gemacht. Die endgültige Liste der Änderungen im nächsten Build wird nach der Veröffentlichung des Builds selbst veröffentlicht.
Ich danke Ihnen.
 

Ich habe lange und hart an dem Code des Indikators genagt, bis ich absolut verzweifelt war, Fehler zu finden. Ich habe es nicht in "Dummies" geschrieben, weil ich keine Fehler von mir vermute, sondern Fehler in der Arbeit des Terminals.

Der Zweck des Indikators besteht darin, Fraktale von einem anderen Zeitrahmen auf den aktuellen Zeitrahmen zu legen und neue hinzuzufügen, sobald neue fraktale Balken erscheinen. Bitte schlagen Sie keine anderen Methoden zur Anordnung der fraktalen Pfeile vor, darum geht es nicht; die Fragen hier sind grundlegender Natur und beziehen sich auf diesen Code und vielleicht auch auf die falsche Bedienung des Terminals. Ich habe ein Beispiel aus der iFractals-Hilfe genommen, das logischerweise um die Hälfte gekürzt wurde (nur auf die oberen Fraktale), um die Wahrnehmung zu erleichtern, und ein bisschen Code aus der Standarddatei Fractals.mq5 wurde übernommen. Ich musste sehr sorgfältig vorgehen, um Missverständnisse zu vermeiden: Ich habe fast alle möglichen Arrays gebunden und die bearbeiteten Arrays bereinigt, den Handle des aufgerufenen Indikators freigegeben, was keinen merklichen Unterschied in den Ergebnissen ergab. Es wurden folgende Probleme und Besonderheiten bei der Durchführung festgestellt:

  1. Wenn ich das Terminal zum ersten Mal starte, ein neues Chart-Fenster öffne und einen frisch kompilierten Indikator anwende, sammeln sich alle Fraktale auf dem Null-Balken am Ende der Historie (nur eines scheint platziert zu sein), anstatt entsprechend der Idee und Logik des Codes platziert zu werden. Die korrekte Platzierung kann nur durch einen Sprung zu anderen Zeitrahmen eingeleitet werden (manchmal nicht einmal beim ersten Mal). Auch wenn wir den Indikator aus dem Diagramm löschen, das Diagrammfenster schließen, neu kompilieren, ein neues Fenster öffnen und den Indikator anwenden, erhalten wir fast immer sofort die gewünschte fraktale Anordnung. Um die fehlerhafte Wirkung zu sehen, muss das Terminal vollständig entladen werden und alle Schritte von Schritt 1 müssen wiederholt werden. 1. Vielleicht liegt das Problem in der Lebensdauer des Handles des aufgerufenen Indikators und seinem spezifischen Verhalten beim ersten Start des benutzerdefinierten Indikators? Bei falscher Anordnung der Fraktale (wenn sie alle auf dem Nullbalken "gestaucht" sind) ergibt die Ausgabe aller Elemente von exact_extremum in der Schleife Null, aber die Ausgabe der benachbarten Werte von TimeUpBuffer, auf deren Basis er berechnet und gefüllt wird, zeigt immer einheitlich unterschiedliche Zeitdaten. Daher die Frage: Was verhindert, dass er bei der anfänglichen Erstellung des Indikators gefüllt wird, wenn er bei den nächsten Malen korrekt mit den richtigen Werten gefüllt wird?
  2. Derselbe Code, der dasselbe Problem vererbt, aber jetzt liegt der Schwerpunkt auf einer völlig anderen Funktion. In diesem Indikator können wir auf die Bindung einiger zwischenberechneter Arrays als INDICATOR_CALCULATIONS an Indikatorpuffer verzichten. Dies ist der Anfangscode des Indikators. Alles scheint in Ordnung zu sein, abgesehen von p. Ich scheine mit allem zurechtzukommen, außer mit Punkt 1.
  3. Aber um sehr clever zu sein, sollten wir versuchen, den besten Empfehlungen zu folgen und die Arrays für Zwischenberechnungen mit den Indikatorpuffern zu verbinden:
    #property indicator_chart_window
    #property indicator_buffers 3
    #property indicator_plots   1
    
    [...]
    
    int OnInit()
      {
       [...]
       SetIndexBuffer(1,PreliminaryUpBuffer,INDICATOR_CALCULATIONS);
       SetIndexBuffer(2,exact_extremum,INDICATOR_CALCULATIONS);
       [...]
      }
    kompilieren und ausführen. Als Ergebnis erhalten wir eine Fehlermeldung in den Protokollen von Terminal Expert Advisor: 2011.11.11 07:42:03 (AUDUSD,H1) Array außerhalb des Bereichs, Linie:
                CopyHigh(_Symbol,PERIOD_M1,TimeUpBuffer[shift+1]-1,
                                           TimeUpBuffer[shift],
                                           exact_extremum);
    
    Die Platzierung von Fraktalen in einigen Zeitrahmen ist entweder nicht vorhanden oder nur sporadisch.
  4. Initiieren Sie eine Ouija-Sitzung, machen Sie magische Handpässe, gehorchen Sie dem automatischen Schreiben und ersetzen Sie:
    #property indicator_chart_window
    #property indicator_buffers 3
    #property indicator_plots   1
    für:
    #define NUMBER 1
    
    #property indicator_chart_window
    #property indicator_buffers NUMBER+2
    #property indicator_plots   NUMBER
    Ob das nun richtig ist oder nicht, aber es funktioniert unverständlicherweise!

Ich habe eine Bitte an die Einwohner von noosphere und insbesondere an die Entwickler: Könnten Sie bitte jedes Element erklären und raten, wie man Indikatorcode debuggen kann (wenn ich seine Implementierung nicht ändern werde).

Danke und Dateien im Anhang.

P.S.: In den Dateinamen waren Klammern, aber nach dem Hochladen sind sie verdorben.

 

Wie ermittle ich den aktuellen Gewinn bei einem magischen Handel?

Dieser Code liefert Gewinne bei geschlossenen Geschäften, ich brauche sie aber bei offenen Geschäften.

#include <Trade\Trade.mqh>
CTrade trade;
void OnTick()
  {
   double profit=0;
   if(PositionSelect(Symbol()))profit=PositionGetDouble(POSITION_PROFIT);
   if(profit==0) trade.PositionOpen(Symbol(),ORDER_TYPE_SELL,0.1,SymbolInfoDouble(Symbol(),SYMBOL_ASK),0,0,"");
   if(profit>1) trade.PositionOpen(Symbol(),ORDER_TYPE_BUY,0.1,SymbolInfoDouble(Symbol(),SYMBOL_ASK),0,0,"");
   
   double ld_return=0;  
   HistorySelect(0,TimeTradeServer());
   for(int i=HistoryDealsTotal()-1;i>=0;i--) // По всем сделкам от конца к началу
     {
      ulong ticket=HistoryDealGetTicket(i); // Определение тикета сделки и ее выделение
      if(ticket!=0) 
      {
      if(HistoryDealGetInteger(ticket,DEAL_TYPE)<2)
      ld_return+=HistoryDealGetDouble(ticket,DEAL_PROFIT);
      }
     }     
   Comment(ld_return);   
  }
 

Woher weiß ich, warum die Initialisierung fehlschlägt?

Ich setze Fehler vor dem Beginn der Initialisierung mit

ResetLastError();

Am Ende der Initialisierung sehe ich einen Fehler

Print("Ошибка " + IntegerToString(GetLastError()));

Ich lande auf der Registerkarte Expert Advisors

2011.11.11 08:47:51 SimpleExpert (EURUSD,H1) Fehler 0

Auf der Registerkarte "Journal

2011.11.11 08:47:51 Initialisierung des Experten SimpleExpert (EURUSD,H1) fehlgeschlagen

 
Konstantin83:

Woher weiß ich, warum die Initialisierung fehlschlägt?

Vor dem Start der Initialisierung habe ich die Fehler mit der Funktion

ResetLastError();

Am Ende wird ein Fehler angezeigt

Print("Ошибка " + IntegerToString(GetLastError()));

Auf der Registerkarte Experten erhalte ich das folgende Ergebnis

2011.11.11 08:47:51 SimpleExpert (EURUSD,H1) Fehler 0

Auf der Registerkarte "Journal

2011.11.11 08:47:51 Initialisierung des Experten SimpleExpert (EURUSD,H1) fehlgeschlagen

Gibt OnInit 0 oder nicht 0 zurück?
 
stringo:
Gibt OnInit 0 oder nicht 0 zurück?

OnInit gibt true zurück, habe es irgendwie übersehen.

Danke, ist schon gut.

 
ddd06:

Wie ermittle ich den aktuellen Gewinn bei einem magischen Handel?

Dieser Code liefert Gewinne bei geschlossenen Geschäften, aber ich brauche sie bei offenen Geschäften

Sehen Sie sich den Artikel von Dmitry(Integer) an. Dort ist alles optimal umgesetzt. Artikel:Optimale Methode für die Berechnung des kumulativen Positionsvolumens durch eine vorgegebene magische Zahl.
 
Guten Tag, fing an, multivariant zu schreiben, rufe ich iMA, aus irgendeinem Grund in der realen Handel alles funktioniert gut, sobald ich in den Tester ein Fehler Experte entfernt, weil Indikator "Gleitender Durchschnitt" kann nicht geladen werden [4804], was ist der Indikator auf den Indikator, nicht sehr klar, ich konnte nicht finden, eine plausible Antwort im Internet. Für einen Ratschlag wäre ich Ihnen sehr dankbar.
Документация по MQL5: Технические индикаторы / iMA
Документация по MQL5: Технические индикаторы / iMA
  • www.mql5.com
Технические индикаторы / iMA - Документация по MQL5