Benim yaklaşımım. Çekirdek - Motor. - sayfa 61

 
Dmitry Fedoseev :

Bunun gibi bir şey yapabilirsiniz: dll'de bir veya iki dizi, biri nesne adı için, ikincisi olay türü için.

burada!

Henüz kontrol etmedim, ancak geliştiricilerin C# .Net için gelişmiş desteği varsa, o zaman MT5 ve .dll arasındaki karmaşık veri türlerinin değişimi işe yarayabilir, yani. yapılar

yapıların değişimi işe yararsa, genel olarak görev basitleştirilir ve ilkelciliğe indirgenir, örnek olarak, terminalin bilgilerini "Ticaret" sekmesi biçiminde tekrarlamak istiyoruz

bir onay işareti üzerine, yapıyı OrderProfit,OrderTicket,OrderStoploss ile doldurun... ve bu yapıyı .dll'ye gönderin ve kullanıcının orada tıkladığı yanıt yapısını alın... ve bu kadar, sonra form görsel bilgiyi orada döndürür, terminalin kendisi


Peter Konow'un fotoğrafı.

Ve sonra DLL içinde bir ORTAK bellek oluşturun.

Form öğelerinin sayısındaki artış ve programın MT5'teki işlevselliğinin karmaşıklığı ile bu etkileşim GERÇEKTEN yüklenmiş ve karmaşık hale gelir.

hm, bu kadar zor olan ne? Görselleştirmeyi ayrı ayrı = .dll, ayrı MT işi

size açıklamak zor, bellek yoluyla veri alışverişinin hızı hakkında bir fikriniz var mı? - orada saniyede yüz bin bayttan bahsetmiyoruz ve hatta saniyede milyonlarca, birkaç milyar bayttan bahsetmiyoruz ve siz değişimin karmaşıklığından bahsediyorsunuz))))

 
Реter Konow :

TAMAM.

Yani ihtiyacın var:

  1. DLL oluşturun.
  2. DLL'yi form ile Windows uygulamasına bağlayın.
  3. Dll'deki düğmelere ve onay kutularına tıklama olaylarını yayınlayan yöntemler yazın.
  4. Bir Windows uygulamasında düğmelerin ve onay kutularının durumlarını değiştiren yöntemler yazın.
  5. DLL'de paylaşılan bellek oluşturun. Böylece MT5'ten erişirken, düğmelerin ve onay kutularının durumunu değiştirme bayrağı ayarlanır. Ardından, Windows uygulaması paylaşılan belleğe erişti, bayrakları okudu ve onlardan bir veya başka bir form öğesinin durumunu değiştirmenin gerekli olduğunu öğrendi.
  6. İşlev çağrısı bayraklarını okumak veya alanlara metin girmek için MT5'teki zamanlayıcıdan DLL'ye döngüsel bir çağrı yazın.

    Ya yüzlerce element varsa?

    Paylaşılan hafıza nasıl düzgün bir şekilde organize edilir?

    Ya formdaki öğelerin yalnızca basılı/basılmış durumunu değil, rengini de (örneğin düğmeler için) değiştirmeniz gerekirse?

    Formdaki giriş alanlarındaki metni MT5'ten programlı olarak değiştirmeniz gerekirse ne olur?


    1. Sorun nedir? Bu, oluşturulurken proje tipi seçimidir.

    2. İgor'un gösterdiği örnekte görüldüğü gibi bağlantı tek satırda yapılıyor, hatta importun anlatılmasına bile gerek yok.

    3. Yöntem bir kez yazılır, bir dosyaya kaydedilir ve daha sonra hiçbir değişiklik yapılmadan tüm projelerde kullanılır.

    4. Muhtemelen gerekli, ancak bunlar basit. Büyük ihtimalle hepsi gerekli olmayacak ama c# da kontroller arasında etkileşim olacak, belki bir olayın dışarıda gösterilmesi gerekecek ve formda 100 buton var.

    5. Bu, 3. nokta için geçerlidir.

    6. Ayrıca 3. paragrafta doğru yaklaşıma sahip bir satır.

    7 - C#'ın tüm gücü sizin elinizde, sanki ölçeği hakkında hiçbir fikriniz yok, bir tanesi çok büyük.

     
    Реter Konow :

    Alınma ama durumun böyle olmaması üzücü.

    EN BASİT örneği alıyor ve karmaşıklığın artmayacağına inanarak onu tahmin ediyorsunuz. Bu hata.

    Verdiğin en basit örnek bile yanlış. Çünkü oluşturulan forma ek olarak bir DLL de oluşturmanız gerekiyor. Ve sonra DLL içinde bir ORTAK bellek oluşturun.

    Form öğelerinin sayısındaki artış ve programın MT5'teki işlevselliğinin karmaşıklığı ile bu etkileşim GERÇEKTEN yüklenmiş ve karmaşık hale gelir.

    Bunu pratikte test ettim.

    Sonuç tamamen yanlış.

     

    Sorun şu ki, ben bahsettiğimi GERÇEKTEN yaptım. Ve karmaşık bir MT programı ile karmaşık bir üçüncü taraf programı arasındaki etkileşimi organize etmenin ne kadar zor olduğunu biliyorum.

    Ve amatörce yaklaşım genellikle "Evet, sadece... Sorunlar ne? O böyle, bu böyle..." sözlerinden oluşur.

    Karmaşık bir MT programını karmaşık bir Windows formuna bağlamanın bir örneğini sağlayın; burada program şunları yapabilir:

    1. Öğe durumlarını değiştirin ve giriş alanlarında metni görüntüleyin.
    2. Programın, formun giriş alanlarından metin kabul edebileceği ve öğelerin renklerini değiştirebileceği yer.
    3. Programın form pencerelerinin görünümünü kontrol edebildiği yer (bazılarını açın ve diğerlerini kapatın).
    Bunun tamamen MT üzerinde çalışan bir örneğini verebilirim.

     
    Реter Konow :

    Sorun şu ki, ben bahsettiğimi GERÇEKTEN yaptım. Ve karmaşık bir MT programı ile karmaşık bir üçüncü taraf programı arasındaki etkileşimi organize etmenin ne kadar zor olduğunu biliyorum.

    Ve amatörce yaklaşım genellikle "Evet, sadece... Sorunlar ne? O böyle, bu böyle..." sözlerinden oluşur.

    Karmaşık bir MT programını karmaşık bir Windows formuna bağlamanın bir örneğini sağlayın; burada program şunları yapabilir:

    1. Öğelerin durumlarını değiştirin ve giriş alanlarında metni görüntüleyin.
    2. Programın, formun giriş alanlarından metin kabul edebileceği ve öğelerin renklerini değiştirebileceği yer.
    3. Programın form pencerelerinin görünümünü kontrol edebildiği yer (bazılarını açın ve diğerlerini kapatın).
    Bunun tamamen MT üzerinde çalışan bir örneğini verebilirim.

    Olsaydı, bugün yaptıkları gibi sorular sormazlardı. C# öğrenin ve kendiniz yapın. Igor'un dün gösterdiği dll ve çağrı yöntemleri nasıl bağlanır.

     
    Dmitry Fedoseev :

    1. Sorun nedir? Bu, oluşturulurken proje tipi seçimidir.

    2. İgor'un gösterdiği örnekte görüldüğü gibi bağlantı tek satırda yapılıyor, hatta importun anlatılmasına bile gerek yok.

    3. Yöntem bir kez yazılır, bir dosyaya kaydedilir, ardından tüm projelerde hiçbir değişiklik yapılmadan kullanılır.

    4. Muhtemelen gerekli, ancak bunlar basit. Büyük ihtimalle hepsi gerekli olmayacak ama c# da kontroller arasında etkileşim olacak, belki bir olayın dışarıda gösterilmesi gerekecek ve formda 100 buton var.

    5. Bu, 3. nokta için geçerlidir.

    6. Ayrıca 3. paragrafta doğru yaklaşıma sahip bir satır.

    7 - C#'ın tüm gücü sizin elinizde, sanki ölçeği hakkında hiçbir fikriniz yok, bir tanesi çok büyük.

    Dmitry, C#'ın BÜYÜK gücünü kullanın ve MT uygulamasıyla etkileşime giren ve şunları yapan bir formla çok karmaşık olmayan bir uygulama yapın:

    1. Öğelerin durumlarını değiştirir ve giriş alanlarında metni görüntüler.
    2. Form giriş alanlarından metin kabul eder ve öğe renklerini değiştirir.
    3. Form pencerelerinin görünümünü kontrol eder (bazılarını açar ve diğerlerini kapatır).
    Igor ve sen bunun çok kolay olduğunu iddia ediyorsun. Bu yüzden çabuk halledin. Tamamen MT'de bir analog sağlayacağım. Ve yürütmenin kalitesini ve karmaşıklığını karşılaştıracağız.
     
    Реter Konow :

    Dmitry, C#'ın BÜYÜK gücünü kullanın ve MT uygulamasıyla etkileşime giren ve şunları yapan bir formla çok karmaşık olmayan bir uygulama yapın:

    1. Öğelerin durumlarını değiştirir ve giriş alanlarında metni görüntüler.
    2. Form giriş alanlarından metin kabul eder ve öğe renklerini değiştirir.
    3. Form pencerelerinin görünümünü kontrol eder (bazılarını açar ve diğerlerini kapatır).
    Igor ve sen bunun çok kolay olduğunu iddia ediyorsun. Bu yüzden çabuk halledin. Tamamen MT'de bir analog sağlayacağım. Ve yürütmenin kalitesini ve karmaşıklığını karşılaştıracağız.

    Yapacak işlerim var. Ama hayallerinizin içinde olmaya devam edebilirsiniz.

     

    Ve evet, programlamada eşi görülmemiş bir mucize - bir şey yapmak için bunun için bir fonksiyon yazmanız gerekiyor.

     
    Dmitry Fedoseev :

    Yapacak işlerim var. ...

    Tamam, belki Igor yapar o zaman ...

     
    Реter Konow :

    Tamam, belki Igor yapar o zaman ...

    Igor zaten çok fazla şey gösterdi. Ve çok fazla şey söyledim.