MT4 platformunda görsel stüdyo. - sayfa 4

 

Grafik motoru için bir arayüz oluşturmaya yönelik teknik bilgi ve talimatların bulunduğu dosyanın nasıl görüneceğini bu bağlantıya tıklayarak görebilirsiniz:

https://www.youtube.com/watch?v=ciVqJwgIIyg&feature=youtu.be#t=66.940294

 
Реter Konow :

Bildiğim kadarıyla şu anda MS Visual Studio'da oluşturulan arayüzü MT platform grafiğine aktarmanın bir yolu yok.

Neden böyle karar verdin? Var ve hatta birkaçı. Doğru, neden arayüzlerin grafiklere aktarılması gerektiği açık değil - eğer öyleyse, evet, muhtemelen mevcut değiller. Ancak bunu MT'nin üstünde yapmak oldukça mümkün
 
Реter Konow :

...

Bu, kullanıcının programı için bir grafik arayüz oluşturma ile ilgili tüm konularda koddan ve derleyiciden tamamen izole olacağı ve yalnızca stüdyo tarafından sunulan görsel kontrol araçlarıyla ilgileneceği anlamına gelir . Arayüz oluştururken, "sürükle ve bırak" teknolojisinin yanı sıra, pencereler ve kontroller için hazır şablonların özelliklerini belirlemenin mümkün olacağı çeşitli ayar pencereleri kullanılacaktır.

...

... Bu motor geliştiricinin uygulamasıyla entegre olacak ve tüm grafik işlerini yapacak.

Ancak kod aracılığıyla değilse geliştiricinin uygulamasıyla nasıl bütünleşecek? Programın Market Watch'a benzer bir tablo göstermesi gerektiğini varsayalım. Ardından, "A1" hücresinin A2'de "EURUSD" yazısını - "1.238273" fiyatını vb. içermesi gerektiğine dair talimatlar göndermesi gerekiyor. Ayrıca, terminalden terminale, araç seti farklı olacaktır ve tablonun alanlarını ve adlarını statik olarak doldurmak imkansızdır.

Microsoft Visual Studio'da her şey açıktır - uygulama oluşturmak için tamamen yazılım ortamı üzerinde kullanışlı bir eklentidir. Onlar. Visual Studio gerçekten bir görsel geliştirme ortamı değildir ve sizin programınız söz konusu olduğunda nasıl çalışacağı net değildir.

 
Vasiliy Sokolov :

Ancak kod aracılığıyla değilse geliştiricinin uygulamasıyla nasıl bütünleşecek? Programın Market Watch'a benzer bir tablo göstermesi gerektiğini varsayalım. Ardından, "A1" hücresinin A2'de "EURUSD" yazısını - "1.238273" fiyatını vb. içermesi gerektiğine dair talimatlar göndermesi gerekiyor. Ayrıca, terminalden terminale, araç seti farklı olacaktır ve tablonun alanlarını ve adlarını statik olarak doldurmak imkansızdır.

Microsoft Visual Studio'da her şey açıktır - uygulama oluşturmak için tamamen yazılım ortamı üzerinde kullanışlı bir eklentidir. Onlar. Visual Studio gerçekten bir görsel geliştirme ortamı değildir ve sizin programınız söz konusu olduğunda nasıl çalışacağı net değildir.

Şu anda, grafik motorunu ve kullanıcı uygulamasının işlevselliğini birleştirme sorununun çözümü geliştirilme aşamasındadır.

Sizi sadece genel konseptle tanıştırabilirim.

Geliştirici, kendi uygulamasını yazarken, özel işlevleri tarafından döndürülen değişkenlerin değerlerini (örneğin, "EURUSD" için geçerli Teklif fiyatının değeri) programının içinde değil, dışında depolamak zorunda kalacaktır.

Bu, değişkenlerin kendilerini adlandırmak yerine, paylaşılan bellek dizisi hücresinin (programının dışında bulunur) dizinini yazması ve işlevden alınan değeri orada saklaması gerektiği anlamına gelir.

Bu global diziye "çekirdek parametreleri" diyorum. Ayrıca, kullanıcı bu hücrenin adresini stüdyodaki kontrole atayacaktır. Sırasıyla, grafik motoru nesneler arasında periyodik bir döngü yapar ve bunlara bağlı parametrelerin adreslerine parametre çekirdeğinde bakar. Bu adresteki değer, kullanıcı tanımlı bir fonksiyon tarafından değiştirilmişse, motor bunu pencerede güncelleyecektir. Ya da tam tersi - değer kontrol tarafından değiştirilmişse, özel işlev onun işlenmesini kabul edecektir.

Aslında bu çözüm, "parametrelerin çekirdeği" adı verilen ortak bir bellek aracılığıyla etkileşime giren iki programın bir simbiyozudur. Her iki program da - bir arayüze sahip bir grafik motoru ve bir kullanıcı programı, terminal içindeki farklı grafiklere yerleştirilecektir.

Sorun yalnızca paylaşılan belleğin oluşturulmasındadır. MQL ile çözmeye çalışırken DLL kullanmaya başvurmak istemiyorum ama çıkış yolu yoksa orada bir paylaşımlı bellek oluşturabilirim. Bunu zaten yaptım.

 
Реter Konow :

Sorun yalnızca paylaşılan belleğin oluşturulmasındadır. MQL ile çözmeye çalışırken DLL kullanmaya başvurmak istemiyorum ama çıkış yolu yoksa orada bir paylaşımlı bellek oluşturabilirim. Bunu zaten yaptım.

DLL'ye başvurduğunuz anda, konseptinizden hiçbir şey kalmayacak. Sadece hiçbir şey - Pshik. DLL ile evet, ancak DLL olmadan bile göreviniz hiçbir şey geliştirmeden çözülebilir. Ve bu, modern programlamanın ana konseptidir - zaten oluşturulmuşsa, kendiniz hiçbir şey geliştirmeyin.
 
Yuriy Asaulenko :
Neden böyle karar verdin? Var ve hatta birkaçı. Doğru, neden arayüzlerin grafiklere aktarılması gerektiği açık değil - eğer öyleyse, evet, muhtemelen mevcut değiller. Ancak bunu MT'nin üstünde yapmak oldukça mümkün
Lütfen belirtiniz.
 
Yuriy Asaulenko :
DLL'ye başvurduğunuz anda, konseptinizden hiçbir şey kalmayacak. Sadece hiçbir şey - Pshik. DLL ile evet, ancak DLL olmadan bile göreviniz hiçbir şey geliştirmeden çözülebilir.
Lütfen görüşünüzü açıklayın.
 
Реter Konow :
Lütfen belirtiniz.

Tam olarak ne belirtilmelidir? MT'nin üstünde VS'de pencereler mi oluşturuyorsunuz? Bu bir kuş - tüm pencerelerin üstünde.

VS ile veri mi paylaşıyorsunuz? En az 4 yol.

 
Реter Konow :
Lütfen görüşünüzü açıklayın.
Bir önceki gönderiye bakın veya daha spesifik olun lütfen. Windows herhangi bir çaba harcamadan.
 
Реter Konow :

Sorun yalnızca paylaşılan belleğin oluşturulmasındadır. MQL ile çözmeye çalışırken DLL kullanmaya başvurmak istemiyorum ama bir çıkış yolu yoksa orada bir paylaşımlı bellek oluşturabilirim. Bunu zaten yaptım.

Tabii ki, etkileşimi DLL aracılığıyla da düzenleyebilirsiniz, çünkü artık kimsenin buna ihtiyacı olmayacak. Markette herhangi bir DLL yasaktır. Standart MQL içinde iki program arasındaki global veri alışverişini düzenlemenin tek yolu global değişkenlerdir . Bu arada, global değişkenler aracılığıyla veri alışverişi için çok güzel bir kütüphane: https://www.mql5.com/ru/code/12786

Genel olarak, stüdyonuzu kimin için yarattığınız çok net değil. Geliştiriciler için ise, çözümünüzün bir API'si yok. Hiç kimse, özellikle Market'e yerleştirilen programlar için, programın veri alışverişi yapacağı ayrı bir uygulamayı sürüklemek istemez.

Abonelik lisanslı çözüm aynı zamanda son derece talihsiz bir seçenek olan IMHO'dur. Burada, bir programcı stüdyonuza dayalı bir program geliştirdi, ilk çalışma ayı için ödeme yaptı ve ardından ikinci ayda programı çalışmayı reddetti, çünkü stüdyonuzun grafik çekirdeği başka bir ek ödeme gerektiriyordu. Rave. Geliştiricilerin hiçbiri projelerini sürekli olarak ek ödemeler gerektirecek bir komplekse dayandırmayacak. Ancak bir seferde lisansın satın alınacağını ve stüdyonun kendisinin uygulamanın bir parçası olacağını hayal etsek bile, bunun Market'te (başka bir lisans içerecek lisanslı bir program) nasıl çalışacağı yine net değil.

Yine de asıl soruya cevap verin: projeniz hangi hedef kitle için yaratılıyor? Sıradan bir kullanıcının neden stüdyonuza ihtiyacı var? MetaTrader 5'te Microsoft Word var mı? Elbette güzel ama NEDEN? İnsanlar hazır çözümler için para ödüyor. Belirli işler yapan programlar ve algoritmalar için. Herhangi bir form oluşturmalarına gerek yoktur. Programlara ihtiyaçları var. Ve bu programları yazan programcılar stüdyonuzu kullanamayacaklar çünkü iş çok garip bir şekilde organize edilmiş.

Artık vurgunun Pazar üzerinde olması gerektiğini anlayın. Eğer bir altyapı projesi oluşturmak istiyorsanız öncelikle sorunun cevabını kendiniz vermelisiniz; "Market'te iş yapan veya Freelance çalışan programcılar neden stüdyomu kullanmaya başlayacak. Bu onlara ne kazandıracak?"