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.
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!)
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
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.
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_inputsinputcolor testColor=clrBlue;// задайте цвет для тестирования//--- структура для представления цвета в RGBstruct 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 |//+------------------------------------------------------------------+voidOnStart()
{
//--- переменная для хранения в 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 показаны на схеме: Сплошные линии со стрелками обозначают преобразования, которые выполняются без потери информации. Вместо типа char может выступать тип bool (оба занимают в памяти 1...
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.
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.
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?
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?
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
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 precisa ser preenchida com data/hora.
Usar TimeCurrent()? Eu simplesmente não entendo como.
usar TimeCurrent()? só não entende como
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.
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.