Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 576

 

Merhaba.

Lütfen bana Uzman Danışmandan gelen metni terminali kullanarak panoya kopyalamanın mümkün olup olmadığını söyleyin, örneğin duruma göre uyarı metni.

Evet ise, nasıl yapılır?

 
mila.com :

Merhaba.

Lütfen bana Uzman Danışmandan gelen metni terminali kullanarak panoya kopyalamanın mümkün olup olmadığını söyleyin, örneğin duruma göre uyarı metni.

Evet ise, nasıl yapılır?

Numara. Panoyla çalışmak bir sistem işlevidir (Windows API). MQL5'te WinAPI'ye doğrudan erişim yoktur. Ve neden panoyla çalışıyorsun? Sonuçta, mesajı kendiniz oluşturuyorsunuz - böylece mesajın orijinal metnine sahipsiniz.
 
Karputov Vladimir :
Numara. Panoyla çalışmak bir sistem işlevidir (Windows API). MQL5'te WinAPI'ye doğrudan erişim yoktur. Ve neden panoyla çalışıyorsun? Sonuçta, mesajı kendiniz oluşturuyorsunuz - böylece mesajın orijinal metnine sahipsiniz.

Evet, bir kaynak metin var, ancak ona belirli bir koşulda panoda ihtiyacım var.

Üzgünüm, belirtmedim, MQL 4'te bir uygulamaya ihtiyacım var.

Belki bir şekilde panoyu #import "user32.dll" ile açabilirsiniz?

 
mila.com :

Evet, bir kaynak metin var, ancak ona belirli bir koşulda panoda ihtiyacım var.

Üzgünüm, belirtmedim, MQL 4'te bir uygulamaya ihtiyacım var.

Belki bir şekilde panoyu #import "user32.dll" ile açabilirsiniz?

MQL5'te uzun süre yazmanın zamanı geldi. Bir dll kullanmak pervasızlığın zirvesidir.

Anladığım kadarıyla, bilgileri üçüncü taraf bir programla okumak istiyorsunuz. Ardından , tüm istemci terminalleri \Terminal\Common\Files'ın ortak klasöründeki bir dosyaya yazın. Zaten bu dizinden dosyayı üçüncü taraf bir programla okuyabilirsiniz.

 
Karputov Vladimir :

MQL5'te uzun süre yazmanın zamanı geldi. Bir dll kullanmak pervasızlığın zirvesidir.

Anladığım kadarıyla, bilgileri üçüncü taraf bir programla okumak istiyorsunuz. Ardından , tüm istemci terminalleri \Terminal\Common\Files'ın ortak klasöründeki bir dosyaya yazın. Zaten bu dizinden dosyayı üçüncü taraf bir programla okuyabilirsiniz.

Tavsiyen için teşekkürler, ama şimdi metni bir MQL 4 programından panoya kopyalamam gerekiyor.

 
Karputov Vladimir :

Sırayla gidelim. İşte şablon:

Grafiğe ekleyin ve grafiğin ekran görüntüsünü stüdyoya ekleyin, ayrıca "Dergi" ve "Uzmanlar" sekmelerinden (orada görünüyorlarsa) girişler yapın.

Merhaba !!!

İlk önce MT5 platformunu yeniden başlattım. Şablonunuzu derledim. Derleme sonucu aşağıda gösterilmiştir. Boyutu nedeniyle ekran görüntüleri atılmak zorunda kaldı.

Navigatörde bir danışman belirdi:

Danışmanı grafiğe attım ve 3 yerde ticarete izin verdim:

Grafikte yüzü olan bir surat değil, bir danışman simgesi var

İşte başarıyla yüklenen 2016.05.11 12:44:47.139 Experts Expert Test (GBPUSD,H1) günlüğünden bir alıntı

Danışmanın yüklenmesiyle ilgili mesajın içeriği aşağıdadır:

CO 0 10:35:45.020 Terminal Alpari Limited MT5 x64 1325 yapımı başladı (Alpari Limited)
HD 0 10:35:45.020 Terminal Windows 8.1 (x64 tabanlı PC), IE 11.00, UAC, Intel Core i5-2320 @ 3.00GHz, RAM: 2209 / 4078 Mb, HDD: 45023 / 149999 Mb, GMT+03:00
ND 0 10:35:45.020 Terminal C:\Users\Boris\AppData\Roaming\MetaQuotes\Terminal\73D45AFCBD5653CAF29C407A081F030C
LI 0 10:35:47.200 Ağ '50016841': Alpari-Ltd-MT5'ten mt5.nl.3'e kadar yetkilendirilmiştir (ping: 57.34 ms)
NG 0 10:35:47.200 '50016841' Ağı: 2016.05.10 23:47:58'de 79.172.69.175'ten önceki başarılı yetkilendirme
FK 0 10:35:47.617 Ağ '50016841': Alpari Limited ile senkronize edilmiş terminal
RM 0 10:35:47.617 Ağ '50016841': ticaret etkinleştirildi - netleştirme modu
OH 0 10:35:48.253 Ağ '50016841': erişim noktaları için ağ tarama
CL 0 10:35:51.446 Ağ '50016841': tarama ağı tamamlandı
ND 1 12:00:49.011 Ağ '50016841': Alpari-Ltd-MT5 bağlantısı koptu
MR 0 12:01:08.842 '50016841' Ağı: Alpari-Ltd-MT5'ten mt5.nl.3'e kadar yetkilendirilmiş (ping: 56.41 ms)
HR 0 12:01:08.842 '50016841' Ağı: 2016.05.11 10:35:52'de 79.172.69.175'ten önceki başarılı yetkilendirme gerçekleştirildi
PQ 0 12:01:08.907 Ağ '50016841': Alpari Limited ile senkronize edilmiş terminal
PH 0 12:01:08.907 Ağ '50016841': ticaret etkinleştirildi - netleştirme modu
KL 0 12:41:45.169 Uzman uzman Testi (GBPUSD,H1) başarıyla yüklendi

Bak lütfen. Belki nedenini bulursun. Bir çıkmazdayım, belki yapıyla ilgili bir sorun var?

Teşekkürler !!!



Yardım için teşekkürler !!!

 
Boris.45 :

Merhaba !!!

İlk önce MT5 platformunu yeniden başlattım. Şablonunuzu derledim. Derleme sonucu aşağıda gösterilmiştir. Boyutu nedeniyle ekran görüntüleri atılmak zorunda kaldı.

Navigatörde bir danışman belirdi:

Danışmanı grafiğe attım ve 3 yerde ticarete izin verdim:

Grafikte yüzü olan bir surat değil, bir danışman simgesi var

İşte başarıyla yüklenen 2016.05.11 12:44:47.139 Experts Expert Test (GBPUSD,H1) günlüğünden bir alıntı

Danışmanın yüklenmesiyle ilgili mesajın içeriği aşağıdadır:

CO 0 10:35:45.020 Terminal Alpari Limited MT5 x64 1325 yapımı başladı (Alpari Limited)
HD 0 10:35:45.020 Terminal Windows 8.1 (x64 tabanlı PC), IE 11.00, UAC, Intel Core i5-2320 @ 3.00GHz, RAM: 2209 / 4078 Mb, HDD: 45023 / 149999 Mb, GMT+03:00
ND 0 10:35:45.020 Terminal C:\Users\Boris\AppData\Roaming\MetaQuotes\Terminal\73D45AFCBD5653CAF29C407A081F030C
LI 0 10:35:47.200 Ağ '50016841': Alpari-Ltd-MT5'ten mt5.nl.3'e kadar yetkilendirilmiş (ping: 57.34 ms)
NG 0 10:35:47.200 '50016841' Ağı: 2016.05.10 23:47:58'de 79.172.69.175'ten önceki başarılı yetkilendirme
FK 0 10:35:47.617 Ağ '50016841': Alpari Limited ile senkronize edilmiş terminal
RM 0 10:35:47.617 Ağ '50016841': ticaret etkinleştirildi - netleştirme modu
OH 0 10:35:48.253 Ağ '50016841': erişim noktaları için ağ tarama
CL 0 10:35:51.446 Ağ '50016841': tarama ağı tamamlandı
ND 1 12:00:49.011 Ağ '50016841': Alpari-Ltd-MT5 bağlantısı koptu
MR 0 12:01:08.842 Ağ '50016841': Alpari-Ltd-MT5'ten mt5.nl.3'e kadar yetkilendirilmiş (ping: 56.41 ms)
HR 0 12:01:08.842 '50016841' Ağı: 2016.05.11 10:35:52'de 79.172.69.175'ten önceki başarılı yetkilendirme gerçekleştirildi
PQ 0 12:01:08.907 Ağ '50016841': Alpari Limited ile senkronize edilmiş terminal
PH 0 12:01:08.907 Ağ '50016841': ticaret etkinleştirildi - netleştirme modu
KL 0 12:41:45.169 Uzman uzman Testi (GBPUSD,H1) başarıyla yüklendi

Bak lütfen. Belki nedenini bulursun. Bir çıkmazdayım, belki yapıyla ilgili bir sorun var?

Teşekkürler !!!



Yardım için teşekkürler !!!

Bu hatalı olanın üzerine bir terminal kurun. Belki iyileşir.
 
Karputov Vladimir :

MQL5'te uzun süre yazmanın zamanı geldi. Bir dll kullanmak pervasızlığın zirvesidir.

Anladığım kadarıyla, bilgileri üçüncü taraf bir programla okumak istiyorsunuz. Ardından , tüm istemci terminalleri \Terminal\Common\Files'ın ortak klasöründeki bir dosyaya yazın. Zaten bu dizinden dosyayı üçüncü taraf bir programla okuyabilirsiniz.

Doğrudan "pervasızlığın zirvesi" olsaydı, yasak olurdu.

WinAPI, MQL'nin olanaklarını büyük ölçüde genişletir. Ve dll olmadan aptalca şeyler yapabilirsiniz.

Ve işte panoya bir dize geçirme örneği:

 #define CF_UNICODETEXT 13
#define GHND 0x0042

#import "User32.dll"
   int OpenClipboard( uint );
   int EmptyClipboard();
   int CloseClipboard();
   uint SetClipboardData( uint uFormat, uint hMem );
#import "Kernel32.dll"
   uint GlobalAlloc( uint uFlags, uint dwBytes );
   uint GlobalLock( uint hMem );
   int GlobalUnlock( uint hMem );
#import "msvcrt.dll"
   uint memcpy( uint dest, string src, uint count );
#import

string str = "АБВГД" ;

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
{
   uint hwnd = ( uint ) ChartGetInteger ( 0 , CHART_WINDOW_HANDLE );
   
   int strSize = StringLen ( str ) * 2 + 2 ;   // Получаем размер строки в байтах
   
   if ( OpenClipboard( hwnd ) )     // Открываем буфер
   {
      EmptyClipboard();           // Очищаем буфер
      
       uint hMem = GlobalAlloc( GHND, strSize ); // Выделяем память
       uint pMem = GlobalLock( hMem );     // Получаем адрес выделенной памяти
      memcpy( pMem, str, strSize );     // Копируем строку в память
      GlobalUnlock( hMem );
   
      SetClipboardData( CF_UNICODETEXT, hMem );   // Передаём память со строкой в буфер
      
      CloseClipboard();   // Закрываем буфер
   }
}
 
Artyom Trishkin :


Artem, söyle bana, tüm bunları On Start (Başlangıçta) işlevinin altından On Tick işlevine yapıştırırsam, komut dosyası aynı şekilde, yalnızca her onayda yürütülür, değil mi?

Yoksa bir şeylerin değiştirilmesi mi gerekiyor?

Ve çünkü mevcut mum hariç önceki mumlar her tikte değişmez, bu yüzden kontrolün 1 kez yapılması için bir koşul yazmanız gerektiğini anlıyorum, örneğin bir sonraki mevcut mum kapanmadan 1 - 2 saniye önce? Yoksa hiçbir anlam ifade etmiyor ve her onay işaretini bırakabilir misiniz?

 
Andrey Koldorkin :

Artem, söyle bana, tüm bunları On Start (Başlangıçta) işlevinin altından On Tick işlevine yapıştırırsam, komut dosyası aynı şekilde, yalnızca her onayda yürütülür, değil mi?

Yoksa bir şeylerin değiştirilmesi mi gerekiyor?

Ve çünkü mevcut mum hariç önceki mumlar her tikte değişmez, bu yüzden kontrolün 1 kez yapılması için bir koşul yazmanız gerektiğini anlıyorum, örneğin bir sonraki mevcut mum kapanmadan 1 - 2 saniye önce? Yoksa hiçbir anlam ifade etmiyor ve her onay işaretini bırakabilir misiniz?

Tüm bunları bir fonksiyona koyar ve ihtiyacım olduğunda çağırırdım - en azından her tikte (gerekçeli ve gerekliyse), en azından yeni bir mumun açılışında - saatte bir, örneğin çalışırsak H1'de.
Neden: