Basit MT4 - Java köprüsü - sayfa 2

 

Cevabınız için teşekkürler cyberflohr. Başka bir sorum daha var.

Numunenizle birlikte gelen SampleEA'da tanımlanmış önceden tanımlanmış yöntemler vardır. Bu yöntemler mt4j.dll aracılığıyla MT4'e bağlanmıştır. SampleEA.java'ya kendi yöntemimi eklemek ve MT4'te çağrılmasını istiyorsam ne yapmalıyım? mt4j.dll'yi değiştir?

cyberflohr :
ne yazık ki System.out / System.err'e yazmak, MT terminalinizde mesajları göstermeyecektir. mesajlarınızı bir dosyaya yazmalısınız (java.io kullanarak) veya log4j veya slf4j gibi bir Java kayıt çerçevesi kullanmalısınız.

Önümüzdeki birkaç gün içinde bazı işlemler yapan daha karmaşık bir örnek hazırlayacağım.

Saygılarımızla,
Siberflohr
 

Kendi set/get Yöntemlerinizi sınıfınıza ekleyebilirsiniz, yani void setBuyPrice(double price), double getPrice(), ancak değişken parametre listesi ile yöntemler eklemek mümkün değildir.

Not: İsterseniz noargs yöntemleri için destek ekleyebilirim, bu, örnek nesnenizi verilerle hazırlamak için önce ayarlayıcı yöntemlerinizi çağıracağınız ve ardından işlemeye başlamak için noargs yöntemini çağıracağınız anlamına gelir - ne istersen.

 

Noargs yöntemleri için destek (void someMethod()) çok kullanışlı olacaktır. Bu, veri aktarımının ayrılmasını ve üzerinde çalışacak işlemlerin kontrolünü iyileştireceğinden.


Saygılarımızla,

 

Merhaba cyberflohr,

Mükemmel araç. Bir sorum var:

MT4'ten aramak için kendi genel Java API'mi göstermek istersem mt4j.dll'yi nasıl yeniden oluşturabilirim?

Teşekkürler,

Çok fazla!

Saygılarımızla,

Tamas

 

Merhaba CyberFlohr, bu MT4 Java Köprüsü için çok teşekkürler. MT4J.dll uygulamasının içeriğinin bazı özelliklerine sahip olmakla ilgileniyorum, kendi DLL'imi geliştirmek için bir başlangıç noktasına sahip olmak istiyorum, çünkü API içinde bazı teknik işlevler kullanılabilirliği eklemek istiyorum.


Teşekkürler,

isa

 

Merhaba Cyberflohr,

mt4jv0.2'yi yükleme talimatınızı takip ettim ve MT4 platformunda herhangi bir hata bildirilmedi. Ancak SampleEA.java'dan, MT4BasicClient.java'daki açıklamaya göre EA başlatıldığında çalıştırılıyor gibi görünen bir yöntem olduğunu buldum.

SampleEA.java'daki kod:

@Geçersiz kıl

public void init() {

System.out.println("init()");

}

MT4BasicClient.java'daki açıklama: Beats by Dr. Dre Solo

/**

* Başlatma aşamasında MT4 istemcisi tarafından çağrılır.

*/

Bu kodlardan, başlatma sırasında yazdırılacak bir şey olacağını düşünüyorum. ancak U "init()" mesajının MT4 platformunda yazdırıldığını görmedi. Kodu doğru anlamış mıyım?

Ayrıca, sipariş vermek için başka bir demo verebilir misiniz?

çok teşekkür ederim, kodunuzu gerçekten takdir ediyorum. :D

 

Çifte değerler gönderme konusunda katı testler yapan var mı?


Çifte bir değer göndermek için birkaç seçenek denedim ve ardından aynısını geri aldım, ancak başarılı olamadım. Java ortamına gönderme başarılı (Java tarafında alınan değerde hata ayıkladığım için) ancak aynı değeri MT ortamına geri almak başarısız oluyor.


Alınan değeri yazdırırken aşağıdaki gibi çıktıyı gösterir:


2012.05.03 22:57:32 ATT - Java EURUSD,M5: Çift kayıt : -1.#IND


Aynı durumla karşılaşan var mı? Gerçek aktarımı yapan dll, çift tiplerin aktarımını doğru şekilde gerçekleştirmiyor gibi görünüyor.



Şimdiden teşekkürler.

 
pivotpoint :

Çifte değerler gönderme konusunda katı testler yapan var mı?


Çifte bir değer göndermek için birkaç seçenek denedim ve ardından aynısını geri aldım, ancak başarılı olamadım. Java ortamına gönderme başarılı (Java tarafında alınan değerde hata ayıkladığım için) ancak aynı değeri MT ortamına geri almak başarısız oluyor.


Alınan değeri yazdırırken aşağıdaki gibi çıktıyı gösterir:


2012.05.03 22:57:32 ATT - Java EURUSD,M5: Çift kayıt : -1.#IND


Aynı durumla karşılaşan var mı? Gerçek aktarımı yapan dll, çift tiplerin aktarımını doğru şekilde gerçekleştirmiyor gibi görünüyor.



Şimdiden teşekkürler.

Doğru alıcı yöntemini mi kullanıyorsunuz - getDoubleProperty(jCtx, "DoublePropertyName")?

mt4jSAmple.mq4 örneğini çift değerlerle doğruladım ve çalışıyor.

setDoubleProperty(jCtx, "DoublePropertySample", DoubleProperty);
if (DoubleProperty != getDoubleProperty(jCtx, "DoublePropertySample")) {
Alert("Çift doğru ayarlanmadı: " + getDoubleProperty(jCtx, "DoublePropertySample"));

}


Belki de kayan değerin kendisidir, kayan değer nedir?

 
fasdfwesdgwe :

Merhaba Cyberflohr,

mt4jv0.2'yi yükleme talimatınızı takip ettim ve MT4 platformunda herhangi bir hata bildirilmedi. Ancak SampleEA.java'dan, MT4BasicClient.java'daki açıklamaya göre EA başlatıldığında çalıştırılıyor gibi görünen bir yöntem olduğunu buldum.

SampleEA.java'daki kod:

@Geçersiz kıl

public void init() {

System.out.println("init()");

}

MT4BasicClient.java'daki açıklama: Beats by Dr. Dre Solo

/**

* Başlatma aşamasında MT4 istemcisi tarafından çağrılır.

*/

Bu kodlardan, başlatma sırasında yazdırılacak bir şey olacağını düşünüyorum. ancak U, "init()" mesajının MT4 platformunda yazdırıldığını görmedi. Kodu doğru anlamış mıyım?

Ayrıca, sipariş vermek için başka bir demo verebilir misiniz?

çok teşekkür ederim, kodunuzu gerçekten takdir ediyorum. :D

Daha önceki bir gönderide yazdığım gibi, System.out/err'a yazılan mesajları MT4 platformuna geri yönlendirmenin bir yolu yok. Mesajlarınızı bir dosyaya yazmak için lütfen bir kayıt çerçevesi (log4j,slfj) kullanın.
System.out'a yazılan iletileri bir dosyaya yeniden yönlendirmek için, aşağıdaki statik başlatıcı kodunu MT4BasicClient.java sınıfına eklemeniz yeterlidir:

statik {
denemek {
System.setOut(new PrintStream(new FileOutputStream("c:\\temp\\mt4j.log",true)));
} yakalama (FileNotFoundException e) {
e.printStackTrace();
}
}
 
cyberflohr :
Daha önceki bir gönderide yazdığım gibi, System.out/err'a yazılan mesajları MT4 platformuna geri yönlendirmenin bir yolu yok. Mesajlarınızı bir dosyaya yazmak için lütfen bir kayıt çerçevesi (log4j,slfj) kullanın.
System.out'a yazılan iletileri bir dosyaya yeniden yönlendirmek için, aşağıdaki statik başlatıcı kodunu MT4BasicClient.java sınıfına eklemeniz yeterlidir:

statik {
denemek {
System.setOut(new PrintStream(new FileOutputStream("c:\\temp\\mt4j.log",true)));
} yakalama (FileNotFoundException e) {
e.printStackTrace();
}
}


Aşağıdaki yönlendirme için başka bir örnek:


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(new PrintStream(out_filename));
System.setErr(new PrintStream(err_filename));


Bu, tüm konsolunuzu ve hata günlüğünü güzel bir şekilde günlüğe kaydeder.