Les tampons de l'indicateur de lecture sont réglés sur le graphique - page 5

 
Dmitry Fedoseev:
Quelle déclaration ? L'affirmation du titre est incorrecte. Il n'y a aucun problème avec la lecture des tampons. Avec quels problèmes - a écrit, et a encore donné un lien à ce poste. Dois-je quand même te courir après et te forcer à le faire ?

L'agressivité est inversement proportionnelle à l'argumentation ! Je ne comprends pas quel est le lien en question.

Les codes des indicateurs et des EA ont été donnés. Il a été démontré que vous ne pouvez pas obtenir de tampons dans certains cas par le biais d'iCustom. Le titre n'est donc pas seulement correct, il est également prouvé.

Avec des restrictions iCustom d'un autre type, c'est similaire. Quel est l'intérêt de vos "vous pouvez" et "je ne vois pas de problème" si rien d'autre n'est dit ? N'intervenez pas dans le fil de discussion alors, puisque vous êtes incapable d'apporter une quelconque substance constructive.

 
Il est impossible d'écrire un conseiller expert qui recevrait les valeurs tampons des indicateurs fonctionnant sur un graphique avec des paramètres d'entrée non par défaut. Parce que iCustom est implémenté d'une telle manière, qu'il nécessite d'écrire son propre appel dans le SOURCE pour chaque indicateur.
 
comp:

C'est comme un coup de pied dans la tête de faire une déclaration comme celle-là. J'ai décidé de chercher des indicateurs dans kodobase. Je n'en ai trouvé aucun qui utilise ce à quoi je suis habitué : modèle piloté par les événements + POO.

Il est difficile de dire ce qui est le plus important : la frustration ou la déception face à cet état de fait. Il s'avère que les indicateurs sont VRAIMENT primitifs à écrire.

Montrez-moi un exemple où un modèle d'événement combiné à la transmission de données à un EA serait nécessaire.

Je n'ai rien contre l'accès aux indicateurs fonctionnant sur un graphique. Et à la structure des paramètres aussi (d'ailleurs, MT5 l'a déjà).

Mais une fois de plus, j'essaie de vous faire comprendre que vous abordez la tâche du mauvais côté. Il n'y a pas besoin de planter des clous avec un microscope, il sert à autre chose.

 
comp:
Il est impossible d'écrire un conseiller expert qui recevrait les valeurs tampons des indicateurs fonctionnant sur un graphique avec des paramètres d'entrée non par défaut. Parce que iCustom est implémenté de cette manière, il nécessite d'écrire son propre appel dans le SOURCE pour chaque indicateur.

Je ne savais pas.

owl lit le tampon 0

l'indy peut s'accrocher à un autre tableau

icomp the indictor

hibou économe

il est également possible d'écrire les valeurs de owl dans le tampon de l'indicateur.

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

Exemple d'un script qui donne les noms et les paramètres d'entrée de tous les indicateurs fonctionnant sur un graphique.

#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;
}

Ces données devraient être suffisantes pour calculer les valeurs des indicateurs. Mais à cause des "ellipses" d'iCustom, il est impossible de le faire.

 
pako:

Je ne savais pas.

owl lit le tampon 0

l'indy peut s'accrocher à un autre tableau

icomp the indictor

hibou économe

Des sources ?
 
comp:
Les sources ?
Il n'y a pas de motivation.
 
comp:

Exemple d'un script qui donne les noms et les paramètres d'entrée de tous les indicateurs fonctionnant sur un graphique.

Ces données devraient être suffisantes pour calculer les valeurs des indicateurs. Mais à cause des "ellipses" d'iCustom, il est impossible de le faire.

voulez-vous savoir quel indicateur est sur le graphique et ses paramètres ?

vous pouvez voir le nom

combien et quels paramètres vous pouvez voir

et le script affiche le bon


nom et combien de paramètres

 
pako:

vous voulez savoir quel indicateur plane sur le graphique et quels sont ses paramètres ?

Non, je veux comprendre ce qui ne fonctionne pas dans votre exemple, car votre EA n'affiche pas les données de l'indicateur en évolution.

 
comp:

Non, je veux comprendre ce qui ne fonctionne pas dans votre exemple car votre EA n'affiche pas les données de l'indicateur en évolution.

il montre les données du tampon 0

il montre les données du tampon 0.