Farklı terminallerde çalışan iki Uzman Danışman arasında veri alışverişi - sayfa 2

 

EA olayı tick ile işlediğinden bu yönde durmuştur.

Birini yazmanın ve diğerini bir tik ile kuvvetten okumanın farkı, teoride bir sonraki tikte...

 

Burada fikir biri tarafından ziyaret edildi ve kayıt defteri aracılığıyla veri alışverişi yapabilir mi? Anahtar oluştur, anahtarı sil. Bunun için tüm API'ler orada görünüyor. Ne kadar yavaş çalıştığını bilmiyorum ama uygulamaların eriştiği kısım her zaman RAM'de olabilir gibi görünüyor.

Bu kimsenin başına geldi mi? Bu sadece aynı makinedeki terminaller için geçerlidir.

Bu yönde kazacağım :-).

 
Andres писал(а) >>

Burada fikir biri tarafından ziyaret edildi ve kayıt defteri aracılığıyla veri alışverişi yapabilir mi? Anahtar oluştur, anahtarı sil. Bunun için tüm API'ler orada görünüyor. Ne kadar yavaş çalıştığını bilmiyorum ama uygulamaların eriştiği kısım her zaman RAM'de olabilir gibi görünüyor.

Bu kimsenin başına geldi mi? Bu sadece aynı makinedeki terminaller için geçerlidir.

Bu yönde kazacağım :-).

Lütfen kayıt defteriyle çalışmak için API'ye bir bağlantı verin.

Hala diskteki dosyalar aracılığıyla bilgi alışverişine dayalı bir değişken düşünüyorum. Elbette her iki terminal de aynı bilgisayarda çalışır.

Şimdiye kadar, bunu önceden test ettim ve bana, her iki hesabın operasyonel yönetimi için oldukça yeterli olduğunu düşündüğüm, terminaller arasında bilgi alışverişi yapmak için hızın fazlasıyla yeterli olduğu görülüyordu (Hesap SATIN AL ve SATIN hesabı).

Doğru, son zamanlarda işte çok iş oldu ve bu nedenle son birkaç haftadır bu sorunla uğraşmadım.

Daha önce programcı arkadaşlarımdan birine sormama rağmen, eldeki sorunu çözmek için kayıt defteriyle oynamama konusunda beni uyardı. Sabit diskteki bir dosya aracılığıyla bilgi alışverişini kullanmamı şiddetle tavsiye etti.

Şimdilik durduğum yer burası. Yeterli boş zaman olacağı için, dosya ile bu özel varyantın uygulanmasıyla ilgileneceğim.

 

http://yandex.ru/yandsearch?text=CreateFileMapping&stpar2=%2Fh0%2Ftm123%2Fs1&stpar4=%2Fs1

Kolaylık, pratik olarak dll'de paylaşılan belleğe bir bağlantı olmasıdır.

bu adres bir yapının adresi olarak kullanılabilir. Üstelik sadece hayal gücünüzle sınırlısınız :)

 
solandr >> :

Lütfen kayıt defteriyle çalışmak için API'ye bir bağlantı verin.

Kayıt defterinden okuma örneği.

 

Bu yüzden zaten küçük bir kitaplık yazdım ve danışmanlarım zaten kayıt defteri aracılığıyla tamamen değişiyor. Aslında, RAM üzerinden değişiyorlar, diske herhangi bir okuma-yazma gözlemlemiyorum. MSDN, kayıt defterine birkaç yüz KB'den fazla veri göndermemenin daha iyi olduğunu söylüyor.

Kitaplık, tüm anahtarlar ve parametreler geçici kayıt defteri alanında oluşturulacak ve kalıcı kayıt defterine yazmayacak şekilde yapılandırılır. Yeniden başlatmanın ardından bu anahtarlar artık orada değil.

Bir AMA - kitaplık yalnızca 255 karakterden uzun olmayan (MQL'de sınır) dize parametreleriyle çalışır. Ama bu yeterli. Genel olarak, kayıt defterindeki parametreler farklı türlerde olabilir ve sadece dizeler değil, bence şu ana kadar başka türlere ihtiyaç yoktur. Şimdi kayıt defteri aracılığıyla iki Uzman Danışmanı değiştiriyorum, ancak daha fazlası mümkün :-). Başka bir artı, Win API'sinde ağ kayıt defterine bağlanmanın mümkün olmasıdır. Aynı ağda farklı makinelerde çalışan Expert Advisor'lar arasında bilgi alışverişi yapmak isteyen varsa bu yöne bakabilirsiniz. Bence - hızlı, basit ve güvenilir ve herhangi bir dll ve dosya olmadan. Bir hat sürdü - bir hat aldı.

 #include "RegLib.mqh"

int hKey ;

int init ( )
{
   // инициализируем дефайны
   InitRegDefines ( ) ;

   // создаём тестовый ключ
   hKey = CreateKey ( HKEY_CURRENT_USER , "!MT4TestKey" ) ;

   // создаём поля по умолчанию
   SetStringValue ( hKey , "Bid" , "0.0" ) ;
   SetStringValue ( hKey , "Ask" , "0.0" ) ;

   return ( 0 ) ;
}

int start ( )
{
   // записываем цены в реестр
   SetStringValue ( hKey , "Bid" , DoubleToStr ( Bid , Digits ) ) ;
   SetStringValue ( hKey , "Ask" , DoubleToStr ( Ask , Digits ) ) ;

   // получаем цены в виде строк из реестра
   string BidStr = GetStringValue ( hKey , "Bid" ) ;
   string AskStr = GetStringValue ( hKey , "Ask" ) ;

   // выводим цены из реестра
   Print ( "Bid = " , BidStr , " " , "Ask = " , AskStr ) ;
}

int deinit ( )
{
   // закрываем ключ
   CloseKey ( hKey ) ;
   
   return ( 0 ) ;
}
Dosyalar:
reglib.zip  4 kb
 
Andres писал(а) >>

Burada fikir biri tarafından ziyaret edildi ve kayıt defteri aracılığıyla veri alışverişi yapabilir mi? Anahtar oluştur, anahtarı sil. Bunun için tüm API'ler orada görünüyor. Ne kadar yavaş çalıştığını bilmiyorum ama uygulamaların eriştiği kısım her zaman RAM'de olabilir gibi görünüyor.

Bu kimsenin başına geldi mi? Bu sadece aynı makinedeki terminaller için geçerlidir.

Bu yönde kazacağım :-).

Ampulle çivi çakmayı da deneyebilirsiniz. Bazıları anlar.

 
Integer >> :

Ampulle çivi çakmayı da deneyebilirsiniz. Bazıları anlar.

Ama güzel, kusura bakmayın. İşletim sistemi değişkenlerini kullanmayı da deneyebilirsiniz.

 
granit77 писал(а) >>

Ama güzel, kusura bakmayın. İşletim sistemi değişkenlerini kullanmayı da deneyebilirsiniz.

Ayrıca sistem saatini de ayarlayabilirsiniz.

 
:)))))))))))))
Neden: