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

 

Grafikte ortalanmış "Kâr Al" metniyle bir giriş alanı çizen aşağıdaki kod vardır:

 //+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   Edit();
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   EditDel();
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {

  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+ 
//| Создает объект "Поле ввода"                                      | 
//+------------------------------------------------------------------+ 
void EditCreate( ENUM_BASE_CORNER corner, string name, int x, int y, int width, int height, string text,
                 int font_size, ENUM_ALIGN_MODE align, bool read_only, color back_clr)
  {
   long cid= ChartID ();
   int subWind= 0 ;
   string font= "Consolas" ;
   color text_color= clrBlack ;
   color border_clr= clrDimGray ;
   bool back= false ;
   bool selectable= false ;
   bool selected= false ;
   bool hidden= true ;
   long zorder= 0 ;
   if ( ObjectFind (cid,name)==- 1 )
     {
       ObjectCreate (cid,name, OBJ_EDIT ,subWind, 0 , 0 );
       ObjectSetInteger (cid,name, OBJPROP_XDISTANCE ,x);
       ObjectSetInteger (cid,name, OBJPROP_YDISTANCE ,y);
       ObjectSetInteger (cid,name, OBJPROP_XSIZE ,width);
       ObjectSetInteger (cid,name, OBJPROP_YSIZE ,height);
       ObjectSetString (cid,name, OBJPROP_TEXT ,text);
       ObjectSetString (cid,name, OBJPROP_FONT ,font);
       ObjectSetInteger (cid,name, OBJPROP_FONTSIZE ,font_size);
       ObjectSetInteger (cid,name, OBJPROP_ALIGN ,align);
       ObjectSetInteger (cid,name, OBJPROP_READONLY ,read_only);
       ObjectSetInteger (cid,name, OBJPROP_CORNER ,corner);
       ObjectSetInteger (cid,name, OBJPROP_COLOR ,text_color);
       ObjectSetInteger (cid,name, OBJPROP_BGCOLOR ,back_clr);
       ObjectSetInteger (cid,name, OBJPROP_BORDER_COLOR ,border_clr);
       ObjectSetInteger (cid,name, OBJPROP_BACK ,back);
       ObjectSetInteger (cid,name, OBJPROP_SELECTABLE ,selectable);
       ObjectSetInteger (cid,name, OBJPROP_SELECTED ,selected);
       ObjectSetInteger (cid,name, OBJPROP_HIDDEN ,hidden);
       ObjectSetInteger (cid,name, OBJPROP_ZORDER ,zorder);
       ChartRedraw (cid);
     }
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Edit()
  {
   long cid= ChartID ();
   if ( ObjectFind (cid, "edit tp" )< 0 )
     {
      EditCreate( CORNER_LEFT_UPPER , "edit tp" , 50 , 50 , 150 , 20 , "Take Profit" , 12 , ALIGN_CENTER , true , clrBeige );
     }
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void EditDel()
  {
   long cid= ChartID ();
   ObjectDelete (cid, "edit tp" );
  }
//+------------------------------------------------------------------+

Gerçek zamanlı modda çalıştırıldığında düzgün çalışır:

Ve strateji test cihazında, nedense, hizalama solda gerçekleşir.


MT4'te kod, hem gerçek zamanlı olarak hem de test cihazında doğru şekilde çalışır. Böyle hileleri sadece MT5'te görüyorum...

Ne yanlış olabilir?

 
Oleg Remizov :

Grafikte ortalanmış "Kâr Al" metniyle bir giriş kutusu çizen aşağıdaki kod vardır:

Gerçek zamanlı modda çalıştırıldığında düzgün çalışır:

Ve strateji test cihazında, nedense, hizalama solda gerçekleşir.


MT4'te kod, hem gerçek zamanlı olarak hem de test cihazında doğru şekilde çalışır. Böyle hileleri sadece MT5'te görüyorum...

Ne yanlış olabilir?

MT5 test cihazında bu, forumda birçok kez tartışıldı.

 

Hepinize iyi günler. Beyler, klavye ve fare düğmelerine aynı anda basmayı nasıl yapacağımı söyleyin. Örneğin, bir düğmeye basıldığında bir nesne çizilir ve aynı düğme + sol fare düğmesine basıldığında başka bir nesne çizilir. Ve klavye ve farenin düğmesine bastığınızda 2 nesnenin çizildiği ortaya çıkıyor.

 if (lparam== 49 )
 {
 ObjectCreate ( 0 , "line" , OBJ_TREND , 0 ,time1,price1,time1+ 86400 ,price1);
 ChartRedraw ( 0 );
 }
if (lparam== 49 &&В MouseK== 1 )
 {
 ObjectCreate ( 0 , "Marg" , OBJ_LABEL , 0 , 0 , 0 );
 ObjectSetInteger ( 0 , "Marg" , OBJPROP_XDISTANCE , 280 ); 
 ObjectSetInteger ( 0 , "Marg" , OBJPROP_YDISTANCE , 20 ); 
 ChartRedraw ( 0 );
 }  
 

Aşağıdaki makalelerle çalışıyorum:

https://www.mql5.com/en/articles/4149

ve kodda anlamadığım birkaç şeyle karşılaştım, lütfen anlamını açıklayın

1. Neden :: operatörü kullanılır ( kapsam çözünürlüğü)

 void OnStart ()
  {
//---
   Test();
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Test                                                             |
//+------------------------------------------------------------------+
bool Test()
  {

   string pStream;
   string sources_filename= "Websorce.txt" ;

   int hFile,iStringSize;

// read file contents 
   hFile=:: FileOpen (sources_filename, FILE_TXT | FILE_READ | FILE_UNICODE );
   if (hFile== INVALID_HANDLE )
     {
      :: Print ( "error opening file " +sources_filename);
       return ( false );
     }

   while (!:: FileIsEnding (hFile))
     {


2. Bu "_errCode |= code" kod satırı ne işe yarar? (Bu bit düzeyinde "veya" operatörünün "_errCode =_errCode |code" ile aynı olduğunu biliyorum)


 class JSONParser {
     private :
         int _pos;
         ushort _in[];
         int _len;
         string _instr;
         int _errCode;
         string _errMsg;
      

         void setError( int code= 1 , string msg= "unknown error" ) {
           string _str = NULL ;
            _errCode |= code;
Создание пользовательской новостной ленты в MetaTrader 5
Создание пользовательской новостной ленты в MetaTrader 5
  • www.mql5.com
В терминале MetaTrader 5 есть множество полезных функций, которые могут пригодиться пользователю, независимо от его стиля торговли, включая и возможность доступа к ленте оперативных новостей. Это дает трейдеру торговый контекст, значимость которого сложно переоценить, ведь он может оказать влияние на рынки. Единственное ограничение — объем...
 
merhaba, mt4 veritabanında terster'de manuel ticaret simülatörü olarak kullanılabilecek bir danışman var. Kötü bir antrenör değil. Ve elbette sadece bir zaman diliminde koşabilirsiniz. Bir sorum var. Böyle bir danışman simülatörünü çoklu zaman çerçevesi yapmak mümkün mü? mt4'te mi yoksa mt5'te mi?
 
bahtiyar :
merhaba, mt4 veritabanında terster'de manuel ticaret simülatörü olarak kullanılabilecek bir danışman var. Kötü bir antrenör değil. Ve elbette sadece bir zaman diliminde koşabilirsiniz. Bir sorum var. Böyle bir danışman simülatörünü çoklu zaman çerçevesi yapmak mümkün mü? mt4'te mi yoksa mt5'te mi?

Yapabilir. Ve MT5 için de çoklu para birimidir, ancak bazı kısıtlamalar vardır. Ne yazık ki, test cihazı grafiklerle çalışmıyor. Daha doğrusu, grafik nesnelerinin manuel olarak düzenlenmesine izin vermez.

 
Alexey Viktorov :

Yapabilir. Ve MT5 için de çoklu para birimidir, ancak bazı kısıtlamalar vardır. Ne yazık ki, test cihazı grafiklerle çalışmıyor. Daha doğrusu, grafik nesnelerinin manuel olarak düzenlenmesine izin vermez.

Alex'in cevabı için teşekkürler! Ne yapılabilir cevabını vermişsiniz. soruma açıklık getirmek istiyorum. Test cihazı manuel ticaret simülatörü olarak kullanılacağından, görselleştirme sırasında birkaç zaman dilimini analiz edebilmem için bunu yapmak mümkün mü? mümkünse genel hatlarıyla bu nasıl yapılabilir7
 
bahtiyar :
Alex'in cevabı için teşekkürler! Ne yapılabilir cevabını vermişsiniz. soruma açıklık getirmek istiyorum. Test cihazı manuel ticaret simülatörü olarak kullanılacağından, görselleştirme sırasında birkaç zaman dilimini analiz edebilmem için bunu yapmak mümkün mü? mümkünse genel hatlarıyla bu nasıl yapılabilir7

Mümkün değil

 
bahtiyar :
Alex'in cevabı için teşekkürler! Ne yapılabilir cevabını vermişsiniz. soruma açıklık getirmek istiyorum. Test cihazı manuel ticaret simülatörü olarak kullanılacağından, görselleştirme sırasında birkaç zaman dilimini analiz edebilmem için bunu yapmak mümkün mü? mümkünse genel hatlarıyla bu nasıl yapılabilir7
Vitaly Muzichenko :

Mümkün değil

Sadece MT4'te değil. Ve o zaman bile, hikayeyi istediğiniz derinlikte izleyebilmeniz için grafikleri ayarlayabilirsiniz.

MT5'te test cihazı, programdan erişilen tüm sembolleri ve tüm zaman dilimlerini, kodda kullanılıyorsa göstergelerle birlikte yükler.

Ancak her durumda, özel bir gösterge olmadan, ticaret yapmak istememeniz için çizelgeler arasında "atlamanız" gerekecektir. Veya hızın, gerçek hızdan çok farklı olmayacak şekilde ayarlanması gerekecektir.

 

Meta düzenleyici yapılandırmasındaki Optimize bayrağı , program yürütme hızını artırmaya ne ölçüde yardımcı olur? Bir şey beni yavaş yavaş test ediyor ... Bu Optimize ne kadar etkiliyor?

Ne yazık ki, bir CDictionary nesnesine örnekler eklerken bir kilitlenme nedeniyle kullanamıyorum.