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

 
WinProject:
Obrigado!) De sua resposta, concluo que para cada tipo de objeto eu preciso fazer uma função separada. Eu pensei que de alguma forma seria possível fazer um início separado de funções para construir objetos, anexadas ao laço Enquanto função principal para ler o arquivo. Que tal Switch?

Provavelmente não entrei o suficiente.

O primeiro, a construção de todos os objetos gráficos, não causa nenhum problema ou dúvida. Mas eu devo ter entendido mal a segunda. Aparentemente a questão não era sobre como organizar o trabalho com um botão para muitos tipos de objetos, mas um botão para um tipo de objetos. Nesse caso, eu faria uma estrutura com parâmetros de objetos e várias matrizes de estruturas, uma matriz para cada tipo de objeto. E, respectivamente, eu ligaria essas matrizes de estrutura a botões de tipos correspondentes.

Então, ao pressionar o botão, o tipo de objeto correspondente será apagado. E quando o botão for liberado, os objetos serão restaurados pelos parâmetros que estão na matriz da estrutura.

Portanto, será necessário ler o arquivo apenas uma vez no início da operação.

 
Alexey Viktorov:

Provavelmente não entrei o suficiente.

O primeiro, a construção de todos os objetos gráficos, não causa nenhum problema ou dúvida. Mas eu devo ter entendido mal a segunda. Aparentemente a questão não era sobre como organizar o trabalho com um botão para muitos tipos de objetos, mas um botão para um tipo de objetos. Nesse caso, eu faria uma estrutura com parâmetros de objetos e várias matrizes de estruturas, uma matriz para cada tipo de objeto. Assim, eu ligaria estas matrizes de estrutura a botões de tipos correspondentes.

Então, ao pressionar o botão, o tipo de objeto correspondente será apagado. E quando o botão for liberado, os objetos serão restaurados pelos parâmetros que estão na matriz da estrutura.

Assim, será necessário ler o arquivo apenas uma vez no início da operação.

Muito obrigado pela resposta, vou tentar fazer ambas as variantes, através de bandeiras como sugerido pelo STARIJ e sua variante também é interessante de tentar. Vou tentar fazer menos perguntas, é bom que elas sejam respondidas!)
 
STARIJ:

As bandeiras são variáveis. Ou bool: false=empty, true=raised ou int - então há muitas bandeiras em um número ao mesmo tempo: 0 - todos omitidos, 1=baixo primeiro, 2=baixo segundo, 3=baixo primeiro e segundo, 4=baixo terceiro, 5=baixo terceiro e primeiro, 6=baixo terceiro e segundo, 7=baixo primeiro, segundo, terceiro, 8=baixo quarto.... Bem, isso está em código binário. Como descobrir?

Obrigado, pareceu encontrar uma boa explicação na rede, vai experimentá-la. O estranho é que, neste site, nem na documentação, nem no tutorial, provavelmente se supõe que todos que vieram aqui já tenham habilidades de programação.
 
WinProject:
Muito obrigado pela resposta, vou tentar fazer ambas as variantes, através de bandeiras como sugerido pelo STARIJ e sua variante também é interessante de tentar. Vou tentar fazer menos perguntas, é bom ter respostas!)

As bandeiras podem não ser ruins, mas não percebem o ponto

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Qualquer dúvida que os novatos tenham sobre MQL4, ajuda e discussão sobre algoritmos e códigos

WinProject, 2018.01.26 18:17

Boa noite, mais uma vez estou à procura de ajuda. Minha EA tem a função principal no OnInit, que lê o arquivo, e imediatamente constrói diferentes objetos gráficos de acordo com diferentes condições. Também no gráfico há um botão que, quando clicado, opera a função para remover estes objetos, tais como etiquetas de texto. Como fazer, que após o apertar do botão tenham sido removidas as etiquetas de texto, quando o botão é liberado é possível iniciar não toda a função que irá construir completamente todos os objetos, mas construir somente etiquetas de texto. A única coisa que me vem à mente é criar separadamente para cada tipo de objeto um análogo da função principal com todas as ações relacionadas à abertura e leitura do arquivo, mas eu quero usar alguma solução inteligente, mas não sei qual e como, na função principal ou nas funções dos botões?

Nesse caso, é mais fácil implementar a leitura do arquivo em uma função separada definida pelo usuário e chamá-lo várias vezes, para não multiplicar a criação de um mesmo código várias vezes. Mas não importa o quanto você tente, a leitura dos arquivos permanecerá quando as bandeiras forem usadas. E não faz diferença o que verificar ao criar objetos excluídos - sua ausência ou estado de bandeira por tipo de objeto. Afinal de contas, o tipo de objeto é determinado pelo botão ligado a um tipo particular, esta é a bandeira.
 

Você pode me dizer como obter o valor da hora atual na MQL5 ?
Eu criei um objeto de estrutura MqlDateTime, ele não dá nada

 
Roman Sharanov:

Você pode me dizer como obter o valor da hora atual na MQL5 ?
Eu criei um objeto de estrutura MqlDateTime, ele não dá nada

A estrutura tem que ser preenchida com data/hora.
 
Artyom Trishkin:
A estrutura precisa ser preenchida com data/hora.

Usar TimeCurrent()? Eu simplesmente não entendo como.

 
Roman Sharanov:

usar TimeCurrent()? só não entende como

TimeToStruct()
 
Artyom Trishkin:
TimeToStruct()

Ah, entendi, está funcionando, obrigado!

 

https://docs.mql4.com/ru/basis/types/casting

Penúltimo exemplo, acor na representação RGB como corda."Converter duas estruturas através da cópia do conteúdo" não funciona.

#property script_show_inputs
input color          testColor=clrBlue;// задайте цвет для тестирования
//--- структура для представления цвета в RGB
struct RGB
  {
   uchar             blue;          // синяя составляющая цвета
   uchar             green;         // зеленая составляющая цвета
   uchar             red;           // красная составляющая цвета
   uchar             empty;         // этот байт не используется
   string            toString();    // функция для получения в виде строки
  };
//--- функция для вывода цвета в виде строки
string RGB::toString(void)
  {
   string out="("+(string)red+":"+(string)green+":"+(string)blue+")";
   return out;
  }
//--- структура для хранения встроенного типа color 
struct builtColor
  {
   color             c;
  };
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- переменная для хранения в RGB
   RGB colorRGB;
//--- переменная для хранения типа color
   builtColor test;
   test.c=testColor;
//--- приведение двух структур путем копирования содержимого
   colorRGB=test;
   Print("color ",test.c," = ",colorRGB.toString());
//---
  }

O compilador gera o seguinte erro... ('=' - uso de operação ilegal test.mq4 34 12 )

Eu copiei algo errado ou há um erro na amostra? Por favor, me aconselhem.

Приведение типов - Типы данных - Основы языка - Справочник MQL4
Приведение типов - Типы данных - Основы языка - Справочник MQL4
  • docs.mql4.com
Часто возникает необходимость преобразовать один числовой тип в другой. Не каждый числовой тип допустимо преобразовать в другой, допустимые преобразования в MQL4 показаны на схеме: Сплошные линии со стрелками обозначают преобразования, которые выполняются без потери информации. Вместо типа char может выступать тип bool (оба занимают в памяти 1...