Buffers indicadores de leitura ajustados para tabela - página 5

 
Dmitry Fedoseev:
Que declaração? A afirmação no título é incorreta. Não há problemas com os amortecedores de leitura. Com que problemas - escreveu, e ainda deu um link para este post. Eu ainda devo correr atrás de você e forçá-lo a isso?

A agressão é inversamente proporcional à argumentação! Qual é o elo em questão - não entendo.

Indicador e códigos EA foram fornecidos. Demonstrou-se que em alguns casos não é possível obter buffers através do iCustom. Portanto, a manchete não é apenas correta, também está comprovada.

Com restrições iCustom de um tipo diferente, é semelhante. Qual é o objetivo de seu "você pode" e "eu não vejo um problema" se nada mais for dito? Não se envolva no fio então, já que você não pode contribuir com nenhuma substância construtiva.

 
É impossível escrever um Expert Advisor que receberia valores tampão dos indicadores rodando em um gráfico com parâmetros de entrada não-defaltados. Porque o iCustom é implementado de tal forma, que requer escrever sua própria chamada na FONTE para cada indicador.
 
comp:

É como um chute na cabeça para fazer uma declaração como essa. Decidi procurar por indicadores em kodobase. Não encontrei NENHUMA que utilize aquilo a que estou acostumado: modelo orientado por eventos + OOP.

É difícil dizer o que é mais: frustração ou desapontamento com este estado de coisas. Os indicadores, ao que parece, são REALMENTE primitivos para escrever.

Mostre-me um exemplo em que um modelo de evento combinado com o fornecimento de dados a uma EA seria necessário.

Não tenho nada contra o acesso a indicadores em um gráfico. E à estrutura de parâmetros também (a propósito, a MT5 a tem).

Mas mais uma vez estou tentando insinuar que você está se aproximando da tarefa pelo lado errado. Não há necessidade de martelar pregos com um microscópio, é para outra coisa.

 
comp:
É impossível escrever um Expert Advisor que receberia valores tampão de indicadores rodando em um gráfico com parâmetros de entrada não inadimplentes. Como o iCustom é implementado de tal forma, é necessário escrever sua própria chamada na FONTE para cada indicador.

Eu não sabia.

buffer de leitura de coruja 0

o corante pode ser pendurado em uma tabela diferente

icomp o acusador

coruja ecomp

também é possível escrever valores de coruja para o tampão indicador

Arquivos anexados:
icomp_v2.ex4  8 kb
ecomp_v2.ex4  6 kb
 

Exemplo de um script que produz os nomes e parâmetros de entrada de todos os indicadores em execução em um gráfico

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

Estes dados devem ser suficientes para calcular os valores dos indicadores. Mas por causa da "elipse" iCustom, é impossível fazê-lo.

 
pako:

Eu não sabia.

coruja lê buffer 0

o corante pode ser pendurado em uma tabela diferente

icomp o acusador

coruja ecomp

Fontes?
 
comp:
As fontes?
Não há motivação.
 
comp:

Exemplo de um script que produz os nomes e parâmetros de entrada de todos os indicadores em execução em um gráfico

Estes dados devem ser suficientes para calcular os valores dos indicadores. Mas por causa da "elipse" iCustom, é impossível fazê-lo.

você quer saber qual indicador está no gráfico e seus parâmetros?

você pode ver o nome

quanto e quais parâmetros você pode ver

e o roteiro mostra o correto


nome e quantos parâmetros

 
pako:

você quer saber qual indicador está pairando no gráfico e seus parâmetros?

Não, eu quero entender o que não está funcionando em seu exemplo, porque sua EA não mostra dados indicadores de mudança.

 
comp:

Não, eu quero entender o que não está funcionando em seu exemplo porque sua EA não está mostrando dados indicadores de mudança.

mostra os dados do buffer 0

mostra os dados do buffer 0.

Razão: