Uzman Danışmanlar: Yatırımcılar için MQL5 Programlama - Kitaptan kaynak kodları. Bölüm 7 - sayfa 4

 
wf2000cn #:

Merhaba @Stanislav Korotky, MQL5'te yeniyim. Websocket kullanımı için bir wss.zip dosyası yayınladığınızı gördüm. Nasıl kullanılır, bir demo veya öğrenebileceğim bir şey var mı? İçtenlikle teşekkür ederim!

Algotrading kitabında, işlemlerin ve sinyallerin kopyalanması için bir web hizmeti projesinin uygulanmasını (adım adım) açıklayan bölümde birkaç örnek bulabilirsiniz.

MQL5 Book: Advanced language tools / Projects / Project plan of a web service for copying trades and signals
MQL5 Book: Advanced language tools / Projects / Project plan of a web service for copying trades and signals
  • www.mql5.com
As an end-to-end demonstration project, which we will develop throughout this chapter, we will take a simple, but at the same time quite...
 
Stanislav Korotky #:

Algotrading kitabında, işlemlerin ve sinyallerin kopyalanması için bir web hizmeti projesinin uygulanmasını (adım adım) açıklayan bölümde birkaç örnek bulabilirsiniz.

Tamam, önce ben öğreneceğim. İçtenlikle teşekkür ederim!
 

Merhaba @StanislavKorotky

Ters yönde bekleyen bir emir ile kısmi pozisyon kapatma uygulamaya çalışıyorum.

örn:

  • XAUUSD üzerinde 2 lot büyüklüğünde açık bir Alış pozisyonum varsa
  • XAUUSD üzerinde 1 lot büyüklüğünde bekleyen bir Satış emri açın
  • OnTradeTransaction -> TRADE_TRANSACTION_DEAL_ADD (transaction.type) olayı içinde

MqlTradeRequestSync reqs(transaction.symbol);

reqs.closeby(target_position_ticket_id, transaction.order);

Yukarıdaki satırın işi halledebileceğine inanıyorum, ancak benim sorunum OnTradeTransaction -> TRADE_TRANSACTION_DEAL_ADD ( transaction.type) olay işleyicisi içinde `target_position_ticket_id`yi nasıl alacağımveya bekleyen emri bir şekilde hedef_position_ticket_id ile ilişkilendirerek bekleyen emir doldurulduğunda kapanması bekleniyor.

Bekleyen emri oluştururken bekleyen emir yorumuna 'target_position_ticket_id' eklemeyi denedimancak sorun şu ki, OnTradeTransaction -> TRADE_TRANSACTION_DEAL_ADD (transaction.type) içinde
MqlTradeTransaction özniteliklerinde 'comment' olmadığı için yoruma erişemiyorum

Lütfen yardımınız için minnettar olacağım

 
pauldic MqlTradeTransaction özniteliklerinde 'comment' olmadığı için yoruma erişemiyorum

Kitaptaki closeby(ticket1, ticket2) yöntemi, bir hedging hesabı kullandığınızı ve ticket1 ve ticket2 biletleriyle zaten 2 açık pozisyonunuz (alış ve satış) olduğunu varsayar. Sanırım, bekleyen emre karşı TRADE_ACTION_CLOSE_BY eylemini gerçekleştirmek (genel olarak) imkansızdır. Ancak hesabınız netleştirme modundaysa, ters yönde bekleyen bir emir verebileceğinizi ve tetiklendiğinde mevcut pozisyonu buna göre değiştireceğini düşünüyorum - bu onu kapatır veya kısmi kapatır, hatta tersine çevirir (yeni hacim eskisinden daha büyükse).

 
Websocket'lerde küçük yamalar (a la carte & en masse).
Dosyalar:
wsprotocol.mqh  17 kb
wss.zip  16 kb
 
Stanislav Korotky #:
Websocket'lerde küçük yamalar (alakart ve toplu).
StanislavKorotky Sürekli güncelleme için teşekkürler, lütfen çözmekte zorlandığım bir şey var. MT5 "Piyasa İzleme" üzerinde herhangi bir "Sembol" üzerine sağ tıklayabilir ve ilgili tüm özellikleri tıpkı programlı olarak "Spesifikasyon" üzerine tıklayarak görüntüleyebilirim.

Bu özelliklerden biri, ekteki resimde görülebileceği gibi açıkça brokerlerden farklı olan Sembolün "Komisyonları" dır. Ancak, bu özelliğe programatik olarak erişemedim. Lütfen sembolün komisyonunu nasıl alabileceğim konusunda bana yardımcı olabilir misiniz?


Diğer taraftan, PositionFilter ile çalışırken, özellikle EA ilk kez yüklendiğinde veya yeniden derlendiğinde, bu mesaj günlükte sık sık gösteriliyor "Unresolved int value as enum: 8 for MonitorInterface<ENUM_POSITION_PROPERTY_INTEGER,ENUM_POSITION_PROPERTY_DOUBLE,ENUM_POSITION_PROPERTY_STRING>". Hala iyi çalışıyor ve hiçbir şeyi durdurmuyor
 
pauldic #:
@StanislavKorotky Sürekli güncelleme için teşekkürler, lütfen çözmekte zorlandığım bir şey var. MT5 "Piyasa İzleme" üzerinde herhangi bir "Sembol" üzerine sağ tıklayabilir ve "Özellikler" üzerine tıklayarak programlı olarak yaptığım gibi tüm ilişkili özelliklerini görüntüleyebilirim.

Bu özelliklerden biri, ekteki resimde görülebileceği gibi açıkça brokerlerden farklı olan Sembolün "Komisyonları" dır. Ancak, bu özelliğe programatik olarak erişemedim. Lütfen sembolün komisyonunu nasıl alabileceğim konusunda bana yardımcı olabilir misiniz?

Ne yazık ki, terminalin varlıklarının tüm özelliklerine MQL5 aracılığıyla erişilemiyor.

pauldic #:
Diğer taraftan, özellikle EA ilk kez yüklendiğinde veya yeniden derlendiğinde PositionFilter ile çalışırken bu mesaj genellikle günlükte görünür "Unresolved int value as enum: 8 for MonitorInterface<ENUM_POSITION_PROPERTY_INTEGER,ENUM_POSITION_PROPERTY_DOUBLE,ENUM_POSITION_PROPERTY_STRING>". Hala iyi çalışıyor ve hiçbir şeyi durdurmuyor

Bu sadece MQL5'in ilgili yerleşik numaralandırmasının normalde ardışık olarak atanan sabitlerde bir boşluğa sahip olmasından kaynaklanan bir uyarıdır. Bu boşluk, MQL5 sürekli değiştiği için oluşur ve bazı sabitler eski hale gelebilir ve daha sonra ortadan kaldırılabilir. Bu tür uyarıları önlemek için kaynak kodunu düzenleyebilirsiniz.

 

JSON kütüphanesinin güncellenmiş bir sürümünü ekliyorum - toyjson3.mqh - kitaptaki toyjson2. mqh ve toyjson.mqh 'nin yerine geçecek.

Bu sürüm büyük json dosyalarını işlemek için optimize edilmiştir. Basitlik adına, önceki sürümler ayrıştırma sırasında metin belirteci için StringSplit işlevini kullanır ve bu çağrı, parçalanma ve daha fazla veri akışı beklentisi nedeniyle dahili olarak gigabaytlarca yedek bellek isteyebilir. Ayrıştırma işleminden sonra serbest bırakılır, ancak MQL5 bellek yöneticisi çöpleri ertelenmiş bir şekilde serbest bıraktığı için bir süre saklı tutabilir.

Artık ayrıştırma sırasında kat kat daha az bellek kullanır.

Dosyalar:
toyjson3.mqh  39 kb
 
ToyJson3.mqh 'de küçük bir hata düzeltmesi daha - üslü kayan noktalı sayılar (bilimsel gösterim, "1e-8" gibi) artık ayrıştırma sırasında doğru bir şekilde algılanıyor.
Dosyalar:
toyjson3.mqh  39 kb