Fehler, Irrtümer, Fragen - Seite 2148

 
Andrey Khatimlianskii:

Ist das bestätigt?

Nein, natürlich nicht. Alles, was hier steht, ist eine unabhängige Schlussfolgerung.

Ich erinnere mich, dass entweder Renat oder Slava gesagt haben, dass Indikatoren nicht dupliziert werden, selbst wenn sie manuell ausgeführt werden. Der Hash der Parameter stimmt überein - es wird der gleiche Berechnungsteil verwendet.

Das ist nicht wahr. Und das Wichtigste: Es konnte nicht einmal wahr sein.

Führen Sie diesen Indikator manuell auf zwei identischen Charts aus

int OnCalculate( const int, const int, const int, const double &[] )
{
  Print(ChartID());
  
  return(0);
}

Wenn die Berechnungsteile gleich wären, gäbe es keine unterschiedlichen Wiederholungen. Ich denke, dass 90 % der geäußerten Schlussfolgerungen richtig sind.

 
Nexxtor:

Hilfe Autoren, oder MQL5 Sprache, je nachdem, wer die Hände aus *** sind, sind Sie so nervig!!!

IndicatorCreate() sagt:

parameter_cnt

[in] Anzahl der in dem Array parameters_array[] übergebenen Parameter. Die Elemente des Arrays haben einen speziellen Typ der StrukturMqlParam. Der Standardwert ist Null - es werden keine Parameter übergeben. Wenn eine Anzahl von Parametern ungleich Null angegeben wird, ist der Parameterparameters_array obligatorisch. Sie können bis zu 256 Parameter übergeben.


Sagen Sie mir, haben Sie es persönlich überprüft? Dass der Indikator mit 256 Parametern aufgerufen wird?


Fix it!!!

Läuft es nicht? Zeigen Sie mir den Code, der nicht ausgeführt werden kann.

Und bitte, weniger Emotionen und mehr Geschäft.

 
fxsaber:

Das ist nicht wahr. Und was noch wichtiger ist, es könnte nicht einmal wahr sein.

Führen Sie diesen Indikator manuell auf zwei identischen Charts aus

Wenn die berechneten Teile gleich wären, gäbe es keinen unterschiedlichen Ausdruck.

Eine sehr schwierige Schlussfolgerung für mich.

Warum sollten die Indikatoren dasselbe Diagramm anzeigen? Weil ein Indikator-Algorithmus auf der Grundlage derChartID erstellt werden kann?

 
fxsaber:

EAs auf OBJ_CHART laufen sicherlich nicht (oder besser gesagt, funktionieren nicht). Mit der Zeitschaltuhr scheint es also in Ordnung zu sein. Vielleicht funktionieren dort nicht alle Veranstaltungen.

Die Expert Advisors auf OBJ_CHART starten und funktionieren einwandfrei. Sie behandeln nur OnChartEvent (custom) und können ihre eigenen Ereignisse für andere Diagramme erzeugen.

 
Andrey Khatimlianskii:

Warum sollten die Indikatoren dasselbe Diagramm anzeigen?

iCustom Indikatoren haben kein eigenes Diagramm. Selbst wenn man sie zu einer Tabelle hinzufügt.

Weil ein Indikator-Algorithmus auf der Grundlage der ChartID erstellt werden kann?

Ja, Chart-Funktionen und Ereignisse, die auf ihren Chart angewendet werden (manuelle/vorgefertigte Indikatoren), können für jede Aktion verwendet werden.

 

Fehler in der Dokumentation

ChartNavigate

Verschiebt das angegebene Diagramm um die angegebene Anzahl von Balken relativ zur angegebenen Diagrammposition.

bool  ChartNavigate(
   long  chart_id,     // идентификатор графика
   int   position,     // позиция
   int   shift=0       // значение сдвига
   );

Parameter

chart_id

[Karten-ID. 0 bedeutet die aktuelle Karte.

Position

[in] Position des Diagramms, relativ zu der das Diagramm verschoben werden soll. Der Wert kann einer der Werte von enumENUM_CHART_POSITION sein.

 
Andrey Barinov:

Expert Advisors auf OBJ_CHART laufen und funktionieren einwandfrei. Sie behandeln nur OnChartEvent (benutzerdefiniert) und können ihre eigenen benutzerdefinierten Ereignisse für andere Diagramme erzeugen.

Geprüft. Experte\Test.mq5

class CUSTOM
{
public:  
  CUSTOM()
  {
    Print(__FUNCSIG__);
    
    Print(EventSetTimer(1) && EventChartCustom(0, 0, 0, 0, NULL) &&
          MarketBookAdd(_Symbol) && 
          ChartSetInteger(0, CHART_EVENT_MOUSE_WHEEL, true) &&
          ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, true) &&
          ChartSetInteger(0, CHART_EVENT_OBJECT_CREATE, true) &&
          ChartSetInteger(0, CHART_EVENT_OBJECT_DELETE, true) &&
          ChartNavigate(0, CHART_BEGIN, 100) &&
          ObjectCreate(0, __FILE__, OBJ_VLINE, 0, 0, 0) &&
          ObjectDelete(0, __FILE__));
    
  }
  ~CUSTOM() { Print(__FUNCSIG__); }
};

const CUSTOM InitDeinit;

void OnTick() { Print(__FUNCSIG__); }
void OnInit() { Print(__FUNCSIG__); }
void OnDeinit( const int ) { Print(__FUNCSIG__); }
void OnChartEvent( const int id, const long&, const double&, const string& ) { Print(__FUNCSIG__ + " " + (string)id) ; }
void OnTimer() { Print(__FUNCSIG__); }
void OnBookEvent( const string& ) { Print(__FUNCSIG__); }


Drehbuch

#include <fxsaber\Expert.mqh>  // https://www.mql5.com/ru/code/19003

void OnStart()
{
  if (ObjectCreate(0, __FILE__, OBJ_CHART, 0, 0, 0))
  {
    MqlParam Params[1];
    Params[0].string_value = "Experts\\Test.ex5";

    Print(EXPERT::Run(ObjectGetInteger(0, __FILE__, OBJPROP_CHART_ID), Params));
  }
}


Ergebnis

Test3 (EURUSD,M1)       true
Test (EURUSD,M1)        void CUSTOM::CUSTOM()
Test (EURUSD,M1)        true
Test (EURUSD,M1)        void OnInit()
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 1000
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnChartEvent(const int,const long&,const double&,const string&) 9
Test (EURUSD,M1)        void OnDeinit(const int)
Test (EURUSD,M1)        void CUSTOM::~CUSTOM()


Schlussfolgerung zu Expert Advisors auf OBJ_CHART

  • Funktioniert bei OnInit, OnDeinit, globalem Konstruktor/Destruktor und OnChartEvent.
  • OnTimer, OnTick und OnBookEvent funktionieren nicht.
  • Es werden nur CHARTEVENT_CHART_CHANGE und benutzerdefinierte Ereignisse erfasst.
  • Durch OnChartEvent+EventChartCustom kann EA "Ereignisse" für OnTimer und OnTick erstellen, aber nicht für OnBookEvent.
 
In Glucotrader 5 funktioniert die #Eigenschaft tester_file nicht korrekt, wenn FILE_COMMON angegeben ist, die Datei wird nicht auf dem Agenten geöffnet
 
Anton Ohmat:
In Glucotrader 5 funktioniert die #Eigenschaft tester_file nicht korrekt, wenn FILE_COMMON angegeben ist, die Datei wird nicht auf dem Agenten geöffnet

Nun, die Datei stammt nicht aus dem Ordner Common (gemeinsam für Terminal und lokale Agenten), sondern aus der Sandbox.

 
fxsaber:

Nun, nicht aus dem Ordner "Common" (gemeinsam für Terminal und lokale Agenten), sondern aus der Sandbox.

Ich habe es auf meinen Remote-Servern getestet - es hat nicht funktioniert. Die Ausführung erfolgt nur, wenn der lokale Rechner im Verzeichnis MT-Dateien liegt, COMMON auf die Optimierung nicht eingeht


tester_datei

String

Dateiname für das Prüfgerät mit Angabe der Erweiterung, eingeschlossen in doppelten Anführungszeichen (als konstante Zeichenfolge). Die angegebene Datei wird an den Prüfer zur Bearbeitung weitergeleitet. Eingabedateien für Tests, falls erforderlich, sollten immer angegeben werden

Grund der Beschwerde: