MT4 simples - Ponte Java - página 3

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

Eu verifiquei a amostra mt4jSAmple.mq4 com valores duplos e funciona.

setDoubleProperty(jCtx, "DoublePropertySample", "DoublePropertySample");
if (DoubleProperty != getDoubleProperty(jCtx, "DoublePropertySample")) {
Alert("Double não foi ajustado corretamente: " + getDoubleProperty(jCtx, "DoublePropertySample"))

}


Talvez seja o próprio valor do flutuador, qual é o valor do flutuador?

Ambiente

========

> MT4.00 construir 418

> Java Runtime : C:\Program Files (x86)\Javajre6binclient\jvm.dll

versão java "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b05)

Java HotSpot(TM) Cliente VM (construir 20.6-b01, modo misto, compartilhamento)



Inclusão do MT4 :

==========

#importar "mt4j.dll"

double getDoubleProperty(int jctx, string property);

void setDoubleProperty(int jctx, propriedade da corda, valor duplo);

#import


implementação Java :

==============

dupla Propriedade Privada DoublePropertySample;


público duplo getDoublePropertySample() {

devolver este.doublePropertySample;

}

public void setDoublePropertySample(doubleProperty) {
this.doublePropertySample = doubleProperty;
}



O seguinte código é executado :

==============

double send_test_double = -8008.12345678912;

setDoubleProperty(pid, "DoublePropertySample",send_test_double);
double received_test_double = getDoubleProperty(pid, "DoublePropertySample");

Print("Double Send (as is) ",send_test_double);
Print("Double Send Test "(Double Send Test = -8008.12345678912);DoubleToStrMorePrecision(send_test_double,16));
Print("Double Received (as is) ",received_test_double);
Print("DoubleToStrMorePrecision(send_test_double,16));
Print("Double Comparison Test ",send_test_double == received_test_double);


As seguintes linhas no registro do terminal :

=======================

2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Send (as is) -8008.1235
2012.05.10 00:55:55 stdlib EURUSD,M5: carregado com sucesso
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Send Test -8008.1234567891197003
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Teste Duplo Recebido (como está) -1.#IND
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Teste Duplo Recebido -1.6627963145224000
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Teste Duplo Comparativo 1


Espero que você possa ver algo sobre ele, pois já o comparei muitas vezes (talvez eu tenha esquecido algo).

 
pivotpoint:

Meio Ambiente

========

> MT4.00 construir 418

> Java Runtime : C:\Program Files (x86)\Javajre6binclient\jvm.dll

versão java "1.6.0_31"
Java(TM) SE Runtime Environment (construir 1.6.0_31-b05)

Java HotSpot(TM) Cliente VM (construir 20.6-b01, modo misto, compartilhamento)



Inclusão do MT4 :

==========

#importar "mt4j.dll"

double getDoubleProperty(int jctx, string property);

setDoubleProperty(int jctx, propriedade de cordel, valor duplo);

#importar


implementação Java :

==============

dupla Propriedade Privada DoublePropertySample;


public double getDoublePropertySample() {

devolver este.doublePropertySample;

}

setDoublePropertySample(doubleProperty) {
this.doublePropertySample = doubleProperty;
}



O seguinte código é executado :

==============

double send_test_double = -8008.12345678912;

setDoubleProperty(pid, "DoublePropertySample",send_test_double);
double received_test_double = getDoubleProperty(pid, "DoublePropertySample",send_test_double);

Print("Double Send (as is) ",send_test_double);
Print("Double Send Test ",DoubleToStrMorePrecision(send_test_double,16));
Print("Double Received (as is) ",received_test_double);
Imprimir("Double Received Test ",DoubleToStrMorePrecision(received_test_double,16));
Print("Double Comparison Test ",send_test_double == recebido_test_double);


As seguintes linhas no registro do terminal :

=======================

2012.05.10 00:55:55 ATT - Java EURUSD,M5: Duplo envio (como está) -8008.1235
2012.05.10 00:55:55 stdlib EURUSD,M5: carregado com sucesso
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Teste de envio duplo -8008.1234567891197003
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Duplo Recebido (como está) -1.#IND
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Teste Duplo Recebido -1.6627963145224000
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Teste de Comparação Dupla 1


Espero que você possa ver algo sobre ele, pois já o comparei muitas vezes (talvez eu tenha esquecido algo).



Ou você tem versões atualizadas do software disponíveis com outros aprimoramentos? Atualmente estou usando a versão v2 da dll.
 

Oi pivotpoint,

Eu testei seu código com meu MT build 409 e ele funciona.

06:37:18 mt4jAmostra EURUSD,H4: Duplo envio (como está) -8008.1235
06:37:18 stdlib EURUSD,H4: carregado com sucesso
06:37:18 mt4jAmostra EURUSD,H4: Teste de envio duplo -8008.1234567891197003
06:37:18 mt4jAmostra EURUSD,H4: Duplo Recebido (como está) -8008.1235
06:37:18 mt4jAmostra EURUSD,H4: Teste Duplo Recebido -8008.1234567891197003

06:37:18 mt4jSample EURUSD,H4: Teste de comparação dupla 1


No entanto, procurei e encontrei um posto de interesse. Parece que a versão (418) que você está usando tem alguns bugs sérios.

https://www.mql5.com/en/forum/138657


cumprimentos,

cyberflohr

 
Nova versão: V0.3

suporte adicionado para noargs método void-method.

Código MT4:

// chama um método noargs vazio em sua classe EA.
callNoArgsMethod(jCtx, "doSomething");


cumprimentos,

cyberflohr

Arquivos anexados:
mt4j_v0.3.zip  17 kb
 
brooky29:

Hi

O erro 126, ao meu entender, significa que o MT4 não consegue encontrar o arquivo dll. Supondo que você esteja chamando-o pelo seu nome correto, ele precisa estar principalmente na pasta /experts/libraries/. Ele pode ir para outro lugar, mas esta é sua melhor localização.

Espero que isto ajude.

Abraço

Brooky

De fato, após vários testes e pesquisas em fóruns externos, descobri que o erro 126 é liberado pelo sistema quando a DLL não consegue encontrar uma de suas dependências... eu recomendo muito o uso da ferramenta depende.exe para descobrir qual dependência da dll está faltando em seu sistema operacional.
 

Hi,

Estou tendo erro abaixo para MT build 432

2012.06.14 00:23:24 2011.09.26 20:00 mt4jSample EURUSD,H4: função 'addNewBar' chamada da dll 'mt4j.dll' erro crítico c0000005 em 6D8860FA.

Para mim, parece que a construção teve problemas com a api.

Será que voltaríamos a ter o mesmo problema se fizéssemos um upgrade com a nova construção da MT?


Obrigado


 

Olá,

Tenho um problema para carregar o mt4jSample.jar. Adicionei alguns códigos no SampleEA.java que requerem arquivos jarros externos, entretanto, após ter reembalado o mt4jSample.jar o sistema parece não ser reconhecido ou não consegue encontrar onde esses arquivos jarros externos se encontram.

O novo SampleEA.java funciona bem no Eclipse, mas simplesmente não funciona no MetaTrader 4, se eu remover aqueles códigos que chamam arquivos jarros externos e reembalados, o mt4jSample.jar funciona bem.

Você pode me dizer onde devo definir ou definir o caminho de classe para esses arquivos externos do jarro? Eu tenteias propriedades do mt4j. mas não funcionou.

Muito obrigado.

 
javaelf:

Olá,

Tenho um problema para carregar o mt4jSample.jar. Adicionei alguns códigos no SampleEA.java que requerem arquivos jarros externos, entretanto, após ter reembalado o mt4jSample.jar o sistema parece não ser reconhecido ou não consegue encontrar onde esses arquivos jarros externos se encontram.

O novo SampleEA.java funciona bem no Eclipse, mas simplesmente não funciona no MetaTrader 4, se eu remover aqueles códigos que chamam arquivos jarros externos e reembalados, o mt4jSample.jar funciona bem.

Você pode me dizer onde devo definir ou definir o caminho de classe para esses arquivos externos do jarro? Eu tentei o mt4j.properties mas não funcionou.

Muito obrigado.

Este Fórum é sobre a codificação mql4 . .
 
RaptorUK:
Este Fórum é sobre a codificação mql4 . .

Obrigado, mas como mencionei no post, não há problemas quando o dirijo em Eclipse, mas tem problemas em MetaTrader4. Não tenho certeza onde MQL4 ou MetaTrader4 devem configurar o caminho da classe.
 
javaelf:

Olá,

Tenho um problema para carregar o mt4jSample.jar. Adicionei alguns códigos no SampleEA.java que requerem arquivos jarros externos, entretanto, após ter reembalado o mt4jSample.jar o sistema parece não ser reconhecido ou não consegue encontrar onde esses arquivos jarros externos se encontram.

O novo SampleEA.java funciona bem no Eclipse, mas simplesmente não funciona no MetaTrader 4, se eu remover aqueles códigos que chamam arquivos jarros externos e reembalados, o mt4jSample.jar funciona bem.

Você pode me dizer onde devo definir ou definir o caminho de classe para esses arquivos externos do jarro? Eu tentei o mt4j.properties mas não funcionou.

Muito obrigado.

mt4j.properties é o lugar certo para expandir o classpath, ou seja

jvmOption.1=-Djava.class.path=experts\libraries\mt4jSample.jar;experts\libraries\mylib.jar;c:\mylibs\mylib2.jar


cyberflohr