![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Obrigado cyberflohr por sua resposta. Tenho outra pergunta.
Há métodos predefinidos definidos na SampleEA, que vêm com sua amostra. Estes métodos ligados ao MT4 através da mt4j.dll. Se eu quiser adicionar meu próprio método ao SampleEA.java e quiser que ele seja chamado no MT4, o que devo fazer? modificar a mt4j.dll?
infelizmente escrevendo para System.out / System.err não aparecerá mensagens em seu terminal MT. você deve escrever suas mensagens em um arquivo (usando java.io) ou usar uma estrutura de registro java como log4j ou slf4j.
Prepararei uma amostra mais complexa que fará algumas negociações nos próximos dias.
cumprimentos,
cyberflohr
Você pode adicionar seus próprios métodos set/get à sua classe, isto é, setBuyPrice(preço duplo), double getPrice(), mas não é possível adicionar métodos com uma lista de parâmetros variáveis.
PS: Eu poderia adicionar suporte a métodos noargs se você quiser, isso significa que você chama primeiro seus métodos setter para preparar seu objeto de instância com dados e depois chama o método noargs para iniciar o processamento - o que você quiser.
O apoio aos métodos noargs (void someMethod()) seria muito útil. Como isto melhoraria a separação da transferência dos dados e o controle das operações a serem executadas sobre eles.
Cumprimentos,
Olá cyberflohr,
Excelente ferramenta. Eu tenho uma pergunta:
Como posso gerar novamente a mt4j.dll se eu gostaria de expor minha própria java api pública para ligar do MT4?
Obrigado,
Muito!
Cumprimentos,
Tamas
Olá CyberFlohr, muito obrigado por esta ponte Java MT4. Estou interessado em ter alguns traços do conteúdo da implementação da MT4J.dll, gostaria de ter um ponto de partida para desenvolver minha própria DLL, pois gostaria de acrescentar algumas funções técnicas disponíveis dentro da API.
Obrigado,
Jesus
Olá Cyberflohr,
Eu segui as instruções para instalar o mt4jv0.2 e não recebi nenhum erro relatado na plataforma MT4. Entretanto, a partir do SampleEA.java descubro que existe um método que parece ser executado quando a inicialização da EA de acordo com a descrição no MT4BasicClient.java
código em SampleEA.java:
@Override
vazio público init() {
System.out.println("init()");
}
descrição no MT4BasicClient.java:Batidas do Dr. Dre Solo
/**
* Chamado pelo cliente MT4 durante a fase init.
*/
A partir destes códigos acho que deve haver algo a ser impresso durante a inicialização. mas U não viu a mensagem "init()" ser impressa na plataforma MT4. Será que entendi o código corretamente?
Além disso, você pode dar outra demonstração para fazer um pedido?
muito obrigado, eu realmente aprecio seu código. :D
Alguém já fez alguns testes rígidos sobre o envio de valores duplos?
Eu tentei várias opções para enviar um valor duplo e depois receber o mesmo valor de volta, mas sem sucesso. O envio para o ambiente Java é bem sucedido (como eu depurei o valor recebido no lado java), mas receber o mesmo valor de volta para o ambiente MT falha.
Ao imprimir o valor recebido, ele mostra a saída como abaixo :
2012.05.03 22:57:32 ATT - Java EURUSD,M5: Duplo rec : -1.#IND
Alguém já encontrou o mesmo? Parece que a dll que está fazendo a transferência real não está manipulando corretamente o retorno da transferência de tipos duplos.
Obrigado de antemão.
Alguém já fez alguns testes rígidos sobre o envio de valores duplos?
Tentei várias opções para enviar um valor duplo e depois receber o mesmo de volta, mas sem nenhum sucesso. O envio para o ambiente Java é bem sucedido (como eu depurei o valor recebido no lado java), mas receber o mesmo valor de volta para o ambiente MT falha.
Ao imprimir o valor recebido, ele mostra a saída como abaixo :
2012.05.03 22:57:32 ATT - Java EURUSD,M5: Duplo rec : -1.#IND
Alguém já encontrou o mesmo? Parece que a dll que está fazendo a transferência real não está manipulando corretamente o retorno da transferência de tipos duplos.
Obrigado de antemão.
Eu verifiquei a amostra mt4jSAmple.mq4 com valores duplos e funciona.
setDoubleProperty(jCtx, "DoublePropertySample", DoubleProperty);
if (DoubleProperty != getDoubleProperty(jCtx, "DoublePropertySample", "DoublePropertySample")) {
Alerta("Double não foi ajustado corretamente: " + getDoubleProperty(jCtx, "DoublePropertySample"));
}
Talvez seja o próprio valor do flutuador, qual é o valor do flutuador?
Olá Cyberflohr,
Eu segui as instruções para instalar o mt4jv0.2 e não recebi nenhum erro relatado na plataforma MT4. Entretanto, a partir do SampleEA.java descubro que existe um método que parece ser executado quando a inicialização da EA de acordo com a descrição no MT4BasicClient.java
código em SampleEA.java:
@Override
vazio público init() {
System.out.println("init()");
}
descrição no MT4BasicClient.java:Batidas do Dr. Dre Solo
/**
* Chamado pelo cliente MT4 durante a fase init.
*/
A partir destes códigos acho que deve haver algo a ser impresso durante a inicialização. mas U não viu a mensagem "init()" ser impressa na plataforma MT4. Eu entendi o código corretamente?
Além disso, você pode dar outra demonstração para fazer um pedido?
muito obrigado, eu realmente aprecio seu código. :D
Para redirecionar mensagens escritas no System.out para um arquivo, basta adicionar o seguinte código inicializador estático à classe MT4BasicClient.java:
estático {
tente {
System.setOut(novo PrintStream(novo FileOutputStream("c:\mt4j.log",true)));
catch (FileNotFoundException e) {{
e.printStackTrace();
}
}
Como já escrevi em um post anterior, não há como redirecionar as mensagens escritas para System.out/err de volta para a plataforma MT4. Por favor, use uma estrutura de registro (log4j,slfj) para escrever suas mensagens em um arquivo.
Para redirecionar mensagens escritas no System.out para um arquivo, basta adicionar o seguinte código inicializador estático à classe MT4BasicClient.java:
estático {
tente {
System.setOut(novo PrintStream(novo FileOutputStream("c:\mt4j.log",true)));
catch (FileNotFoundException e) {{
e.printStackTrace();
}
}
Outra amostra para redirecionamento abaixo :
String out_filename = String.format("%s%s.log", "experts/logs/",this.getClass().getSimpleName()));
String err_filename = String.format("%s%s_error.log", "experts/logs/",this.getClass().getSimpleName()));
System.setOut(novo PrintStream(out_filename));
System.setErr(novo PrintStream(err_filename)));
que registrará com facilidade todo o seu console e registro de erros.