Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1011
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
Qual é a melhor maneira de escrever o algoritmo?
Tarefa:
Um Expert Advisor funciona com base em diferentes gráficos.
Preciso ter um arquivo separado com informações minuto a minuto sobre conta, saldo, patrimônio líquido, etc.
Agora acontece que todos os consultores especializados escrevem todas as informações em um único arquivo. Como resultado, temos muitas entradas desnecessárias.
Qual é a solução original possível, para que apenas um bot faça registros no arquivo (e, se fosse excluído, o outro bot começaria a fazer registros, etc.)
Criar um objeto gráfico no OnInit() com o nome da EA, ou qualquer outro objeto. Talvez, a EA já esteja criando um objeto, você pode usá-lo, por exemplo, "MyEA":ObjectCreate(0,"MyEA",OBJ_...,...))
Em OnTick() onde escrever no arquivo precisamos verificar a primeira identificação gráfica com esta mesma etiqueta = significa que este é o primeiro Expert Advisor instalado no terminal, não estamos interessados no resto.
Temos que usar o overshoot:
Recebemos o primeiro gráfico/símbolo com um Expert Advisor instalado nele
Em seguida, comparamos com o primeiro Expert Advisor antes de escrevê-lo em um arquivo:
Não é uma construção fácil, mas é melhor do que escrever para uma variável global
Pegue o MA padrão, mude o tipo de dados do buffer, compile e verifique na janela de dados do terminal (Ctrl+D)
ChartID() é escrito nas variáveis globais do terminal com um erro. o que é este absurdo?
Tente este código:
O resultado da execução deste código
Criar um objeto gráfico no OnInit() com o nome da EA ou qualquer outro objeto, talvez a EA já crie um objeto, então você pode usá-lo, vamos assumir "MyEA": ObjectCreate(0,"MyEA",OBJ_...,...))
Em OnTick() onde escrever no arquivo precisamos verificar a primeira identificação gráfica com esta mesma etiqueta = significa que este é o primeiro Expert Advisor instalado no terminal, não estamos interessados no resto.
Temos que usar o overshoot:
Recebemos o primeiro gráfico/símbolo com um Expert Advisor instalado nele
Em seguida, comparamos com o primeiro Expert Advisor antes de escrevê-lo em um arquivo:
Não é uma construção fácil, mas é melhor do que escrever para a variável global
Sim, boa idéia.
Obrigado.
Pergunta, e se a EA foi apagada (por exemplo, devido a erro), mas o objeto permaneceu. O que fazer se o gráfico estiver completamente fechado, precisamos de alguma forma reatribuir a EA "principal"?
Sim, isso é uma boa idéia.
Obrigado.
Pergunta então: E se a EA foi apagada (por exemplo, devido a um erro), mas o objeto permaneceu. O que fazer se o quadro estiver fechado em sua totalidade, precisamos de alguma forma reatribuir o "principal" Expert Advisor?
Há apenas um caso de erro - se o Expert Advisor foi apagado acidentalmente e o objeto foi deixado, mas em minha memória, não me lembro de tal erro no MT4. Em todos os outros casos, o Conselheiro Especialista principal será reatribuído.
P.S. Tente verificar se o OnDeInit() será emitido em erro no Expert Advisor e se apagará do gráfico. Provavelmente, você pode verificá-lo facilmente criando uma variável e contando carrapatos e dividindo-o por 10/0 no 11º carrapato.
Em OnDeInit() definir Imprimir e ver a causa da desinicialização, e se ela ocorrer, então por esta causa/número apagar o objeto "MyEA" do gráfico
Você pode escrever sobre o resultado, pois não tenho tempo de verificá-lo eu mesmo
Criar um objeto gráfico no OnInit() com o nome da EA ou qualquer outro objeto, talvez a EA já crie um objeto, então você pode usá-lo, vamos assumir "MyEA": ObjectCreate(0,"MyEA",OBJ_...,...))
Em OnTick() onde escrever no arquivo precisamos verificar a primeira identificação gráfica com esta mesma etiqueta = significa que este é o primeiro Expert Advisor instalado no terminal, não estamos interessados no resto.
Temos que usar o overshoot:
Recebemos o primeiro gráfico/símbolo com um Expert Advisor instalado nele
Em seguida, comparamos com o primeiro Expert Advisor antes de escrevê-lo em um arquivo:
Não é uma construção fácil, mas é melhor do que escrever para uma variável global
Acho que você está enganado. Os GVs não são gravados em disco todas as vezes. Caso contrário, não haveria necessidade de forçar a GV para o disco.
E, ainda por cima, percorrendo todos os gráficos em busca de EA e objeto. Vitaly, isso é uma chatice...Acho que você está enganado. Os GVs não são gravados em disco todas as vezes. Caso contrário, não precisaríamos da função de gravação forçada da GV em disco.
Sim, mais para percorrer todos os gráficos em busca de EA e objeto... Vitaly, isso é uma chatice...Sim, eles são:GlobalVariableSet("GV",ID);
perfis -> gvariables.dat
Alternativamente são escritos como:GlobalVariableSet("GV",ID);
perfis -> gvariables.dat
Quando você o cria, talvez, mas quando você o sobrescreve antes de desativar o aplicativo que lá escreve, você tem que verificar. Eu sou muito preguiçoso. Ainda assim, puramente teoricamente, se fosse escrito no disco todas as vezes, a função acima seria um guizo.
Você não pode fazer isso.
Procure um programa Windows que sincronize os dados em pastas. E configurá-lo de modo que o Expert Advisor seja copiado automaticamente para um novo terminal.
Como eu entendo, existem tais programas, mas eles só funcionam com arquivos, mas se for um documento de texto, não copia o conteúdo e não substitui os arquivos, talvez eu não tenha encontrado um programa normal. É uma pena que os desenvolvedores não tenham considerado a opção de especificar o caminho de onde fazer o download do Expert Advisor ou do arquivo do robô, eu pensei que poderia especificar o caminho como normalmente é feito, mas como você apontou acima, é impossível.
Como eu entendo, existem tais programas, mas eles só funcionam com arquivos, mas se for um documento de texto, o conteúdo não é copiado e os arquivos não são substituídos, talvez eu não tenha encontrado um programa normal. Acho ruim que os desenvolvedores não tenham levado em conta a possibilidade de definir caminho de onde obter robô ou arquivo especializado. Pensei que seria possível definir caminho como geralmente é feito, mas como você já mencionou, isso não é possível.
Note neste post as palavras "Todos os terminais têm pastas compartilhadas".
Isto não é possível. Fórum sobre comércio, sistemas de comércio automatizados e teste de estratégias comerciais
O que devo fazer se eu quiser usar um produto Marketplace?
Sergey Tabolin, 2019.11.23 08:17
Você acha mesmo que eu não sei como e onde instalar? )))
Todos os terminais têm pastas comuns
Eu baixei um indicador gratuito do mercado. Ele se liga ao hardware.
Por que funciona com um hardware, mas não com o outro?
Conclusão óbvia - liga-se, pelo menos não só ao hardware.
Procure informações sobre como isso é feito e saia... Isto é chamado de ligação de pastas.