Çaydanlıktan gelen sorular - sayfa 7

 
kPVT :

Olaylarla ilgilenmeye çalıştığım bir uzman var.

Eylemlere karşılık gelmeyen olaylar alıyorum.

Grafikte tıklandığında ve düğmeye basıldığında tam olarak eşleşir

Örneğin, grafik kaydırıldığında oluşturulan tartışmalı olay kimliği=9 (CHARTEVENT_CUSTOM) ve bir akışta yaklaşık 10 özdeş olay vardır .

CHARTEVENT_OBJECT_ENDEDIT etkinliğini kontrol etmedi.

Gerisi net değil. Açıklama, olay numarasıyla eşleşmiyor veya olay, örneğin bir nesnenin oluşturulması, manuel olarak bir nesne oluşturulurken yanlış oluşturuldu.

Genel olarak, yardım istiyorum.

Böyle daha iyi:

 //+------------------------------------------------------------------+
//| Expert chart event function                                      |
//+------------------------------------------------------------------+
void OnChartEvent ( const int id,         // идентификатор события  
                   const long & lparam,   // параметр события типа long
                   const double & dparam, // параметр события типа double
                   const string & sparam) // параметр события типа string
  {
   string str_id= "" ;
   switch (id)
     {
       case CHARTEVENT_KEYDOWN :          str_id= "KEYDOWN" ;         break ;
       case CHARTEVENT_OBJECT_CREATE:  str_id= "OBJECT_CREATE" ;   break ;
       case CHARTEVENT_OBJECT_CHANGE:  str_id= "OBJECT_CHANGE" ;   break ;
       case CHARTEVENT_OBJECT_DELETE:  str_id= "OBJECT_DELETE" ;   break ;
       case CHARTEVENT_CLICK :            str_id= "CLICK" ;           break ;
       case CHARTEVENT_OBJECT_CLICK :      str_id= "OBJECT_CLICK" ;   break ;
       case CHARTEVENT_OBJECT_DRAG :       str_id= "OBJECT_DRAG" ;     break ;
       case CHARTEVENT_OBJECT_ENDEDIT :    str_id= "OBJECT_ENDEDIT" ; break ;
       case CHARTEVENT_CHART_CHANGE :      str_id= "CHART_CHANGE" ;   break ;
       default :
         if (id> CHARTEVENT_CUSTOM )       str_id= "CUSTOM+" + IntegerToString (id- CHARTEVENT_CUSTOM );
         else                          str_id= "UNKNOWN" ;
     }
//--- для отладки
   printf ( "ChartEvent :id=%s, l=%d d=%f s=%s" ,str_id,lparam,dparam,sparam);
//---
   ExtExpertPrg.ChartEvent(id,lparam,dparam,sparam);
  }
 

Yanlış bir şey yaptığımdan eminim, ancak neden bir yanlış anlaşılma olduğunu daha ayrıntılı olarak açıklamaya çalışacağım.

AlexSTAL :

Başlangıçta önceden atanmış sayısal sabitlere CHARTEVENT_XXXXXXXX sayısal karşılıklarınızı atarsınız...

CHARTEVENT_XXXXXXX sabitlerinin hangi sayısal değere sahip olduğunu nerede görebilirim?

Bulamadım, bu yüzden deneyerek CHARTEVENT_KEYDOWN = 0 ve CHARTEVENT_CLICK = 4'ün bu sabitlerin yardımda açıklandığı sıraya karşılık geldiğini öğrendim.

Geri kalan olaylara sırasıyla sayılar atadım ve event[10] dizisi bu şekilde ortaya çıktı.

Roş :

Maalesef sorunuz net değil. Tam olarak ne doğru çalışmıyor?

Etkinlik numaralandırmama ve önceki gönderimdeki EA'yı kullanmaya dayanarak:

Örneğin bir trend çizgisi çiziyorum -> event CHARTEVENT_OBJECT_CHANGE ,

bu satırı taşı -> olay da CHARTEVENT_OBJECT_CHANGE ,

Özellikleri menüden değiştiriyorum -> 2 olay CHARTEVENT_CHART_CHANGE ve CHARTEVENT_CUSTOM,

Del -> event only CHARTEVENT_KEYDOWN tuşuna basarak siliyorum (olayların numaralandırılması yanlışsa, yine de 2 olay olmalı, silme ve butona basma).

Bütün bunlar benim numaralandırmama dayanıyor.

Daha ileri...

UncleVic EA kullanıyorum:

Trend çizgisi çiz -> ChartEvent :id=OBJECT_DRAG, l=0 d=0.000000 s=H1 Trendline 40716

bu satırı taşı -> ChartEvent :id=OBJECT_DRAG, l=0 d=0.000000 s=H1 Trendline 40716

menüden özellikleri değiştirin -> ChartEvent :id=OBJECT_CHANGE, l=0 d=0.000000 s=H1 Trendline 40716 ve ChartEvent :id=CHART_CHANGE, l=0 d=0.000000 s=

Del -> ChartEvent :id=KEYDOWN, l=46 d=0.000000 s= tuşlarına basarak siliyorum

Durum netleşmedi.

Her ihtimale karşı:

MT5 64x - 458 oluşturun.

Sistem - W7 64x Ana Sayfa genişletildi.

Duyarlılığınız için teşekkürler))




Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5
 
kPVT :

Yanlış bir şey yaptığımdan eminim, ancak neden bir yanlış anlaşılma olduğunu daha ayrıntılı olarak açıklamaya çalışacağım.

CHARTEVENT_XXXXXXX sabitlerinin hangi sayısal değere sahip olduğunu nerede görebilirim?

Bulamadım, bu yüzden deneyerek CHARTEVENT_KEYDOWN = 0 ve CHARTEVENT_CLICK = 4'ün bu sabitlerin yardımda açıklandığı sıraya karşılık geldiğini öğrendim.

Geri kalan olaylara sırasıyla sayılar atadım ve event[10] dizisi bu şekilde ortaya çıktı.

Bu hiçbir koşulda yapılmamalıdır!

Sayısal değerler geliştirici tarafından atanır ve herhangi bir zamanda değiştirilebilir.

Yalnızca karakter sabitleri kullanılabilir

-------------

amcaVic size doğru kullanıma bir örnek verdi (peki ya da yardımdan aldığım parça)

-------------

Oyleyse ne yapiyorsun? Neden sayısal bir temsile ihtiyacınız var?

 
AlexSTAL :

Bu hiçbir koşulda yapılmamalıdır!

Sayısal değerler geliştirici tarafından atanır ve herhangi bir zamanda değiştirilebilir.

Yalnızca karakter sabitleri kullanılabilir

TAMAM. Bunun yapılamayacağına katılıyorum.

Mastürbasyonumu unut).

daha ileri gidelim..

AlexSTAL :

amcaVic size doğru kullanıma bir örnek verdi (peki ya da yardımdan aldığım parça)

Yukarıda yazdığım gibi amca örneği kullanılarak eylemlere karşılık gelmeyen olaylar da elde edilmektedir.

kPVT :

Trend çizgisi çiz -> ChartEvent :id=OBJECT_DRAG, l=0 d=0.000000 s=H1 Trendline 40716 CHARTEVENT_OBJECT_CREATE yerine.

.....

Del -> ChartEvent :id=KEYDOWN tuşlarına basarak silin, l=46 d=0.000000 s= CHARTEVENT_OBJECT_DELETE ve ardından CHARTEVENT_KEYDOWN yerine

AlexSTAL :

Oyleyse ne yapiyorsun? Neden sayısal bir temsile ihtiyacınız var?

Açıklamak için çok uzun, ama önemli değil. Numaralandırmamı unutalım.

Asıl mesele şu ki, olayları anlamaya çalışıyorum, ama amca örneğini kullanarak bile, oluşturulan olayların yapılan eylemlerle uyumsuzluğunu anlamıyorum.

 
kPVT :

TAMAM. Bunun yapılamayacağına katılıyorum.

Mastürbasyonumu unut).

daha ileri gidelim..

Yukarıda yazdığım gibi amca örneği kullanılarak eylemlere karşılık gelmeyen olaylar da elde edilmektedir.

kPVT :


Başlatmaya ekle:

   ChartSetInteger ( 0 , CHART_EVENT_OBJECT_CREATE, true );
   ChartSetInteger ( 0 , CHART_EVENT_OBJECT_DELETE, true );

Her şeye en iyi şekilde sahip olacaksınız:

Создание:
DS       0        _err (EURUSD,M30)       17 : 13 : 18         ChartEvent :id=OBJECT_CREATE, l= 0 d= 0.000000 s=M30 Horizontal Line 58241
DG       0        _err (EURUSD,M30)       17 : 13 : 18         ChartEvent :id=OBJECT_DRAG, l= 0 d= 0.000000 s=M30 Horizontal Line 58241
Удаление кл. Del:
EH       0        _err (EURUSD,M30)       17 : 13 : 21         ChartEvent :id=OBJECT_DELETE, l= 0 d= 0.000000 s=M30 Horizontal Line 58241
QD       0        _err (EURUSD,M30)       17 : 13 : 21         ChartEvent :id=KEYDOWN, l= 46 d= 0.000000 s=
 

Alex anladı çok teşekkür ederim.

AlexSTAL :

Başlatmaya ekle:

....

Uzmana bir blok eklendi

 void OnInit ()
{
 ChartSetInteger ( 0 , CHART_EVENT_OBJECT_CREATE, true );
 ChartSetInteger ( 0 , CHART_EVENT_OBJECT_DELETE, true );
}

her şey yerine oturdu.

Yardıma bakmaya başladım, geri kalan her şeyi doğru yapmak için bu iki olayı "başlatmanın" gerekli olduğu hiçbir yerde yazmıyor.

Yorumladım ve işe yarıyor.

Bir Expert/Indicator'ın OnInit bloğu yoksa, boş olsa bile, olaylarla ilgili bir karışıklık olduğu ortaya çıkıyor.

Muhtemelen amaçlanan buydu, ancak mql5'te yazanların bunu bilmesi gerekiyor, asla bilemezsiniz.

 
Sihirbazda bir uzman oluşturdum, test cihazı Core 1 tester OnInit kritik hatası nedeniyle durdu hatası verirken, bununla karşılaşan var mı? nasıl çözülür? Sonuçta, bir büyücü, tamam, orada bir şeyleri mahvederdim ...
 
Europa :
Sihirbazda bir uzman oluşturdum, test cihazı Core 1 tester OnInit kritik hatası nedeniyle durdu hatası verirken, bununla karşılaşan var mı? nasıl çözülür? Sonuçta, bir büyücü, tamam, orada bir şeyleri mahvederdim ...
Alınan kaynağı ekleyin. ve test parametreleri.
 
uncleVic :
Alınan kaynağı ekleyin. ve test parametreleri.
Dosyalar:
TheFirst.mq5  7 kb
 
Europa :

Oynamadı.

Daha fazla test parametresi istedim. İhtiyaç:

Ve MT5'in sürümü ve bitliği.