Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 866

 
Aleksey Vyazmikin:

OK, passando à visualização dos pensamentos :)

O branco mostra onde estamos a fazer o pedido, amarelo o tempo de bar que devemos conseguir.

Será isto mais claro? Caso contrário, queira fazer perguntas para esclarecer.

Alexey, no posto acima, fez um pedido de REVEAL...

"Preciso da data da última barra do prazo actual, que se refere à barra seleccionada do prazo superior.

Está claro?"

Por isso, é difícil compreender o que realmente se precisa.

Sobre o pedido anterior - eu respondi - https://www.mql5.com/ru/forum/6343/page869#comment_7537714.

Se no último "com visualização dos pensamentos", basta pedir a hora de abertura da barra do TF superior com um deslocamento de 0.

Não muito claro - qual é o problema?

Вопросы от начинающих MQL5 MT5 MetaTrader 5
Вопросы от начинающих MQL5 MT5 MetaTrader 5
  • 2018.05.23
  • www.mql5.com
Подскажите пожалуйста, такой показатель тестера в жизни реален? И хороший это или плохой результат за год с депо 3000...
 
Kirill Belousov:

Alexey, no posto acima fez um pedido para uma tarefa de RETORNO...

"Preciso da data da última barra do prazo actual, que se refere à barra seleccionada do prazo superior.

Está claro?"

Por isso, é difícil compreender o que realmente se precisa.

Sobre o pedido anterior - eu respondi - https://www.mql5.com/ru/forum/6343/page869#comment_7537714.

Se no último "com visualização dos pensamentos", basta pedir a hora de abertura da barra do TF superior com um deslocamento de 0.

Não muito claro - qual foi o problema?

Desculpe, falhei a sua resposta.

Kirill Belousov:

Se entendi correctamente o seu pedido, então:

1. determinar a hora de fecho da barra necessária da TF superior.

É isso que eu não posso fazer!

Kirill Belousov:

Se por este último "com visualização de pensamentos", então basta solicitar o tempo aberto da barra da TF superior com um offset de 0.

Não estou muito claro - qual é o problema?

Se assim o solicitar, recebo às 10:00 e preciso de obter a hora 23:49!

 
Aleksey Vyazmikin:

OK, passando à visualização dos pensamentos :)

O branco mostra onde estamos a fazer o pedido, amarelo o tempo de bar que devemos conseguir.

Será isto mais claro? Caso contrário, queira fazer perguntas para esclarecer.

Pergunta:

Às 10:30 devemos obter o número de barra do período H1 com a hora 23:45 no gráfico M5

Será que acertei?

 
Alexey Viktorov:

Pergunta:

Às 10:30 tenho de obter o número de barra do período H1 com a hora de 23:45 no gráfico M5

Será que percebi bem?

Preciso de obter a hora 23:45 neste caso (de facto não tenho M5, mas M1 da actual TF, mas não importa) - é a hora da última barra da actual TF na estrutura da última barra da TF acima. O turno no gráfico é 1 barra para H1, mas pode haver outro turno, digamos que preciso de informação às 11 horas, ou seja, o turno será 2.

 
Aleksey Vyazmikin:

Desculpe, falhei a sua resposta.

É isso que eu não posso fazer!

Se eu pedir isso, recebo às 10:00 e preciso de obter uma hora de 23:49!

1. definir o turno (barra) que se pretende para a alta TF. - O tempo entre a abertura e o fecho desta barra (tanto quanto sei) que está a analisar para barras do TF inferior dentro dela.

2. Obter o seu tempo de abertura

3. Adicionar a duração da TF em segundos para esta TF ao tempo de abertura. - ou seja, é assim que se obtém a hora de fecho do bar da maior TF.

4. subtrair a duração do TF júnior (se M1, então 60 segundos) - este é o tempo de abertura da última barra do TF júnior na estrutura do TF sénior. Encontrar o turno desta barra com base no tempo calculado. (Pode simplesmente subtrair 2-3 segundos do tempo de fecho da barra da TF principal e encontrar a barra da TF júnior a que este tempo se refere). Se a consulta NÃO for rigorosa, basta obter a barra disponível mais próxima à esquerda (a partir do tempo solicitado), se de repente a última barra na TF júnior estiver ausente.

 
Kirill Belousov:

1. determinar o turno (barra) necessário para a TF superior. - O tempo entre a abertura e o fecho desta barra (segundo sei) que está a analisar para barras da TF inferior dentro dela.

2. Obter o seu tempo de abertura

3. Adicionar a duração da TF em segundos para esta TF ao tempo de abertura. - ou seja, é assim que se obtém a hora de fecho do bar da maior TF.

4. subtrair a duração do TF júnior (se M1, então 60 segundos) - este é o tempo de abertura da última barra do TF júnior na estrutura do TF sénior. Encontrar o turno desta barra com base no tempo calculado. (Pode simplesmente subtrair 2-3 segundos do tempo de fecho da barra da TF principal e encontrar a barra da TF júnior a que este tempo se refere). Se o pedido não for rigoroso, então basta obter a barra disponível mais próxima à esquerda (a partir da hora solicitada), no caso da última barra no período de tempo mais jovem estar ausente.

Não vão acreditar, mas há uma hora atrás escrevi um algoritmo semelhante no papel! Mas é um pouco chato, pensei que houvesse uma maneira mais simples.

Apenas o ponto 4 pode não funcionar, a minha verificação é pelo contrário - se a situação não for normal, tenho de percorrer o tempo até a barra sair do intervalo.

 
Comentários não relacionados com este tópico foram transferidos para "Perguntas dos principiantes do MQL4 MT4 MetaTrader 4".
 

Quero declarar um conjunto de estruturas - sem problemas até ver algures que uma estrutura pode ter um construtor...

Como posso declarar um conjunto de estruturas com um construtor? (Eu sei como me livrar deste construtor)

funciona:

struct MyStruct
  {
   int               arr[];
   int               size;
                     MyStruct(int sz){ if(ArrayResize(arr,sz)>0) size=sz; else Print(__FUNCTION__,"Ошибка инициализации массива"); }
                    ~MyStruct(){ ArrayFree(arr); size = -1; }
  };
//+------------------------------------------------------------------+
MyStruct cluster(100);

não funciona, mas eu quero que funcione:

struct MyStruct
  {
   int               arr[];
   int               size;
                     MyStruct(int sz){ if(ArrayResize(arr,sz)>0) size=sz; else Print(__FUNCTION__,"Ошибка инициализации массива"); }
                    ~MyStruct(){ ArrayFree(arr); size = -1; }
  };
//+------------------------------------------------------------------+
MyStruct cluster(100)[47];
 

Uma má solução. É melhor usar classes em vez de estruturar. É o mesmo, mas pode trabalhar com apontadores.

class MyClass : 
  {
   public:
   int               arr[];
   int               size;
                     MyStruct(int sz){ if(ArrayResize(arr,sz)>0) size=sz; else Print(__FUNCTION__,"Ошибка инициализации массива"); }
                    ~MyStruct(){ ArrayFree(arr); size = -1; } // этого не надо
  };
//+------------------------------------------------------------------+
MyClass * cluster[47];

for(int n = 0; n < 47; n++)
        cluster[n] = new MyClass;

Escrevi-o no meu navegador, não acho que tenha feito asneira. Esgotei por uma hora.

 
Eu sei, sei que colocar variáveis em público é desconfortável, mas não tenho tempo para isso.
Razão: