Ajuda para os desenvolvedores. - página 3

 
Sergey Chalyshev:

Ajudar a resolver o problema das cotações atrasadas. Não entendo quem está atrasando e por que, aqui está um bom exemplo.


Os indicadores podem atrasar a chegada das citações (até que elas sejam contadas, sem que as citações cheguem).

 
Vladimir Pastushak:


Se for um botão, as propriedades serão o botão, e se for um quadrado, as propriedades serão o quadrado.

Aqui está uma parte do motor gráfico, que pode ser um exemplo de uma abordagem para resolver seu problema:

 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 a entrada

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

A janela necessária, o objeto necessário e a propriedade necessária são inseridos na matriz. Então, o novo valor, imediatamente, é definido pela função

ObjectSetInteger(0,G_CORE[Номер_окна_под_событием][Номер_объекта_под_событием][_NAME],OBJPROP_BGCOLOR,Свойство);
Este é o "motor", como eu o entendo.
 

Tenho a mais simples das perguntas.

Como fazer um graal, o que é necessário: pedaços de código e outras coisas, que estratégia adotar?

 
Renat Akhtyamov:

Eu tenho a pergunta mais simples.

Como você faz um graal, o que você precisa: pedaços de código e outras coisas?

Minha opinião - não há necessidade de fazer um graal. Você deve esquecer esta palavra enquanto trabalha como comerciante no mercado. ))
 
Реter Konow:
Minha opinião - não há necessidade de fazer um graal. Você deve esquecer essa palavra ao trabalhar como comerciante no mercado. ))
E como você trabalha se todos à sua volta estão perdendo, não há ninguém para aprender uma estratégia lucrativa ou desenvolver um Expert Advisor?
 
Renat Akhtyamov:
Como você pode trabalhar se todos os outros estão vazando?
Então você tem que trabalhar de forma diferente de todos os outros).
 
Реter Konow:
Portanto, você tem que trabalhar de forma diferente de todos os outros).
Quem quer que você pergunte aqui, todos trabalham. Não trabalhar como todo mundo não está trabalhando?
 
Renat Akhtyamov:
Quem quer que você pergunte aqui, todos trabalham. Não como todo mundo - não funcionam?
Pessoalmente, eu gosto de estratégias de estoque de médio e longo prazo. Eu não gosto de forex. Uma estratégia deve ser construída com base no conhecimento do mercado, de seus participantes e na interpretação correta dos dados. Sem isso, qualquer estratégia é um "jogo de adivinhação".
 
Реter Konow:
Pessoalmente, eu gosto de estratégias de estoque de médio e longo prazo. Forex não é do meu agrado. Uma estratégia deve ser construída com base no conhecimento do mercado, de seus participantes e da interpretação correta dos dados. Sem isso, qualquer estratégia é um "jogo de adivinhação".
Sim, você está certo. Obrigado!
 
Реter Konow:
Portanto, você tem que trabalhar de uma maneira diferente)).
É assim que eu trabalho, oCButton permite criar botões diferentes com e sem nomes e alterar as propriedades de apenas os botões.
//|==================================================================|
//|                          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;
     }
  };
//|==================================================================|
//|                                                                  |
//|==================================================================|