MT4 simples - Ponte Java - página 2

 

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?

cyberflohr:
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.

 
pivotpoint:

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.

Você está usando o método getter correto - getDoubleProperty(jCtx, "DoublePropertyName") ?

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?

 
fasdfwesdgwe:

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

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();
}
}
 
cyberflohr:
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.