Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
MT5 ile Quick'i bağlama fikrinden tamamen vazgeçtim, sadece Quick'te durdum (DEE server + trans2quik.dll)
Bu programı düşünüyorum.
Selector1, DDE sunucusundan sürekli olarak veri alır ve bunları Depolamada "depolar" ve ayrıca ilgili Child'da OnTick işlevini çağırır.
GetStorageData'nın çağrılması, DDE sunucusunu duraklatmalı ve Depolama'ya yazmalıdır.
Ve Selector2'den Geri Arama geldiğinde, hem DDE sunucusu hem de Depolamaya yazma askıya alınmalı ve GetStorageData çağrısı engellenmelidir.
Onlar. Selector2 yüksek önceliğe sahiptir, GetStorageData normaldir ve Selector1 düşüktür.
Sorular:
Selector1, Selector2 ve GetStorageData'nın çalışması nasıl doğru şekilde senkronize edilir?
Belki mevcut senkronizasyonun belirli örnekleri vardır (böyle bir şeyi hiç uygulamadım)?
MT5 ve Quick'i bağlama fikrini terk etti, yalnızca Quick'e yerleşti (DEE sunucusu + trans2quik.dll)
Bu programı düşünüyorum.
1. Sadece Hızlı ayrılmak için doğru kararı puanlar.
2. DDE aracılığıyla iletişim çok tartışmalı bir karardır. Birçok kişi DDE'nin kararsız olduğunu söylüyor ama ben bilmiyorum.
Bana göre en iyi ve çok yönlü çözüm Lua DLL uygulamasıdır. Bu seçeneği kullanıyorum. Tabii ki, bu bir iş meselesi.
1. Sadece Hızlı ayrılmak için doğru kararı puanlar.
2. DDE aracılığıyla iletişim çok tartışmalı bir karardır. Birçok kişi DDE'nin kararsız olduğunu söylüyor ama ben bilmiyorum.
Bana göre en iyi ve çok yönlü çözüm Lua DLL uygulamasıdır. Bu seçeneği kullanıyorum. Tabii ki, bu bir iş meselesi.
Uzun zaman önce Quick için bir DDE sunucusu yazdım - hatasız çalışıyor ve yeterince hızlı (Lua - DLL'den daha yavaş değil),
aynı zamanda, Lua ve DDL veri alıcısına ek kod yazmak hiç de gerekli değildir.
Katma
Aslında şemada gösterilen programı zaten yazdım (ve çalışıyor), ancak bir senkronizasyon sorunuyla karşılaştım.
Uzun zaman önce Quick için bir DDE sunucusu yazdım - hatasız çalışıyor ve yeterince hızlı (Lua - DLL'den daha yavaş değil),
Lua'da ek kod yazmak hiç gerekli değildir.
Çünkü DDE dahil değildi, soru şu ki - DDE nasıl yapılır? Orada olduğu gibi, tabloyu verilerle yapmak ve ardından DDE ile başlatmak gerekiyor.
Olaylarda bir yanlışlık var. Bir şeyler değişti ve tüm tablo DDE aracılığıyla gönderilmiş gibi görünüyor. Yoksa yanılıyor muyum?
Diyelim ki yanıldım. O zaman alıcı taraftaki olay nasıl belirlenir?
Aslında şemada gösterilen programı zaten yazdım (ve çalışıyor), ancak bir senkronizasyon sorunuyla karşılaştım.
Neyle?
Lua ile bu sorun DLL'den rastgele verilere yapılan geri aramalarla çözülür.
Çünkü DDE dahil değildi, soru şu ki - DDE nasıl yapılır? Orada olduğu gibi, tabloyu verilerle yapmak ve ardından DDE ile başlatmak gerekiyor.
Olaylarda bir yanlışlık var. Bir şeyler değişti ve tüm tablo DDE aracılığıyla gönderilmiş gibi görünüyor. Yoksa yanılıyor muyum?
Diyelim ki yanıldım. O zaman alıcı taraftaki olay nasıl belirlenir?
Quick'da çıktı için gerekli tablo oluşturulur.
DDE sunucusu içeren uygulamanız başlatıldı, bu tabloyu DDE ile görüntülüyoruz
Quick'ten ilk çıktıda, tüm tablo DEE'ye aktarılır ve ardından tablodan sadece bir satır,
hangi değişiklikler meydana geldi.
Dizenin kendisinde (tam olarak iletilir) enstrümanın adı (örneğin benim için) vardır - bu tanımlayıcıdır
DDE sunucusunun kendisi birkaç satırdır (Pascal'da var, ancak internette başka dillerde birçok örnek var)
Enstrümanın adıyla bir alt pencere oluşturulur (MT 5'te olduğu gibi).
Neyle?
Sorunu bir konuda diyagramla anlattım
Sorunu bir konuda diyagramla anlattım
Üzgünüm, farketmedim. Eğer doğru anladıysam, o zaman:
IMHO, çözüm, MS SQL Server diyelim , Depolama olarak bir DBMS'nin kullanılmasıdır. Bunun kısmi bir çözüm olması mümkündür.
İkincisi, son giren ilk çıkar gibi ara toplama arabelleklerinin kullanılması. Peki, ve akışların bölünmesi.
O zaman hiçbir şeyi durdurmanıza gerek yok, her şey sadece arabelleğe yazılır. DBMS'nin çok kullanıcılı erişimi var.
Bunların hepsini kullanıyorum ama 6'sından beri Pascal ile arkadaş olmadım.
PS Pascal'dan NET kitaplıklarının kullanılabileceğini söylüyorlar. Depolama olarak kullanmak için yapabilirsiniz. kullanmak mantıklı System.Data , System.Data . DataSet ve System.Data . veri tablosu Hatırladığım kadarıyla DataTable'a çoklu kullanıcı erişiminde herhangi bir sorun yoktu.
ZY2 Şimdi SQLite'ı veritabanı olarak kullanmaya çalışıyorum ama henüz kesin bir sonuç yok. Ve bu kesinlikle bir DBMS değildir, ancak kesilmiş bir biçimde, çok kullanıcılı erişim mümkündür ve bellekte bir veritabanı oluşturmak mümkündür.
Hayır, sadece 3 iş parçacığının çalışmasını senkronize etmeniz gerekiyor (aslında bir Senkronizatör yazın), ancak
Nasıl bilmiyorum.