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

 
Você pode me dizer se existe uma maneira de mudar os horários de abertura dos bares h4 e d1? Grosseiramente falando, para simular uma mudança de fuso horário. Talvez um roteiro que construa gráficos off-line com base no cronograma h1 ou algo parecido.
 
Artyom Trishkin:

A execução não pode ser perdoada.

Qual é o erro?

Aqui.

Como você pode ver, você não pode passar uma estrutura declarada localmente para uma função.

 
vladnev:
Você pode me dizer se existe uma maneira de mudar os horários de abertura dos bares h4 e d1? Grosseiramente falando, imitar uma mudança de fuso horário. Talvez um roteiro que construa gráficos off-line com base no cronograma h1 ou algo parecido.
iOpen(Symbol,нужный таймфрейм,номер бара(счёт идёт справа налево))

Precisamos trabalhar com isto

 
Seric29:

Aqui.

Como você pode ver, você não pode passar uma estrutura declarada localmente para uma função.

Você está confundindo a definição da estrutura com a declaração de uma variável com o tipo desta estrutura.
 
Artyom Trishkin:

Você mesmo pode verificá-lo? É difícil? E por que escrever demais?

Ainda não verifiquei. O que está lhe impedindo?

Artyom, esta opção realmente não vai funcionar. A estrutura tem que ser definida no nível da variável global. E uma variável do tipo estrutura está em qualquer lugar. Então, será possível passá-lo por referência. Porque o tipo nos parâmetros das funções de entrada não será definido.

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
   struct MyPoint
     {
      int         x[5];
      int         y;
     }gw777; // Переменная глобального уровня, просто лишняя.
int OnInit()
  {
   MyPoint qw1; // Локальная переменная
   EqualPointsP(qw1);// передал структуру в функцию EqualPointsP
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool EqualPointsP(MyPoint &qw)
  {
   Print("EqualPointsP ");
   return true;
  }
 
Artyom Trishkin:
Você confunde a definição de uma estrutura com a declaração de uma variável com o tipo desta estrutura.

Significado. Você quer dizer que a estrutura deve ser declarada globalmente, ou seja, fora do código, e a estrutura por sua definição não pode ser descrita dentro do código, ou seja, localmente; apenas variáveis podem ser criadas desta forma, ou estou entendendo algo errado? Por favor, explique.

 
Alexey Viktorov:

Artyom, esta variante realmente não vai funcionar. A estrutura deve ser definida no nível das variáveis globais. E uma variável do tipo estrutura está em qualquer lugar. Então, será possível transferi-lo por referência. Porque o tipo nos parâmetros de entrada de função não será definido.

Afinal de contas, é global.

 
Seric29:

Afinal de contas, é global.

NÃO. Uma estrutura é um tipo definido pelo usuário. E, portanto, este tipo deve estar disponível em todos os lugares. E um VARIAVEL de tipo personalizado pode ser declarado onde o mindinho esquerdo do pé direito quiser e passar esta variável onde o cão amado quiser, mas somente por referência.

 
Alexey Viktorov:

Desta forma, a estrutura não funcionará, Artyom. A estrutura deve ser definida no nível das variáveis globais. E a variável do tipo de estrutura está em qualquer lugar. Então, será possível transferi-lo por referência. Porque o tipo nos parâmetros das funções de entrada não será definido.

 

Em geral, como Artyom não responde a nada, e o homem acima deu a resposta que as funções funcionam com estruturas que devem ser conhecidas e, portanto, devem ser declaradas globalmente, concluímos que a estrutura deve ser declarada globalmente.

Por sua natureza, uma função que funciona com uma estrutura só pode aceitar as mesmas estruturas estáticas. Isso significa que é impossível declarar uma estrutura localmente de modo que ela tenha um escopo limitado e passá-la para a função.

Razão: