Erros, bugs, perguntas - página 1396

 
Ilya Malev:
Eu fiz MathRand no exemplo só para demonstrar como funciona a escala. No original tinha o cálculo dos níveis numéricos lá usando a metodologia do autor de algum comerciante. No início quisemos fazê-los de 1 a 5, mas mesmo MT4 não conseguiu atingir a escala adequada mesmo com tais valores no tampão com DRAW_NONE. Depois de os termos tornado negativos e fixado o mínimo em 0, o problema foi resolvido. Ao portar o indicador para o MT5 parecia que esta solução também não funcionaria. Tive de me multiplicar por Ponto, como disse Voldemar.

A propósito, esqueci-me completamente. ))

Experimente desta forma:

   SetIndexBuffer(0,buffer1,INDICATOR_DATA);
   SetIndexBuffer(1,buffer2,INDICATOR_CALCULATIONS);

CÁLCULOS_INDICADORES >>>

 
Karputov Vladimir:
O seu exemplo é tortuoso e não quer consertá-lo. Verificá-lo-ei quando o consertar.

Eu corrigi-lo-ia se fosse código para uso real. Mas este código foi criado apenas para demonstrar o problema, o que tem sido feito com sucesso. É uma perda de tempo limpá-lo, porque não vai afectar o resultado.

 
Anatoli Kazharski:

A propósito, esqueci-me completamente. ))

Experimente desta forma:

Triado se indicador_plots=1 e comINDICADOR_CALCULATIONS

a segunda leitura tampão simplesmente desaparece da janela de dados independentemente de PlotIndexSetInteger(1, PLOT_SHOW_DATA, true);

 
Anatoli Kazharski:

Pode tentar comunicar o erro ao servicedesk e esperar por uma resposta.

Já o fiz. Se eles responderem, eu aviso-o). Duvido, no entanto, que seja um erro. É assim que vai descobrir.
 
Ilya Malev:

Tentei ambos com indicador_plots=1 eINDICADOR_CALCULATIONS

as leituras do segundo buffer simplesmente desaparecem da janela de dados, independentemente de especificar PlotIndexSetInteger(1, PLOT_SHOW_DATA, true);

Mas o problema da escalada é resolvido desta forma. Assim, pode criar um pedido de servicedesk, que apenas adiciona a capacidade de exibir tais buffers na janela de dados.

E também pode tentar fazê-lo desta forma:

//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int    id,      // идентификатор события
                  const long   &lparam, // параметр события типа long
                  const double &dparam, // параметр события типа double
                  const string &sparam) // параметр события типа string
  {
   if(id==CHARTEVENT_MOUSE_MOVE)
     {
      int      subwin =WRONG_VALUE; // Номер окна, в котором находится курсор
      datetime time   =NULL;        // Время соответствующее координате X
      double   level  =0.0;         // Уровень (цена) соответствующий координате Y
      //---
      if(ChartXYToTimePrice(0,(int)lparam,int(dparam),subwin,time,level))
        {
         int bars_total=Bars(Symbol(),Period(),time,TimeCurrent());
         //---
         Comment("x: ",lparam,"; y: ",(int)dparam,"; subwin: ",subwin,"; time: ",time,"; level: ",level,"\n",
                 "indicator value: ",buffer2[bars_total]);
        }
     }
  }

//---

No OnInit() precisa de adicionar:

void OnInit()
  {
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);
  }
 
Anatoli Kazharski:

Assim, pode criar um pedido ao servicedesk para simplesmente adicionar a capacidade de exibir tais amortecedores na janela de dados.

Acabo de descrever o problema, a lógica dos valores tampão DRAW_NONE é por definição diferente da lógica dos valores apresentados, não são valores gráficos, e portanto a escala com eles em mente não é lógica. Como eles querem resolver o problema, ou se querem deixá-lo como está, não é da minha conta.

 
Ilya Malev:

Acabei de descrever o problema, a lógica dos valores tampão DRAW_NONE é por definição diferente da lógica dos valores apresentados, não são valores gráficos e, portanto, a escala com eles em mente não é lógica. E como eles querem resolver este problema ou querem deixá-lo como está, não é da minha conta.

A opção no post anterior não é apropriada? Para o caso de tudo ficar como está. )

Arquivos anexados:
Test.mq5  4 kb
 
Anatoli Kazharski:

A opção no post anterior não é apropriada? Para o caso de tudo ficar como está. )

Claro que obrigado pelo conselho, se eu quisesse arranjar algum tipo de muleta também arranjaria algo, mas em primeiro lugar estamos confortáveis a olhar para os valores na janela de dados. Em segundo lugar, devemos utilizar este valor de tampão de indicador noutros indicadores e Expert Advisors, e algo me diz que se fizermos um tampão para cálculos, será impossível obter os seus valores através do iCustom.

Como resultado, resolvemos o problema multiplicando o segundo valor tampão por Ponto

 
Ilya Malev:

Acabei de descrever o problema, a lógica dos valores tampão DRAW_NONE é por definição diferente da lógica dos valores apresentados, não são valores gráficos e, portanto, a escala com eles em mente não é lógica. Como eles querem resolver este problema, ou se querem deixá-lo como está, não é da minha conta.

Tudo depende de onde se quer que os valores sejam exibidos. Se definir a visualização para uma janela separada, não importa se os valores tampão calculados não são visíveis. Todos os valores continuarão a cair nesta janela. Consequentemente, a escala pode avariar.

Não é lógico - concordo, mas é pouco provável que seja corrigido.

 
Ilya Malev:

Claro que obrigado pelo conselho, se eu quisesse fazer uma muleta, também pensaria em algo, mas antes de mais estamos confortáveis a olhar para os valores na janela de dados. E, em segundo lugar, precisamos de utilizar este valor tampão de indicador noutros indicadores e Expert Advisors, e algo me diz que se fizermos um tampão para os cálculos, será impossível obter os seus valores através do iCustom.

Experimente. É possível obter os valores a partir do tampão de cor. Assim, é possível tirá-lo também do buffer de cálculo. Afinal, tem um índice, ou seja, teoricamente, é possível referir-se a ele.
Razão: