Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 618
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
Eu lhe disse diretamente que você não deveria ensinar os outros quando você não tem idéia de si mesmo.
A ajuda deve ser "qualificada", não "da rua"!
Descrever novamente o problema, o que é necessário.
Re-descreva a tarefa novamente, o que exatamente é necessário.
Estou interessado em poder transferir dados em MT4/MT5 entre diferentes módulos.
Por exemplo:
Como transferir dados de um indicador para outro ?
Como transferir dados de um indicador para um script ?
Como transferir dados do indicador para o Expert Advisor? etc. ... e assim por diante.
A simples adição de dados transferidos a um arquivo separado e a leitura desses dados do arquivo em outros módulos é bastante óbvia e comum para transferi-los.
Mas neste caso há um problema de sincronização dos dados transferidos/leidos.
Intuitivamente, suponho que o terminal MT4/MT5 deve ter uma certa área de memória buffer compartilhada e deve haver procedimentos que regulem o intercâmbio de dados através desta área.
Mas eu não encontrei nada parecido na descrição.
Estou interessado no procedimento de transferência MT4/MT5 entre diferentes módulos.
Por exemplo:
Como transferir dados de um indicador para outro ?
Como transferir dados de um indicador para um script?
Como transferir dados do indicador para o Expert Advisor ? etc. ... e assim por diante.
A simples adição de dados transferidos a um arquivo separado e a leitura desses dados do arquivo em outros módulos é bastante óbvia e comum para transferi-los.
Mas neste caso há um problema de sincronização dos dados transferidos/leidos.
Intuitivamente, suponho que o terminal MT4/MT5 deve ter uma certa área de memória buffer compartilhada e deve haver alguns procedimentos que regulam o intercâmbio de dados através desta área.
Mas não encontrei nada de tal espécie na descrição.
Bem, a transferência de dados pode ser realizada através de um arquivo ou de uma variável global do terminal.
Se for uma variável global:
Esta é a maneira mais fácil de trocar entre todos os programas em um único terminal
Bem, a transferência de dados como previamente escrita pode ser via arquivo, ou uma variável global do terminal
Se uma variável global:
Esta é a maneira mais fácil de trocar entre todos os programas em um único terminal
Ok. Vamos escrever em indicador uma expressão:
GlobalVariableSet("Sname", 123,25); Este evento ocorre, por exemplo, onTick().
Mas os scripts não funcionam com matrizes de dados, e não têm evento OnTick(). Como o roteiro sabe que o evento OnTick() ocorreu e deve aplicar o procedimento para obter novos dados
GlobalVariableGet("Sname");
Você pode usar o evento OnTimer() em vez do OnTick(). Mas o roteiro tem seu próprio OnTimer(), enquanto o indicador tem seu próprio e eles não estão inter-relacionados.
Aqui está o problema:
Como garantir que aGlobalVariableSet("Sname", 123,25); e a GlobalVariableGet("Sname"); os eventos sejam síncronos?
Ou existe um procedimento que monitora a mudança do valor "Sname"? Como a OnChange.
Ou seja, como o roteiro sabe que o indicador mudou o valor de "Sname", e este valor tornou-se 125,35 ?
Onde está a ponte entreGlobalVariableSet("Sname", 123,25); e GlobalVariableGet("Sname"); ?
Eles estão em diferentes programas.
OK. Vamos escrever uma expressão no indicador:
GlobalVariableSet("Sname", 123,25); Este evento ocorre, por exemplo, quando OnTick().
Mas os scripts não funcionam com matrizes de dados, e não têm evento OnTick(). Como o roteiro sabe que o evento OnTick() ocorreu e deve aplicar o procedimento para obter novos dados
GlobalVariableGet("Sname");
Você pode usar o evento OnTimer() em vez do OnTick(). Mas o roteiro tem seu próprio OnTimer(), enquanto o indicador tem seu próprio e eles não estão relacionados entre si.
Aqui está o problema:
Como garantir que aGlobalVariableSet("Sname", 123,25); e a GlobalVariableGet("Sname"); os eventos sejam síncronos?
Ou existe um procedimento que monitora a mudança do valor "Sname"? Como a OnChange.
Ou seja, como o roteiro sabe que o indicador mudou o valor de "Sname", e este valor tornou-se 125,35 ?
Onde está a ponte entreGlobalVariableSet("Sname", 123,25); e GlobalVariableGet("Sname"); ?
Eles estão em diferentes programas.
O link de conexão é um disco rígido de computador. Registro Eu acho que o problema não é, e você pode obtê-lo em qualquer caso, mesmo no script, não difere de como você obtém o valor atual ASK e BID
P.S. Eu anexei um indicador e roteiro, por exemplo, no indicador registramos os volumes de tick
Indicador
Roteiro
O link de conexão é o disco rígido do computador. Eu acho que não será um problema escrevê-lo, mas você pode obtê-lo de qualquer evento, mesmo em um script, não é diferente de como você obtém os valores ASK e BID atuais
Legal!
E como fazer isso?
Dê-me um exemplo.
Por exemplo, como simular um caso desse tipo.
O indicador recebe dados, calcula a variância dos dados e prepara as coordenadas do ponto da elipse para o script (4 variáveis globais Q1, Q2, T1, T2 a serem passadas para o script).
Agora o indicador deve dar um comando ao roteiro que irá desenhar uma elipse usando estas variáveis globais.
Como o indicador pode fazer isso?
O link de conexão é o disco rígido do computador. Acho que não será um problema gravar, mas você pode obtê-lo de qualquer evento, mesmo no script, não difere de como você obtém os valores atuais de ASK e BID
P.S. Eu anexei um indicador e roteiro, por exemplo, no indicador registramos os volumes de tick
Indicador
O roteiro
Em seu exemplo, o roteiro funciona apenas uma vez - no início, ou seja, quando o evento OnStart() ocorre.
E então como?
Onde está a sincronização?
Como você faz o roteiro funcionar sincronizado com o indicador?
Por exemplo, como habilitar o roteiro sempre que os volumes excederem um determinado valor?
Portanto, em seu exemplo, o roteiro funciona apenas uma vez - na inicialização, ou seja, quando ocorre o evento OnStart().
E então como?
Onde está a sincronização?
Como você faz o roteiro funcionar sincronizado com o indicador?
Por exemplo, como habilitar o roteiro sempre que os volumes excederem um determinado valor?
É sua tarefa como trabalhar com o roteiro. Talvez seja mais fácil criar um Expert Advisor do que um roteiro?
Um indicador que dá valores:
Um exemplo simples de um roteiro em loop:
P.S. Corrigido o código.
Depende de você como trabalhar com o roteiro. Não seria mais fácil para você criar uma EA em vez de um roteiro?
Um indicador que dá valores:
Um exemplo simples de um roteiro em loop:
Entendi que na MQL não há possibilidade de sincronizar diferentes módulos.
Ok. Então aqui vai uma pergunta. E se eu colocar o botão no campo e alimentar o script com esse botão?
Existe tal possibilidade na MQL? Ou também não existe tal possibilidade?
Afinal de contas, o roteiro deve ser lançado de alguma forma!
Entendo que na MQL não há possibilidade de sincronizar diferentes módulos.
Ok. Então aqui vai uma pergunta. E se eu colocar o botão no campo e colocar o roteiro neste botão?
Existe tal possibilidade na MQL? Ou também não existe tal possibilidade?
O roteiro deve ser lançado de alguma forma!
O tema é antigo, mas ainda lido, ou talvez alguém sugira algo novo. Não executo roteiros e não trabalho com eles de forma alguma)