Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 506

 
Вадим Мотеюнас:
https://www.mql5.com/ru/docs/basis/operators
 
ArturR:

1. Sim, há um caso de barra zero no código, não há possibilidade de verificar qual caso foi testado agora, vou verificar hoje à noite.

2. Eu o verifiquei ao emitir um comentário no gráfico com valores, macd, High e Low têm valores, mas min(max)preço não recebe valores correspondentes.

Eu precisaria ver como estas variáveis são declaradas. Há uma suspeita de que são variáveis locais que são zeradas a cada entrada na função. Como resultado, aqueles momentos em que eles estão com valores que você simplesmente não tem tempo para ver. Para ver os valores, veja o conteúdo do registro. Afinal de contas, há uma impressão no código.

 

Olá. Tenho uma tarefa, de 1000 linhas de arquivo csv, preciso selecionar as combinações de parâmetros do campo N e retornar qualquer tipo de valor de outros campos do registro encontrado. Você pode me dizer se existe um especialista que trabalha através do arquivo e toma decisões comerciais? Obrigado.

 
mwwm:

Olá. Tenho uma tarefa, de 1000 linhas de arquivo csv, preciso selecionar as combinações de parâmetros do campo N e retornar qualquer tipo de valor de outros campos do registro encontrado. Você pode me dizer se existe um especialista que trabalha através do arquivo e toma decisões comerciais? Obrigado.

Provavelmente, é preciso procurar aqueles que trabalham com notícias na base de código.

 
Ihor Herasko:

Você simplesmente não tem tempo para ver. Para ver os valores, veja o conteúdo do diário de bordo. Afinal de contas, há uma impressão no código.

É sim, obrigado ) Eu não notei este registro entre outras porcarias na revista. Graças mais uma vez a todos que responderam, continuarei a limpar)

 
Como calcular a barra de índice para o valor corresponde à seguinte lógica: se o período atual do gráfico M15, e o prazo do indicador com função (MTF) = H1, a barra de índice 5, ou seja, o fato de fechar a barra H1, se o período atual do gráfico M30, e o prazo do indicador com função (MTF) = H1, então a barra de índice 3, se o período atual do gráfico M5, e o prazo do indicador com função (MTF) = M15, a barra de índice 4.
 
lil_lil:
Que cálculo do índice de barras deve ser feito, para que o valor corresponda à seguinte lógica: se o período atual do gráfico M15 e o chamado período do indicador com função (MTF) = H1, o índice da barra 5, ou seja, o fato de fechar a barra H1, se o período atual do gráfico M30 e o chamado período do indicador com função (MTF) = H1, então o índice da barra 3, se o período atual do gráfico M5 e o chamado período do indicador com função (MTF) = M15, o índice da barra 4.

O erro aqui está na própria lógica. A atual TF poderia ser M15, e a última barra M15, que corresponde à barra H1 que se formou, seria 1. Ou poderia ser 2, ou 3, ou 4, mas não mais. Por exemplo, agora são 10:06. Os índices das barras M15 e H1 atuais são 0, as barras anteriores em ambas as TFs são 1 e a última barra M15 que corresponde ao H1 fechado é também 1. Às 10:15 a situação mudará: a última barra M15 que formou H1 terá um índice 2, às 10:30 será 3 e às 10:45 será 4.

Os cálculos matemáticos não vão ajudar muito aqui. Precisamos procurar as barras correspondentes na tabela. O algoritmo é o seguinte:

  1. Determinar o tempo de abertura da barra zero H1. (iTime)
  2. Identificar o índice da primeira barra do período de tempo atual, que corresponde ao tempo de abertura da barra H1 zero. (iBarShift)
  3. Acrescente 1 ao índice de barras encontrado.

 
Ihor Herasko:

O erro aqui está na própria lógica. A atual TF poderia ser M15, e a última barra M15, que corresponde à barra H1 que se formou, seria 1. Ou poderia ser 2, ou 3, ou 4, mas não mais. Por exemplo, agora são 10:06. Os índices das barras M15 e H1 atuais são 0, as barras anteriores em ambas as TFs são 1 e a última barra M15 que corresponde ao H1 fechado também é 1. Às 10:15 a situação mudará: a última barra M15 que formou H1 terá um índice 2, às 10:30 será 3 e às 10:45 será 4.

Os cálculos matemáticos não vão ajudar muito aqui. Precisamos procurar as barras correspondentes na tabela. O algoritmo é o seguinte:

  1. Determinar o tempo de abertura da barra zero H1. (iTime)
  2. Identificar o índice da primeira barra do período de tempo atual, que corresponde ao tempo de abertura da barra H1 zero. (iBarShift)
  3. Acrescente 1 ao índice de barras encontrado.

Provavelmente não contei tudo. O indicador se baseia na barra zero do intervalo de tempo superior, condicionalmente H1, respectivamente para todas as 4 barras do intervalo de tempo atual, M15. É por isso que eu preciso do índice 5 na M15 para saber se há um sinal no fechamento da H1. Certamente é possível calcular este índice para evitar escrever um monte de condições para cada variante de combinações de períodos altos e atuais.

input ENUM_TIMEFRAMES   TimeFrame=PERIOD_H1;
//  
 if(TimeFrame == PERIOD_H1&&Period()==M15) timef = 5;//timef = 4;

   if(TimeFrame == PERIOD_H1&&Period()==M30) timef = 3;//timef = 2;


Ajk=NormalizeDouble(iCustom(NULL,0,"Ajk",TimeFrame,4,i+timef),Digits);
 
lil_lil:

O indicador se baseia na barra zero do intervalo de tempo mais alto, geralmente H1, respectivamente durante todas as 4 barras do intervalo de tempo atual, M15.

É o que estou dizendo, as barras do cronograma atual podem ser menores - 1, 2 ou 3. Isso significa que as leituras nem sempre serão exibidas em 4 barras. Em apenas um caso serão exibidas as 4 barras - esta é a última barra da atual TF que corresponde à barra zero H1. Para esta formulação do problema só precisamos encontrar a primeira barra da atual TF que corresponde à barra zero H1:

int nCurTFBarIndex = iBarShift(NULL, 0, iTime(NULL, PEPRIOD_H1, 0));

Então os dados serão exibidos a partir da barra zero do TF atual até o nCurTFBarIndex inclusive.

É por isso que preciso do índice 5 especificamente no M15 TF, para descobrir no fechamento do H1 se ainda há ou não um sinal. Certamente é possível calcular este índice para evitar escrever um monte de condições para cada variante de combinação de períodos superiores e atuais.

De qual TF é tirado o sinal: do atual, do H1 ou de uma versão mista? Se apenas do H1, então não há necessidade de procurar nada, porque a última barra formada sempre terá índice 1.

 
Ihor Herasko:

De qual TF é tirado o sinal: corrente, H1 ou uma versão mista? Se apenas do H1, então não há necessidade de procurar nada, porque a última barra formada sempre terá índice 1.

Eu coloco H1 em configurações externas do indicador MTF e o anexo ao gráfico M15. O sinal pisca por 4 barras. Quando a barra H1 está fechada, o sinal não pisca e na M15 o sinal pára de piscar na barra 4. Se eu colocá-lo em М1, respectivamente, ele pára de piscar na barra 60. é necessário calcular o índice i+N para que N varie dependendo do período selecionado nas configurações e no gráfico do período, no qual o indicador está anexado.

input ENUM_TIMEFRAMES   TimeFrame=PERIOD_H1;
//  
 if(TimeFrame == PERIOD_H1&&Period()==M15) N = 5;// ВОЗМОЖНО НУЖНО N = 4;

   if(TimeFrame == PERIOD_H1&&Period()==M1) N = 61;//А ЗДЕСЬ ВОЗМОЖНО N = 60;
Razão: