Hatalar, hatalar, sorular - sayfa 2741

 
Ilyas :

MT4'teki hata ayıklayıcı değişmeyecek.

MQL kod hata ayıklama ve profil oluşturma sistemini tamamen yeniden tasarlıyoruz, yeni sistem MT4 ile uyumlu değil

MT 4 BUILD 1262 Damla terminali


2020.05.13 18:05:09.335 Erişim ihlali 0x0335346E'ye yaz

2020.05.13 18:05:09.276 VR EURUSD,H4: 1 sızdırılmış dizi kaldı

2020.05.13 18:11:11.126 Erişim ihlali 0x033403B7'ye yaz

2020.05.13 18:37:13.585 Erişim ihlali 0x03093648'e yaz


Bu konuda bir şey söyleyebilir misiniz? Sorunu yeniden üreten mini bir kaynak yaptım

 
Vladimir Pastushak :

MT 4 BUILD 1262 Damla terminali


2020.05.13 18:05:09.335 Erişim ihlali 0x0335346E'ye yaz

2020.05.13 18:05:09.276 VR EURUSD,H4: 1 sızdırılmış dizi kaldı

2020.05.13 18:11:11.126 Erişim ihlali 0x033403B7'ye yaz

2020.05.13 18:37:13.585 Erişim ihlali 0x03093648'e yaz


Bu konuda bir şey söyleyebilir misiniz? Sorunu yeniden üreten mini bir kaynak yaptım

Kaynağı bana özel mesajla gönder kontrol edeyim.

 
Ilyas :

MT4'teki hata ayıklayıcı değişmeyecek.

MQL kod hata ayıklama ve profil oluşturma sistemini tamamen yeniden tasarlıyoruz, yeni sistem MT4 ile uyumlu değil

Güzel. MT4 için ciddi göstergelerin gelişimini unutabilirsiniz.

Teşekkürler, bileceğiz.

 
Andrey Khatimlianskii :

Arayüz akışındaki göstergeler hesaplanana kadar terminal hiçbir şey çizmez. Burada asılı kalıyor.

Dördü yönetilmeyecek, büyük ihtimalle.

İlk beşte, göstergeler benzer şekilde çalışır, ancak donma olmadan her şey yolunda.

 
MT5 (build 2419) hata ayıklayıcıyla çalıştı, birkaç dakika tarayıcıya gitti, ardından MT'ye geri döndü ve bir nedenden dolayı tamamen boş olduğu ortaya çıktı:
- pencere yok, panel yok, alet yok, hiçbir şey...

 
MT5, Ctrl + Fare Tekerleği aracılığıyla fiyat ölçeklendirmesini programlı olarak nasıl devre dışı bırakabilirim?
Bir panel yapıyorum, programlı olarak Ctrl + Mouse Wheel'i yakalıyorum ve panel öğelerini ölçeklendiriyorum.
Ancak, aynı olayda fiyat ölçeklendirmesi tetiklenir ve "Güncelleme Bekleniyor" yazısı yüklenir, bu da paneli belirsiz bir süre boyunca tamamen kaplar.

Kod örneği, yorumlanan şey projede de kullanılır, ancak yukarıdaki sorunu hiçbir şekilde etkilemez:
 void HideChart( long achart, color BackClr){     
   //ChartSetInteger(achart, CHART_SHOW, false);
         //ChartSetInteger(achart, CHART_SHOW_OHLC, false);
         //ChartSetInteger(achart, CHART_SHOW_BID_LINE, false);
         //ChartSetInteger(achart, CHART_SHOW_ASK_LINE, false);
         //ChartSetInteger(achart, CHART_SHOW_LAST_LINE, false);
         //ChartSetInteger(achart, CHART_SHOW_PERIOD_SEP, false);
         //ChartSetInteger(achart, CHART_SHOW_GRID, false);
         //ChartSetInteger(achart, CHART_SHOW_VOLUMES, CHART_VOLUME_HIDE);
         //ChartSetInteger(achart, CHART_SHOW_OBJECT_DESCR, false);
         //ChartSetInteger(achart, CHART_SHOW_TRADE_LEVELS, false);
         //ChartSetInteger(achart, CHART_SHOW_DATE_SCALE, false);
         //ChartSetInteger(achart, CHART_SHOW_PRICE_SCALE, false);
         //ChartSetInteger(achart, CHART_FOREGROUND, false);
         //ChartSetInteger(achart, CHART_SHIFT, false);
         //ChartSetInteger(achart, CHART_MODE, CHART_LINE);

         //ChartSetInteger(achart, CHART_SCALE, 0);
         ChartSetInteger (achart, CHART_SCALEFIX , 0 );
         ChartSetInteger (achart, CHART_SCALEFIX_11 , 0 );
         ChartSetInteger (achart, CHART_SCALE_PT_PER_BAR , 0 );
         ChartSetInteger (achart, CHART_EVENT_OBJECT_DELETE , 0 );
         ChartSetInteger (achart, CHART_EVENT_OBJECT_CREATE , 0 );

   	ChartSetInteger (achart, CHART_EVENT_MOUSE_WHEEL , 1 ); 
         ChartSetInteger (achart, CHART_EVENT_MOUSE_MOVE , 0 );
         ChartSetInteger (achart, CHART_MOUSE_SCROLL , 0 );
         ChartSetInteger (achart, CHART_KEYBOARD_CONTROL , 0 );
         ChartSetInteger (achart, CHART_QUICK_NAVIGATION , 0 );
        
         //ChartSetInteger(achart, CHART_COLOR_BACKGROUND, BackClr);
         //ChartSetInteger(achart, CHART_COLOR_FOREGROUND, BackClr);
         //ChartSetInteger(achart, CHART_COLOR_CHART_LINE, BackClr);
         //ChartSetInteger(achart, CHART_COLOR_ASK, BackClr);
         //ChartSetInteger(achart, CHART_COLOR_BID, BackClr);
         //ChartSetDouble(achart, CHART_FIXED_MAX, 1);
         //ChartSetDouble(achart, CHART_FIXED_MIN, 1);
         //ChartSetString(achart, CHART_COMMENT, "");
         //ChartSetInteger(achart, CHART_CROSSHAIR_TOOL, 0);
         //ChartSetInteger(achart, CHART_SHOW_ONE_CLICK, 0);
         //ChartSetInteger(achart, CHART_CONTEXT_MENU, 0);
         ChartRedraw (achart);
}

void OnInit () {
   HideChart( 0 , clrWhite );
} 
 

bir böcek gibi görünüyor? belgelerdeki etiket genişliği okunabilir olduğunu söylüyor, ancak

 Print (i, " - " , ObjectGetInteger ( 0 ,name, OBJPROP_XDISTANCE ), " - " , ObjectGetInteger ( 0 ,name, OBJPROP_XSIZE ));

sorunlar

Grafikteki metin şudur:

tam kod ekli

Dosyalar:
 
Igor Zakharov :

bir böcek gibi görünüyor? belgelerdeki etiket genişliği okunabilir olduğunu söylüyor, ancak

Genişlik, yalnızca nesne tamamen oluşturulduktan sonra kullanılabilir.
Son zamanlarda bu sorunu da çözdüm.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

Sergey Dzyublik , 2020.05.12 19:32

OBJ_EDIT kullanırken bir sorun oluştu - tüm metnin uygun nesne boyutlarına sığması için OBJPROP_XSIZE ve OBJPROP_YSIZE boyutunu ayarlama ihtiyacı.

Soru: OBJPROP_XSIZE ve OBJPROP_YSIZE boyutları nasıl belirlenir, böylece tüm metin oraya sığar?
İki seçenek düşünüldü:
1. Bir OBJ_LABLE nesnesi oluşturun, boyutları okuyun, bir OBJ_LABLE nesnesini silin.
Boyutların okunması ancak nesnenin fiili oluşturulmasından sonra mümkün olduğundan ve nesne ChartRedraw için kuyruğa alındığında mümkün olmadığından uygun değildir.

2. TextSetFont'u ve ardından TextGetSize'ı kullanma.
Uygun değil, sonuç 1 No'lu yöntemin sonuçlarından kökten farklı olduğundan, yazı tipi boyutuna bağlı olarak farklar 2,5 - 2,9 kat.
Belki de nedeni 4K monitör ve %175 DPI.

 #define PRINT(x) ; Print ( #x, ":" , string (x))
          
void SetLabel( long achart, string name, int wnd, string text, color clr, int x, int y, int corn= 0 , int fontsize= 8 , string font= "Tahoma" )
{
   ObjectCreate (achart, name, OBJ_LABEL , wnd, 0 , 0 ); 
   ObjectSetInteger (achart, name, OBJPROP_CORNER , corn); 
   ObjectSetString (achart, name, OBJPROP_TEXT , text); ObjectSetInteger (achart, name, OBJPROP_COLOR , clr); 
   ObjectSetInteger (achart, name, OBJPROP_FONTSIZE , fontsize); ObjectSetString (achart, name, OBJPROP_FONT , font);
   ObjectSetInteger (achart, name, OBJPROP_SELECTABLE , false ); 
   ObjectSetInteger (achart, name, OBJPROP_BORDER_TYPE , 0 );
   ObjectSetInteger (achart, name, OBJPROP_XDISTANCE , x); ObjectSetInteger (achart, name, OBJPROP_YDISTANCE , y);
}

void OnStart (){     
   string obj_name = "test_obj" ;   
   string text = "AAAA::BBBB" ;
   int font_size = 7 ;
   string font_name = "Tahoma" ;
   
   SetLabel( 0 , obj_name, 0 , text, clrWhite , 100 , 100 , 0 , font_size, font_name);
   ChartRedraw ( 0 );
   Sleep ( 1000 );
   
   uint dx_fixed_0 = int ( ObjectGetInteger ( 0 , obj_name, OBJPROP_XSIZE ));
   uint dy_fixed_0 = int ( ObjectGetInteger ( 0 , obj_name, OBJPROP_YSIZE ));
   ObjectDelete ( 0 , obj_name);
   
   PRINT(dx_fixed_0);
   PRINT(dy_fixed_0);
   
   
   uint dx_fixed_1;
   uint dy_fixed_1;
   TextSetFont (font_name, -10 * font_size);
   TextGetSize (text, dx_fixed_1, dy_fixed_1);
   
   PRINT( 1.0 * dx_fixed_0 / dx_fixed_1);  	// Result: 1.0
   PRINT( 1.0 * dy_fixed_0 / dy_fixed_1);  	// Result: 1.0
}  


Çözüm için teşekkürler Geess .
TextSetFont'a geçerken yazı tipi boyutunu -10 ile çarpmanız gerekiyor.

 
Sergey Dzyublik :

Genişlik, yalnızca nesne tamamen oluşturulduktan sonra kullanılabilir.
Son zamanlarda bu sorunu da çözdüm.

Teşekkür ederim! Çözüm eklendi


Dosyalar:
 
Her zaman bir MQL programından bir dosyaya (RAM sürücüsü) bir şey eklenmesi gerekiyorsa ve diğerlerinden (ve başka bir Terminalden) tüm bu eklenen verilerin ondan okunması gerekiyorsa, hangi bayraklar ve tuzaklar olabilir?