Help for developers. - page 3

 
Sergey Chalyshev:

Help solve the problem of delayed quotes. I don't understand who is delaying and why, here is a good example.


Indicators can delay the arrival of quotes (until they are counted, no quotes arrive).

 
Vladimir Pastushak:


If it is a button, the properties will be the button, and if it is a square, the properties will be the square.

Here is a part of the graphical engine, which may be an example of an approach to solving your problem:

 if(!Объект_в_нажатом_состоянии && Идентификатор_события == _STANDART_EVENT_OBJECT_POINTED)
   {
    if(G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_OBJECT_MAIN_CATEGORY] == _OBJECT_MAIN_CATEGORY_STANDART)
     {
      if(G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_OBJECT_CATEGORY] == _OBJECT_CATEGORY_WINDOW_APPEARENCE_BUTTON)
        {
         ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_BGCOLOR,255); 
         ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_COLOR,clrWhite); 
        }
   if(G_CORE[Номер_окна_под_событием][_W_Properties][_WINDOW_CURRENT_STATUS] == _WINDOW_CURRENT_STATUS_AWAKE)
     {    
      if(G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_OBJECT_CATEGORY] == _OBJECT_CATEGORY_SCROLL_BAR_BUTTON)
        {
         ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_BGCOLOR,clrSilver); 
         ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_COLOR,clrSilver);  
        }
      if(
              G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_OBJECT_CATEGORY] == _OBJECT_CATEGORY_MENU_ITEM
         //&& !(G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_OBJECT_SUBCATEGORY] == _OBJECT_SUBCATEGORY_INTERFACE_MAIN_MENU_ITEM && Открыто_окно_меню)
        )
        {
         ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_BGCOLOR,clrLightSkyBlue);
         ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_BORDER_COLOR,clrBlue); 
         ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_COLOR,clrWhite); 
         //----------------
         if(G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_OBJECT_SUBCATEGORY] == _OBJECT_SUBCATEGORY_INTERFACE_MAIN_MENU_ITEM && Открыто_окно_меню) 
           {
            
            ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_BORDER_COLOR,0);
           }
         //----------------
        }
      if(G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_OBJECT_CATEGORY] == _OBJECT_CATEGORY_TOOL_BOX_ITEM)
        {
         ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_BGCOLOR,clrSilver); 
         ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_COLOR,clrSilver);  
        }
      if(G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_OBJECT_CATEGORY] == _OBJECT_CATEGORY_TEXT_EDIT_BOX)
        {
         if(G_CORE[Номер_окна_под_событием][_W_Properties][_WINDOW_CATEGORY] == _WINDOW_CATEGORY_MENU)
           {
            ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_BGCOLOR,C'226,226,226');
            ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_BORDER_COLOR,clrLightSkyBlue); 
            ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_COLOR,0);
            ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_FONTSIZE,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_FONTSIZE] + 1);  
           }
         else 
           {  
            ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_BGCOLOR,C'226,226,226');//clrLightSkyBlue
            ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_BORDER_COLOR,clrLightSkyBlue);//clrBlue 
            ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_COLOR,0);  //clrWhite
           // ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_FONTSIZE,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_FONTSIZE] + 1); 
           }   
        }
      if(G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_OBJECT_CATEGORY] == _OBJECT_CATEGORY_SET_VALUE_BUTTON)
        {
         ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_BGCOLOR,clrLightSkyBlue); 
         ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_COLOR,clrBlue); 
         ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_COLOR,clrWhite);
        }
        
      if(G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_OBJECT_CATEGORY] == _OBJECT_CATEGORY_WINDOW_HANDLE)
        {
         if(G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_OBJECT_SUBCATEGORY] == _OBJECT_SUBCATEGORY_VERTICAL_SCROLL_BAR_HANDLE)
           {
            ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_BGCOLOR,8421504); 
            ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_COLOR,8421504);
           }
         if(
               G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_OBJECT_SUBCATEGORY] == _OBJECT_SUBCATEGORY_WINDOW_RIGHT_HANDLE
            || G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_OBJECT_SUBCATEGORY] == _OBJECT_SUBCATEGORY_WINDOW_BOTTOM_HANDLE
            || G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_OBJECT_SUBCATEGORY] == _OBJECT_SUBCATEGORY_WINDOW_HW_HANDLE
           )
           {
            ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_BGCOLOR,clrDarkGray); 
           }             
         }


Note the entry

G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME]

The required window, the required object, and the required property are inserted into the array. Then, the new value, right away, is set by the function

ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_BGCOLOR,Свойство);
This is the "engine" as I understand it.
 

I have the simplest of questions.

How to make a grail, what is needed: pieces of code and other stuff, what strategy to adopt?

 
Renat Akhtyamov:

I have the simplest question.

How do you make a grail, what do you need: pieces of code and stuff?

My opinion - there is no need to make a gra il. You should forget about this word while working as a trader in the market. ))
 
Реter Konow:
My opinion - there is no need to make a grail. You should forget that word when working as a trader in the market. ))
And how do you work if everyone around you is losing, there is no one to learn a profitable strategy or develop an Expert Advisor?
 
Renat Akhtyamov:
How can you work if everyone else is leaking?
Then you have to work differently from everyone else.)
 
Реter Konow:
So you have to work differently from everyone else.)
Whoever you ask here, everybody works. Not working like everyone else is not working?
 
Renat Akhtyamov:
Whoever you ask here, everybody works. Not like everyone else - don't they work?
Personally, I like medium- and long-term stock strategies. I don't like forex. A strategy must be built on knowledge of the market, its participants, and correctly interpreting data. Without that, any strategy is a "guessing game".
 
Реter Konow:
Personally, I like medium- and long-term stock strategies. Forex is not to my liking. A strategy must be built on knowledge of the market, its participants, and the correct interpretation of the data. Without that, any strategy is a "guessing game".
Yes, you are right. Thank you!
 
Реter Konow:
So, you have to work in a different way.))
That's how I work,CButton allows you to create different buttons with and without names and change the properties of just the buttons.
//|==================================================================|
//|                          CButton.mqh                             |
//|               Copyright 2016, Trading-go Project.                |
//| Author: Voldemar, Version: 13.04.2016, Site http://trading-go.ru |
//|------------------------------------------------------------------|
//| Класс для работы с простой кнопкой                               |
//|==================================================================|
#property strict
#include "CObject.mqh" 
//|==================================================================|
//|  CREATE("Opens",7000,7000,60,20,CORNER_LEFT_UPPER,"","Sans Serif",7,clrWhite,C'71,71,71',C'200,200,200',false,false,false,true,0,"\n");
//|==================================================================|
class CButton   
  {
protected:
   CObject           obj;
public:

   bool   SetXDISTANCE(int aX)                               { return      obj.SetXDistance(aX);}                   //--- установим координаты кнопки
   bool   SetXDISTANCE(string aName,int aX)                  { return      obj.SetXDistance(aName,aX);}             //--- установим координаты кнопки
   int    GetXDISTANCE(void)                                 { return (int)obj.GetXDistance();}                //--- установим координаты кнопки
   int    GetXDISTANCE(string aName)                         { return (int)obj.GetXDistance(aName);}           //--- установим координаты кнопки

   void   SetSUB_WINDOW(int aWindow)                         { obj.SetSubWindow(aWindow);}                    //--- установим координаты кнопки  
   int    GetSUB_WINDOW(void)                                { return obj.GetSubWindow();}                    //--- установим координаты кнопки 
   //---
   bool   SetNEW_NAME(string aName,string aNewName) { return obj.SetNewName(aName,aNewName);}        //---
   void   SetNAME(string aName)                              { obj.SetName(aName);}                            //---
   string GetNAME(void)                                      { return obj.GetName();}                          //---
   //---   
   void   SetHIDE(string aName)                              { obj.SetHide(aName);}                            //---
   void   SetHIDE(void)                                      { obj.SetHide();}                                 //---
   //---
   bool   SetKILL(void)                                      { return obj.SetDellName();}                            //---
   bool   SetKILL(string aName)                              { return obj.SetDellName(aName);}                       //---
   //---
   bool   GetOBJECT_FIND(void)                               { return obj.GetObject_Find();}                          //---
   bool   GetOBJECT_FIND(string aName)                       { return obj.GetObject_Find(aName);}                     //---

   // ================
   bool SetXYToTimePrice(string aName,int aX,int aY,int &aSubWindow,datetime &aTime,double &aPrice)
     {
      return  obj.SetXYToTimePrice(aName,aX,aY,aSubWindow,aTime,aPrice);
     }
   bool SetXYToTimePrice(int aX,int aY,int &aSubWindow,datetime &aTime,double &aPrice)
     {
      return  obj.SetXYToTimePrice(aX,aY,aSubWindow,aTime,aPrice);
     }
   // ================
   bool   SetTimePriceToXY(string aName,datetime aTime,double aPrice,int aXSIZE=0,int aYSIZE=0)
     {
      return obj.SetTimePriceToXY(aName,aTime,aPrice,aXSIZE,aYSIZE);
     }
   bool   SetTimePriceToXY(datetime aTime,double aPrice,int aXSIZE=0,int aYSIZE=0)
     {
      return obj.SetTimePriceToXY(aTime,aPrice,aXSIZE,aYSIZE);
     }
     void   Debug(bool aDebug=false) {             obj.Debug(aDebug);}                 //--- Режим дебага
   // ================
   //CREATE("Opens",7000,7000,60,20,CORNER_LEFT_UPPER,"","Sans Serif",7,clrWhite,C'71,71,71',C'200,200,200',false,false,false,true,0,"\n");
   // ================
   bool              CREATE(
                            const string           aName       = "Button",          // имя кнопки
                            const int              aX          = 20,                // координата по оси X
                            const int              aY          = 20,                // координата по оси Y
                            const int              aWidth      = 50,                // ширина кнопки
                            const int              aHeight     = 18,                // высота кнопки
                            const ENUM_BASE_CORNER aCorner     = CORNER_LEFT_UPPER, // угол графика для привязки
                            const string           aText       = "Button",          // текст
                            const string           aFont       = "Arial",           // шрифт
                            const int              aFont_size  = 10,                // размер шрифта
                            const color            aClr        = clrWhite,          // цвет текста
                            const color            aBack_clr   = C'71,71,71',       // цвет фона
                            const color            aBorder_clr = C'200,200,200',    // цвет границы
                            const bool             aState      = false,             // нажата/отжата
                            const bool             aBack       = false,             // на заднем плане
                            const bool             aSelection  = false,             // выделить для перемещений
                            const bool             aHidden     = true,              // скрыт в списке объектов
                            const int              aZ_order    = 0,                 // приоритет на нажатие мышью
                            const string           aTooltip    = "\n"               // комментарий
                            )
     {
      if(obj.CreateObject(aName,OBJ_BUTTON)) //--- создадим кнопку
        {
         SetXDISTANCE(aX);             //--- установим координаты кнопки
         SetYDISTANCE(aY);             //--- установим координаты кнопки
         SetXSIZE(aWidth);             //--- установим размер кнопки
         SetYSIZE(aHeight);            //--- установим размер кнопки
         SetCORNER(aCorner);           //--- установим угол графика, относительно которого будут определяться координаты точки
         SetTEXT(aText);               //--- установим текст
         SetFONT(aFont);               //--- установим шрифт текста
         SetFONTSIZE(aFont_size);      //--- установим размер шрифта
         SetCOLOR(aClr);               //--- установим цвет текста
         SetBGCOLOR(aBack_clr);        //--- установим цвет фона
         SetBORDER_COLOR(aBorder_clr); //--- установим цвет границы
         SetBACK(aBack);               //--- отобразим на переднем (false) или заднем (true) плане
         SetSTATE(aState);             //--- переведем кнопку в заданное состояние
         SetSELECTABLE(aSelection);    //--- включим (true) или отключим (false) режим перемещения кнопки мышью
         SetSELECTED(aSelection);      //--- включим (true) или отключим (false) режим перемещения кнопки мышью
         SetHIDDEN(aHidden);           //--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
         SetZORDER(aZ_order);          //--- установим приоритет на получение события нажатия мыши на графике
         SetTOOLTIP(aTooltip);         //--- комментарий
        }
      else
         return false;
      return true;
     }
  };
//|==================================================================|
//|                                                                  |
//|==================================================================|
Reason: