Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1120
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Código do problema.
Por que...? Se se trata de duplicar a lógica para cada cruzamento da mesma linha, é claro que toda a lógica (que eu não escrevi) deve ser escrita diretamente pela pessoa. Não sei seu objetivo final, talvez ele queira fazer uma contagem de quantas vezes o preço cruza cada linha, desde que passe por ela
Eu entendi que o homem não foi capaz de obter tal evento para seus propósitos. Agora ele obterá tal evento, e então fica a seu critério.
Seria lógico renomear a própria linha para um determinado formato no primeiro cruzamento (ou colocar algum rótulo na descrição desta figura). E quando todos os objetos forem cruzados, verifique a linha para verificar a ausência desta marca.
Se estamos falando da ineficácia de experimentar todos os objetos a cada tique, então é um outro tópico ao todo.
Tente usar valor retornado por variável _Periodo para períodos superiores a H1 em seus cálculos matemáticos.
Você saberá imediatamente quem está errado.
Ninguém em seu perfeito juízo usaria os valores das constantes nomeadas para cálculos matemáticos. Constantes nomeadas estão lá para facilitar a compreensão do que você está se referindo, ou qual identificador de propriedade você está usando para recuperar os dados. As constantes nomeadas substituem o valor do identificador de propriedade solicitado por uma descrição textual.
Ao buscar dados de, por exemplo, SymbolInfoDouble(), você pode usar o valor numérico do identificador para indicar qual valor você deseja buscar da função. Mas para fazer isso, é preciso lembrar qual valor identificador substituir na função. Foram introduzidas constantes de enumeração nomeadas para liberá-lo de referências constantes ou para evitar que você memorize de cor o valor de cada identificador de cada função na MQL. Para obter o valor do preço atual Ask, você deve escrever o valor do identificador igual a 4 quando solicitar dados para o símbolo atual: SymbolInfoDouble(NULL,4) ou escrever SymbolInfoDouble(NULL,SYMBOL_ASK);
Por que você não se importa, e não causa dissonância, que SYMBOL_ASK retorne 4 e não o preço Ask atual?
Por que você está escolhendo então os identificadores do período do gráfico? Isso era o que os desenvolvedores queriam. Por suas razões internas. Há um nome identificador para você, por exemplo PERÍODO_H4. Você não deve se importar com o valor numérico que lhe foi atribuído pelo desenvolvedor por algum motivo ou outro. Você recebeu um nome (texto substituto de um valor numérico) de uma constante - use-o para sua conveniência. Mas usar o valor desta constante em seus cálculos é, desculpe, um disparate. Esta constante nomeada é usada para indicar de qual gráfico você quer obter os dados. Mas não retorna o período do gráfico. É usado para um propósito bem diferente - para facilitar sua vida, para dizer à função o que ela deve retornar.
Se você quiser o número de minutos no período, obtenha-o a partir do número de segundos no período dividido por 60. E não chame algo que não seja uma muleta. As muletas são o que você está fazendo - tentando usar nomes numéricos em seus cálculos.
Isso é uma chatice...
Por que...? Se se trata de duplicar a lógica para cada cruzamento da mesma linha, é claro que toda a lógica (que eu não escrevi) deve ser escrita diretamente pela pessoa. Não sei seu objetivo final, talvez ele queira fazer uma contagem de quantas vezes o preço cruza cada linha, desde que passe por ela
Entendi que o homem não conseguiu obter tal evento para seus propósitos. Agora ele terá tal evento e, então, fica a seu critério.
Seria lógico renomear a própria linha para um determinado formato no primeiro cruzamento (ou colocar algum rótulo na descrição desta figura). E quando todos os objetos forem cruzados, verifique a linha para verificar a ausência desta marca.
Se estamos falando da ineficácia de experimentar todos os objetos a cada tique, esse é outro tópico.
Você está usando funções antigas que estão prestes a desaparecer no esquecimento. O código não é uma plataforma cruzada por causa disso, embora você possa facilmente fazê-lo funcionar em qualquer plataforma sem alterações.
E a renomeação é muito divertida. Basta olhar os nomes das linhas fornecidas pelo indicador, extrair o identificador explícito das mesmas e usá-lo para encontrar as linhas certas.
Muito obrigado! Foi owchar_t que ajudou! Eu li sobre isso, ele armazena 2 bytes por personagem, ao contrário do char.
Mas o parâmetro da função "str" ainda não retorna o valor atribuído a ele. Eu me pergunto por que...
Provavelmente porque você tem que devolver o valor de retorno da função.
Você está usando funções antigas que estão prestes a desvanecer-se em esquecimento. E o código não é uma plataforma cruzada, embora você possa facilmente fazê-lo funcionar em qualquer plataforma sem alterações.
E a renomeação é muito divertida. Basta olhar os nomes das linhas no indicador, extrair o identificador explícito e usá-lo para encontrar as linhas necessárias.
Obrigado pela edição!
De fato, tenho programado na MQL4 relativamente raramente, enquanto eu mal utilizei a MQL5. Portanto, admito que alguns métodos estão ultrapassados (mas eu estou trabalhando de qualquer forma!).
Definitivamente, mas não você ou eu - não conhecemos as peculiaridades de nomenclatura dessas linhas. "Memorizar" tais níveis também é uma opção, mas então os resultados de nossas "memorizações" teriam que ser salvos em algum lugar em um arquivo, e sem isso - com qualquer colapso do terminal, a imagem do que está acontecendo seria bem pouco clara. A renomeação, pelo menos, resolverá este problema, embora este método possa não ser o melhor.
Eu poderia estar errado, mas a pessoa escreveu que até 100 linhas são usadas de cada vez, e apenas linhas, e não há mais nada no gráfico. Todas as linhas, como eu as entendo, precisam ser monitoradas para cruzamentos. Então o que você vai "extrair" dos nomes, eu não sei))
O ponto é que a variável _Periodo deve retornar valores de tempo.
E as constantes devem corresponder a valores de período, não apenas enumerar constantes.
Caso contrário, perdemos o significado desta variável, que foi especialmente projetada para obter rapidamente o valor de tempo, sem conversão por funções adicionais.
Obrigado pela edição!
De fato, tenho programado na MQL4 relativamente raramente nos últimos anos, e mal tenho usado a MQL5. Portanto, admito que alguns métodos estão ultrapassados (mas eu estou trabalhando de qualquer forma!).
Definitivamente, mas não você ou eu - não conhecemos as peculiaridades de nomenclatura dessas linhas. "Memorizar" tais níveis também é uma opção, mas então os resultados de nossas "memorizações" teriam que ser salvos em algum lugar em um arquivo, e sem isso - a qualquer momento que o terminal se chocasse, a imagem do que está acontecendo seria muito pouco clara. A renomeação, pelo menos, resolverá este problema, embora este método possa não ser o melhor.
Eu poderia estar errado, mas a pessoa escreveu que até 100 linhas são usadas de cada vez, e apenas linhas, e não há mais nada no gráfico. Todas as linhas, como eu as entendo, precisam ser monitoradas para cruzamentos. Então o que você estará "escolhendo" dos nomes, eu não sei))
Se o terminal cair, ele terá que ser reiniciado. O indicador terá que ser aplicado ao gráfico novamente, ou para executar o Expert Advisor que usa os dados deste indicador (então a EA carregará este indicador ela mesma ao acessá-lo). Neste caso (e mesmo durante o reinício normal do terminal com um carregamento automático dos programas instalados na carta), o indicador desenhará de novo todas as suas linhas - não há necessidade de salvar nada. Estas linhas podem ser lidas novamente mais tarde. Além disso, eles têm que ser lidos de qualquer maneira.
Para a EA monitorar apenas as linhas criadas pelo indicador, basta olhar os nomes das linhas criadas pelo indicador e tentar encontrar o substrato de repetição em nomes - o mesmo para todas as linhas. Estes substratos são utilizados para encontrar as linhas necessárias.
É simples - basta olhar para a lista de objetos quando o indicador está funcionando.
A questão é que a variável _Periodo deve retornar valores de tempo.
E as constantes devem corresponder a valores de período, não apenas enumerar constantes.
Caso contrário, perdemos o significado desta variável, que foi especialmente projetada para obter rapidamente o valor de tempo, sem conversão por funções adicionais.
Tem gente e cavalos misturados por toda parte... Não apenas sobre esta questão. Se você fizer mudanças de acordo com suas sugestões, metade de tudo o que funcionou até agora simplesmente morrerá.
Apenas equiparar um tamanho de carrapato com um tamanho de ponto não vale nada...
Tente usar o valor retornado pela variável _Periodo por períodos superiores a H1 em seus cálculos matemáticos.
Você vai ver imediatamente quem está errado.
Tem gente e cavalos misturados por toda parte... Não apenas sobre esta questão. Se você fizer mudanças de acordo com suas sugestões, metade de tudo o que funcionou até agora simplesmente desaparecerá.
Equacionando apenas o tamanho do carrapato com o tamanho do ponto.
Porque há muita inconsistência com a realidade atual.
E você está tentando encontrar desculpas para essas inconsistências.
Pelo contrário, eu escrevi que um tique não é igual a um ponto!
É o seu próprio ponto interno, inventado.
Tendo em vista que o Point costumava corresponder exatamente a um ponto, quando havia apenas quatro dígitos.
Mas após a introdução do quinto dígito, você começou a inventar nomes com suas desculpas.