"İnternet üzerinden Terminaller arasında Veri Alışverişi için WinInet.dll Kullanımı" makalesi için tartışma

 

Yeni makale İnternet üzerinden Terminaller arasında Veri Alışverişi için WinInet.dll Kullanımı yayınlandı:

Bu makalede, HTTP isteklerinin kullanımı yoluyla İnternet ile çalışma prensipleri ve bir ara sunucu kullanarak terminaller arasında veri alışverişi açıklanmaktadır. MQL5 ortamında İnternet kaynaklarıyla çalışmak için bir MqlNet kitaplık sınıfı sunulmaktadır. Farklı aracılardan gelen fiyatları izlemek, terminalden çıkmadan diğer yatırımcılarla mesaj alışverişi yapmak, İnternette bilgi aramak... - Bunlar, bu makalede incelenen bazı örneklerdir.

Böylece, İnternetten dosya almayı öğrendik. Şimdi daha ilginç soruyu, yani bu verilerin sunucuda nasıl gönderileceği ve saklanacağı konusunu ele alalım. Bunun için sunucuda bulunacak küçük bir ek PHP-script dosyasına ihtiyacımız var. Yazılı MqlNet sınıfını kullanarak, izleme için bir Expert Advisor oluşturuyoruz - MetaArbitrage. PHP script dosyası ile bağlantılı olarak expert'in görevi şu şekilde olacaktır:

  • Sunucuya Expert Advisor isteği gönderme;
  • Sunucuda yanıt sayfasının (PHP) oluşturulması;
  • Bu sayfanın Expert Advisor tarafından alınması;
  • Analizi ve sonuçların ekrana iletilmesi.

MQL-modülü ile PHP script dosyası arasındaki etkileşimin şematik diyagramı aşağıdaki gibidir:


Yazar: ---

 

Güçlü! Çok faydalı bir makale. Yeni başlayanlar için tüm bu bilgileri internette aramak zordur. Ve burada her şey tek bir makalede toplanmış.

Genel olarak, internet ile çalışmak en ilginç konulardan biridir. Bu terminal için tam otomatik bir site (ancak birkaç sitede daha iyi birkaç site veya başlık) oluşturun. Sitede mevcut piyasa durumunun görüntülenmesi. Sitede piyasa analizi ve alım satım sinyallerinin görüntülenmesi. Diğer terminaller tarafından alım satım sinyallerinin "kesilmesi". İlgili kullanıcılara sinyal ve mesaj gönderme. Terminal hizmeti tarafından daha fazla hizmet vermeleri için "ilgilenen" kullanıcıları listeye (veritabanı) eklemek / çıkarmak. Diğer sitelerden bilgi toplama ve analiz etme, rapor oluşturma ve yayınlama...

Yeni başlayanlar için bu teknolojiyi kullanan oldukça fazla sayıda çeşitli basit örneklere sahip olmak da önemlidir.

 
Rinng писал(а) :

Ticaret sinyallerinin diğer terminaller tarafından "durdurulması".

durdurma ile ne kastediliyor? siteden bir sinyal alıp terminalde yürütmeyi mi kastediyorsunuz?

İlgilenen kullanıcılara sinyal ve mesaj gönderme. Terminal hizmeti tarafından daha fazla hizmet vermeleri için "ilgilenen" kullanıcıların listeye (veritabanına) eklenmesi/çıkarılması.

Burada iki seçenek vardır - ya anlaşmaların sıradan bir kopyalayıcısını yapmak. sadece bir ara sunucu ile bilgi alışverişi.
Ya da sunucu üzerinde gizli bir fonksiyonun hesaplamasını yapmak ve kullanıcıya uzmanının karar vermesi için bu fonksiyonun sonucunu vermek.

 
sergeev:

Araya girmekle neyi kastediyorsunuz? Siteden bir sinyal alıp bunu terminalde yürütmeyi mi kastediyorsunuz?

Burada iki seçenek vardır - ya sıradan bir işlem kopyalayıcısı yapmak, ancak yalnızca bir ara sunucuyla bilgi alışverişinde bulunmak.
Veya sunucuda gizli bir işlevin hesaplanmasını yapın ve kullanıcı bu işlevin sonucunu alır, böylece Uzman Danışmanı bir karar verebilir.

1) "Durdurma" - bu ara sunucudan (site) tam olarak sinyal alma ve kullanıcının terminalinde yürütme.

2) Kullanıcı veritabanına göre kişisel erişim ile sunucu bilgilerine (piyasa sinyalleri, kişisel mesajlar, piyasa analizi) erişim. Ana terminal üzerinden ve/veya sunucu komut dosyası üzerinden kullanıcı veritabanı yönetimi (örneğin - Webmani üzerinden bilgiye erişim için ödeme komut dosyası).

 

Rinng:

2) Kullanıcı veritabanına göre kişisel erişimle sunucu bilgilerine (piyasa sinyalleri, kişisel mesajlar, piyasa analizleri) erişim. Kullanıcı veritabanı yönetimi önde gelen terminal üzerinden ve/veya sunucu betiği üzerinden (örneğin - Webmani üzerinden bilgiye erişim için ödeme betiği).

Terminalde "bir şeyin" durumu hakkında bilgi alırsanız, bunun ilginç bir nokta olduğunu düşünüyorum.

Yazdığınız gibi - kullanıcının bağlı olduğu hizmetten gelen mesajlar.... Ancak bu amaç için uzman bunu okuyabilmeli ve çıktısını alabilmelidir. bu nedenle bazı hizmetler için bir tür bireysel gelişimdir.

Herhangi bir kaynak sunucuya yüklenebilecek ve bir terminalde bağlanması kolay olacak genelleştirilmiş bir protokol varyantınız veya fikirleriniz varsa, bunu tartışabiliriz. Terminallerdeki bağlantıların küreselleşmesi konusuyla şahsen ilgileniyorum.

 

Uzman Danışmandan gelen bilgileri birkaç sitede yayınlamak ve yayınlanan bilgilere diğer terminallerden şifre ile özel olarak erişmekle ilgileniyorum. Ve ayrıca EA'dan kullanıcı veritabanı yönetimi.

Terminaller arasındaki bağlantıların küreselleşmesine gelince, "uzak" bir sunucu olmadan yapamayacağımızı düşünüyorum. Genel olarak şöyle görünmelidir:

Ana terminalin görevleri, gerekli tüm bilgilerin hazırlanmasını ve uzak sunucunun yönetimini içerir.

Uzak sunucunun görevleri arasında bağımlı terminallerin tanımlanması, kullanıcı veritabanının (bağımlı terminaller) yönetimi, terminallere gerekli bilgilerin alınması ve gönderilmesi, site(ler)in tasarımı ve yayınlanması yer alır.

Bir bağımlı terminalin görevi, kendisine yönelik bilgileri almak ve işlemek ve sunucuya bir yanıt göndermektir.

Basit bir biçimde, sunucu PHP 5.0 üzerinde tasarlanabilir.

Veri alışverişi FTP protokolü üzerinden dosya alışverişi ile gerçekleşebilir.

Genel olarak üç program olmalıdır: sunucu, terminal-admin-server, terminal-client.

 

Bu devre için iki yaklaşım uyguladım.

1. Ana terminal başlatıcıdır.
Bu durumda gerekli bilgiyi sunucuya kendisi koyar ve köleler sadece oradan alır ve algoritmaya göre işler. Bu, kaynağının bizim kontrolümüz altındaki ana terminal olması dışında normal bilgi işlemeden farklı değildir.

Uygulama: işlem kopyalayıcılar ve master'ın slave durumlarına tepki vermesini gerektirmeyen sistemler.

2. Slave terminal başlatıcısı.
Bu durumda master yalnızca master'dan daha fazlasını bilen uzak bir makine gibi davranır. Yani, örneğin, slave tarafından talep edilen sinyaller veya gizli hesaplama formülleri ile piyasaya girme koşullarını içerir.
Uygulama: göstergelerin hesaplanması. Ticaret sinyallerinin alınması.

Bu durumda sunucu işlevleri gerçekten sadece erişim haklarının farklılaştırılmasıdır. yani, kölenin bir talebi alma veya bırakma hakkına sahip olup olmadığını kontrol etmek (bu arada, master için de benzer şekilde). Terminallerin veritabanı MySQL'de veya normal bir csv dosyasında saklanabilir.

Bu durumda FTP sunucu tarafında zorluklar yarattığından her şey istekler (POST / GET) aracılığıyla gerçekleştirilir.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 

Metaarbitrage.mq5 çalışmıyor. Günlüklerde yazıyor:

Nasıl düzeltilir?

sergeev:

Bu durumda FTP sunucu tarafında zorluklar çıkardığı için her şey istekler (POST / GET) aracılığıyla gerçekleştirilir.
.

Katılıyorum. Ben bir php ve MySql paketi öneriyorum. MySql ile bir derecelendirme sistemi düzenlemek, veri depolamak, seçim yapmak kolay olacaktır.

 
Graff:

Metaarbitrage.mq5 çalışmıyor. Kayıtlarda öyle yazıyor:

Nasıl düzeltebilirim?

hmm. şimdi kontrol ettim - testimde hata HttpOpenRequestW fonksiyonunda'kernel32.dll' içinde 0x003F0070' e okunan erişim ihlali satırı ile çöküyor.

Bana öyle geliyor ki makalenin yayınlanmasından sonra DLL çağrılarında bir şeyler değişti

Anlaştık. Ben bir php ve MySql paketi öneriyorum. MySql ile bir derecelendirme sistemi düzenlemek, veri depolamak, seçim yapmak kolay olacaktır.

Tabii ki. MySql her zaman sadece dosyaları korumaktan daha iyidir.
 
sergeev:

hmm. şimdi kontrol ettim - testimde, hata HttpOpenRequestW işlevinde'kernel32.dll' içinde 0x003F0070' e okunan erişim ihlali satırıyla çöküyor.

Bana öyle geliyor ki makale yayınlandıktan sonra DLL çağrılarında bir şeyler değişti.

Tabii ki. MySql her zaman sadece dosyaları korumaktan daha iyidir.

Hata numaraları farklı.

Boş zamanlarımda sunucu tarafı geliştirme ve pcp scriptleri konusunda yardıma hazırım.

 
Graff:

Hata numaraları farklıdır.

Servicedesk'e gönderdim. onlar da kontrol etsinler, sanırım hata daha derin ya da gerçekten bir şeyler değişti.

Boş zamanlarımda sunucu tarafı geliştirme ve pcp scriptleri konusunda yardımcı olmaya hazırım.

Fikir nedir, daha doğrusu çıktı ne olmalıdır?
Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.