Auslesen von Indikatorpuffern, die auf Diagramm eingestellt sind - Seite 5

 
Dmitry Fedoseev:
Welche Aussage? Die Aussage im Titel ist falsch. Es gibt keine Probleme mit Lesepuffern. Mit welchen Problemen - schrieb, und gab noch einen Link zu diesem Beitrag. Soll ich dir immer noch hinterherlaufen und dich zwingen, mitzumachen?

Aggression ist umgekehrt proportional zur Argumentation! Um welchen Link es sich handelt, verstehe ich nicht.

Es wurden Indikator- und EA-Codes angegeben. Es hat sich gezeigt, dass man in einigen Fällen über iCustom keine Puffer erhalten kann. Die Schlagzeile ist also nicht nur richtig, sie ist auch bewiesen.

Mit iCustom Einschränkungen anderer Art ist es ähnlich. Was nützt Ihr "Sie können" und "Ich sehe kein Problem", wenn nichts anderes gesagt wird? Dann mischen Sie sich nicht in das Thema ein, denn Sie sind nicht in der Lage, etwas Konstruktives beizutragen.

 
Es ist unmöglich, einen Expert Advisor zu schreiben, der Pufferwerte der Indikatoren erhält, die auf einem Chart mit nicht standardmäßigen Eingabeparametern laufen. Denn iCustom ist so implementiert, dass es für jeden Indikator einen eigenen Aufruf in die SOURCE schreiben muss.
 
comp:

Es ist wie ein Tritt in den Kopf, eine solche Aussage zu machen. Ich beschloss, in kodobase nach Indikatoren zu suchen. Ich habe KEINE gefunden, die das verwendet, was ich gewohnt bin: ereignisgesteuertes Modell + OOP.

Es ist schwer zu sagen, was mehr ist: Frustration oder Enttäuschung über diesen Zustand. Es hat sich herausgestellt, dass Indikatoren wirklich primitiv zu schreiben sind.

Zeigen Sie mir ein Beispiel, bei dem ein Ereignismodell in Verbindung mit der Übergabe von Daten an einen EA benötigt wird.

Ich habe nichts gegen den Zugang zu Indikatoren, die in einem Diagramm laufen. Und auch zur Struktur der Parameter (MT5 hat sie übrigens schon).

Aber noch einmal: Ich versuche anzudeuten, dass Sie die Aufgabe von der falschen Seite angehen. Es gibt keinen Grund, mit einem Mikroskop Nägel zu schlagen, es ist für etwas anderes gedacht.

 
comp:
Es ist unmöglich, einen Expert Advisor zu schreiben, der Pufferwerte von Indikatoren erhält, die auf einem Chart mit nicht standardmäßigen Eingabeparametern laufen. Da iCustom auf diese Weise implementiert ist, muss für jeden Indikator ein eigener Aufruf in der SOURCE geschrieben werden.

Das wusste ich nicht.

owl liest Puffer 0

der Indy kann an einer anderen Karte hängen

icomp der Indikator

Elektronische Eule

es ist auch möglich, Werte aus owl in den Indikatorpuffer zu schreiben

Dateien:
icomp_v2.ex4  8 kb
ecomp_v2.ex4  6 kb
 

Beispiel für ein Skript, das die Namen und Eingabeparameter aller in einem Chart laufenden Indikatoren anzeigt

#property strict

string GetBetweenString( string &SourceString, const string BeginString, const string EndString = "" )
{
  string Str = SourceString;
  int Pos1 = 0;
  int Pos2 = 0;

  if (BeginString != "")
    Pos1 = StringFind(SourceString, BeginString);

  if (Pos1 >= 0)
  {
    Pos1 += StringLen(BeginString);

    Pos2 = StringFind(SourceString, EndString, Pos1);

    if (Pos2 != Pos1)
      Str = StringSubstr(SourceString, Pos1, Pos2 - Pos1);
    else
      Str = "";
  }

  SourceString = StringSubstr(SourceString, Pos2 + StringLen(EndString));

  return(Str);
}

string FileToString( const string FileName )
{
  string Res = "";

  const int handle = FileOpen(FileName, ::FILE_READ|::FILE_BIN);

  if (handle != INVALID_HANDLE)
  {
    uchar Array[];

    FileReadArray(handle, Array);

    Res = CharArrayToString(Array);

    FileClose(handle);
  }

  return(Res);
}

string GetIndicatorsData( const long Chart_ID = 0 )
{
  string Res = "Current chart:";

  const string FileName = ::WindowExpertName() + ".tpl";

  if (ChartSaveTemplate(Chart_ID, "..\\MQL4\\Files\\" + FileName))
  {
    string Str = FileToString(FileName);

    int PosName = StringFind(Str, "name=Custom Indicator");

    while (PosName > 0)
    {
      const string IndicatorName = GetBetweenString(Str, "<indicator>\r\nname=Custom Indicator\r\n<expert>\r\nname=", "\r\n");

      Res += "\n\nIndicator: " + IndicatorName;

      const int PosInputs = StringFind(Str, "<inputs>");
      PosName = StringFind(Str, "name=Custom Indicator");

      if (PosInputs > 0)
        if ((PosName < 0) || (PosName > PosInputs))
          Res += "\nInputs:\n" + GetBetweenString(Str, "<inputs>\r\n", "\r\n</inputs>");

      Res += "\n\nLast Null Buffer Value (ONLY Default Inputs) = " + (string)iCustom(Symbol(), Period(), IndicatorName, 0, 0);
    }
  }

  return(Res);
}

void OnStart( void )
{
  MessageBox(GetIndicatorsData());

  return;
}

Diese Daten sollten ausreichen, um die Werte der Indikatoren zu berechnen. Aber wegen der iCustom "Ellipsis" ist es unmöglich, dies zu tun.

 
pako:

Das wusste ich nicht.

owl liest Puffer 0

der Indy kann an einer anderen Karte hängen

icomp der Indikator

Elektronische Eule

Quellen?
 
comp:
Die Quellen?
Es gibt keine Motivation.
 
comp:

Ein Beispiel für ein Skript, das die Namen und Eingabeparameter aller in einem Chart laufenden Indikatoren ausgibt

Diese Daten sollten ausreichen, um die Werte der Indikatoren zu berechnen. Aber wegen der iCustom "Ellipsis" ist es unmöglich, dies zu tun.

Möchten Sie wissen, welcher Indikator im Diagramm angezeigt wird und welche Parameter er hat?

können Sie den Namen sehen

wie viel und welche Parameter Sie sehen können

und das Skript zeigt die korrekte


Name und wie viele Parameter

 
pako:

Möchten Sie wissen, welcher Indikator auf dem Diagramm schwebt und welche Parameter er hat?

Nein, ich möchte verstehen, was in Ihrem Beispiel nicht funktioniert, weil Ihr EA keine sich ändernden Indikatordaten anzeigt.

 
comp:

Nein, ich möchte verstehen, was in Ihrem Beispiel nicht funktioniert, weil Ihr EA keine wechselnden Indikatordaten anzeigt.

zeigt Daten aus Puffer 0 an

werden die Daten aus Puffer 0 angezeigt.