Aprender e escrever juntos em MQL5 - página 8

 

Estou a escrever um algoritmo de simples transferência de construções de preços para mcl5 de mcl4, em exemplos de cópia de código mcl4 para mcl5 stochastic masd e rsi, existem métodos básicos de acesso aos dados mcl4.

Em breve teremos o que precisamos.

agora estou a lutar com a função iMaOnArRAu, uma vez que o mt5 não o fornece para obter os métodos mais simples de médias móveis das matrizes de utilizadores.

irei expandir bibliotecas a todas as ferramentas técnicas, conheço quase todos os algoritmos

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих - Документация по MQL5
 

Sou tão idiota... Não consigo perceber como escrever...

Existe este código:

   MqlRates rates[];
   
   ArraySetAsSeries(rates,true);
   int copied=CopyRates(_Symbol,_Period,0,1000,rates);
   

Quero obter o índice da barra com o mais baixo Baixo entre as barras de i-th a j-th.

Estou a tentar usar a função ArrayMinimum.

int k=ArrayMinimum(rates.low,i,j-i+1); - wrong

int k=ArrayMinimum(rates[].low,i,j-i+1); - wrong

Qual é a forma correcta?

Документация по MQL5: Операции с массивами / ArrayMinimum
Документация по MQL5: Операции с массивами / ArrayMinimum
  • www.mql5.com
Операции с массивами / ArrayMinimum - Документация по MQL5
 
owl:

Sou tão idiota... Não consigo perceber como escrever...

Existe este código:

Quero obter o índice da barra com o mais baixo Baixo entre as barras de i-th a j-th.

Estou a tentar usar a função ArrayMinimum.

int k=ArrayMinimum(rates.low,i,j-i+1); - wrong

int k=ArrayMinimum(rates[].low,i,j-i+1); - wrong

Qual é a forma correcta?

Use funções de acesso directo, MqlRates é um conjunto de "estruturas", e precisa de um conjunto Baixo, aqui está um exemplo, também para Alto.

   rates_total=CopyHigh(NULL,_Period,_start,_end,iHigh);
   if(rates_total<=0)
      return;
   else
      HighDay=iHigh[ArrayMaximum(iHigh,0,rates_total)];
   rates_total=CopyLow(NULL,_Period,_start,_end,iLow);
   if(rates_total<=0)
      return;
   else
      LowDay=iLow[ArrayMinimum(iLow,0,rates_total)];

Dê uma vista de olhos a exemplos de códigos. Isto é de https://www.mql5.com/ru/code/102

PivotPointUniversal
PivotPointUniversal
  • votos: 17
  • 2010.04.26
  • Dmitry
  • www.mql5.com
Опорные точки Pivot без использования объектов строятся по всей доступной истории. Пять вариантов расчета. Три варианта построения: дневной, недельный, месячный. Для дневных уровней есть возможность смещения по GMT.
 
vdv2001:

Use funções de acesso directo, MqlRates é um conjunto de "estruturas" e precisa de um conjunto de Low, aqui está um exemplo, imediatamente e para High.

É compreensível. No meu caso, acabo de escrever:

         int k=i; double min=rates[k].low;
         for (int m=i+1;m<=j;m++)
            if (rates[m].low<min) {min=rates[m].low; k=m;}

Não quero um monte de matrizes. Não é parcimonioso em termos de recursos e não é muito agradável...

Só queria compreender exactamente com oArrayMinimum - é possível utilizar esta função com uma variedade de estruturas....

 
owl:

É compreensível. No meu caso, acabei de escrever:

Não quero um monte de matrizes... Não poupa recursos e não é muito agradável...

Eu só queria lidar com o ArrayMinimum - é possível utilizar esta função com um conjunto de estruturas....

Se pensa que armazenar um monte de informação numa série de estruturas é mais económico do que uma série de duplas, estou apenas a levantar as minhas mãos.

struct MqlRates
  {
   datetime time;         // время начала периода
   double   open;         // цена открытия
   double   high;         // наивысшая цена за период
   double   low;          // наименьшая цена за период
   double   close;        // цена закрытия
   long     tick_volume;  // тиковый объем
   int      spread;       // спред
   long     real_volume;  // биржевой объем 
  };

ou acha que o armazenamento de entradas, anseios e datas é mais económico em termos de memória?)

ou escolher o que precisa de uma pilha de lixo é mais económico, ha ha ...

 
vdv2001:

Se pensa que armazenar um monte de informação numa série de estruturas é mais económico do que uma série de duplas, então estou apenas a desistir

ou acha que o armazenamento de entradas, baixas e datas é mais económico em termos de memória? ;))

ou escolher o que precisa de uma pilha de lixo é mais económico, ha ha ...

Bem... Estou um pouco exagerado em relação à relação custo-eficácia, claro... Mas, na verdade, preciso de quase toda a informação daMqlRates(excepto talvez volumes, e isso não é um facto...)
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 

Normalmente, antes de perguntar qualquer coisa, passo por várias fontes em busca de uma resposta.

Mas agora, após uma semana de procura, apercebi-me que não tenho uma resposta, e penso que ainda ninguém se deparou com ela. Por conseguinte, proponho um puzzle.

Dados iniciais:

1) Tenho um indicador simples tal como Níveis e Setas iS7N_SacuL_v3.mq5 (em anexo)

2) um consultor especializado que tenta receber dados deste indicador aS7N_TIC.mq5 (em anexo)

Então!

De cinco buffers indicadores, apenas dois dados são devolvidos correctamente.

Seguir-se-á uma explicação detalhada!!!

Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
Arquivos anexados:
 

Tendo analisado cuidadosamente a situação, descobri que tanto o 3 como o 4 amortecedores indicadores nem sempre fornecem os dados correctos (embora seja impossível dizer quais são correctos e quais não são)

Vejam o gráfico. Na janela Dados do lado esquerdo há valores do indicador no gráfico e abaixo há valores obtidos pelo Expert Advisor. A maioria dos valores são os mesmos, mas há mais alguns...

A este respeito, sugeri que sejam utilizados dados históricos diferentes no gráfico e no testador.

O que pensa?

 

Finalmente, o problema principal! Não é possível obter os dados de 1,2 e 5 buffers indicadores da forma habitual.

O problema é que os dados previamente calculados das barras anteriores são tidos em conta ao calcular os dados para estas matrizes.

Claro que, ao chamar o indicador, pode forçá-lo a recalcular N barras próximas, independentemente do valor de pré_calculado .

Suponho que a chamada e o cálculo dos valores indicadores é efectuado com o valor depré_calculado não igual a 0

Para a maioria dos indicadores isto é verdade, porque poupa recursos, mas para o exemplo dado não vai funcionar.

O que fazer? Quais são os seus pensamentos?

Alternativamente, pode mover todos os cálculos para o Consultor Especialista! Esta opção funciona, mas não é a mesma... Gostaria de não usar as minhas calças sobre a minha cabeça.

Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • 2010.03.09
  • KlimMalgin
  • www.mql5.com
C появлением новой версии языка MQL, не только изменился подход к работе с индикаторами, но и появились новые способы создания индикаторов. Кроме того, появилась дополнительная гибкость при работе с индикаторными буферами - теперь вы можете самостоятельно указать нужное направление индексации и получать ровно столько значений индикатора, сколько вам требуется. В этой статье рассмотрены базовые методы вызова индикаторов и получения данных из индикаторных буферов.
 

no Expert Advisor é utilizado

int resIup = CopyBuffer(iCusHandlI_H4,2,0,1,dBufIup_H4);
a partir da barra 0 é tomada, os valores dos amortecedores indicadores para ele são alterados em cada tic tac até a vela fechar.
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
Razão: