Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2526

 
Alexey Viktorov #:

Только фильтровать, типа "это моё - это чужое"

Спасибо за ответ! Можете привести пример каким образом это можно сделать?

 
Vyacheslav Suchkov #:
Подскажите как можно решить эту проблему?
Покажите свой код.
 
Tretyakov Rostyslav #:
Покажите свой код.
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   ExtDialog.ChartEvent(id,lparam,dparam,sparam);
   static ulong clickTimeMemory;
   if (id == CHARTEVENT_OBJECT_CLICK) {
      ulong clickTime = GetTickCount();
      if(clickTime < clickTimeMemory + 300){
         clickTimeMemory = 0;
         //
         if (ObjectType(sparam) != OBJ_BUTTON) {
            if (ObjectGet(sparam, OBJPROP_SELECTED) && StringFind(sparam, code) == -1 && !ExtDialog.flagMin_max) {
               
               loadButtons(sparam);
               ExtDialog.CreateColorButtons();
               ExtDialog.nameGraphObject(sparam);
               ExtDialog.SaveFile("object", sparam);
               ExtDialog.GetOptionsObject();
               ExtDialog.getStyle();
               if (trueLevelFibo(sparam)) {                         
                  ExtDialog.m_typeLiniay.Hide(); ExtDialog.m_widthLiniay.Hide(); ExtDialog.m_mainOrLevel.Hide();
               }
               if (ObjectType(sparam) == OBJ_FIBO) {
                  ExtDialog.CreateFiboMainLevels();
                  if (StringGetCharacter(ObjectDescription(sparam), 0) == 42) ObjectSetInteger(0, "levelFibo_" + code, OBJPROP_STATE, true);
               }
            } else {
               reloadButtons();
            }
         }   
      } else {
         clickTimeMemory = clickTime;
      }
      if (lparam && dparam) {
         if (sparam == "autoFibo_" + code) {                         
            ExtDialog.AutoFibo();
            setAutoFoboLevels();
         }
         
         if (sparam == "clear_" + code) {                             
            ExtDialog.visibleObjectGraph();
            ExtDialog.DeleteFile("object");
            reloadButtons();
         }
         
         if (sparam == "delete_" + code) {                            
            
         }
         
         if (clickButtonTF(sparam)) {                                 
            ExtDialog.setTF();
         }
         
         if (clickButtonColor(sparam)) {                              
            
         }
         
         if (clickButtonFibo(sparam)) {                               
            
         }
         
         if (sparam == "fon_" + code) {
            
         }
         
         if (sparam == "ray_" + code) {
            
         }
         
         if (sparam == "textTF_" + code || sparam == "scaleText_" + code) {
            ObjectSetInteger(0, sparam, OBJPROP_STATE, false);
         }
         
         if (sparam == "createCorT_" + code) {
               
            }
         
         if (sparam == "smenaTF+_" + code) {
           
         }
         
         if (sparam == "smenaTF-_" + code) {
            
         }
         
         if (sparam == "scale+_" + code) {
            nameObj = sparam;
            EventSetMillisecondTimer(20);
            ExtDialog.SmenaScale(sparam);
         }
         
         if (sparam == "scale-_" + code) {
            nameObj = sparam;
            EventSetMillisecondTimer(20);
            ExtDialog.SmenaScale(sparam);
         }
         
         if (sparam == "saveTemplate_" + code) {
            
         }
         
         if (sparam == "levelFibo_" + code) {
            
         }
         
         if (sparam == "levelFibo+_" + code) {
            
         }
         
         if (sparam == "levelFibo-_" + code) {
            
         }
         
         if (sparam == "symbol+_" + code) {
            if (symbol_2 != -1) {
               nameObj = sparam;
               EventSetMillisecondTimer(20);
               ChartSetInteger(symbol_2, CHART_BRING_TO_TOP, 0, true);
               ChartRedraw(symbol_2);
            } else {
               ObjectSetInteger(0, sparam, OBJPROP_STATE, false);
            }
         }
         
         if (sparam == "symbol-_" + code) {
            if (symbol_1 != -1) {
               nameObj = sparam;
               EventSetMillisecondTimer(20);
               ChartSetInteger(symbol_1, CHART_BRING_TO_TOP, 0, true);
               ChartRedraw(symbol_1);
            } else {
               ObjectSetInteger(0, sparam, OBJPROP_STATE, false);
            }
         }
         
         if (sparam == "symbol_" + code) {
            ObjectSetInteger(0, sparam, OBJPROP_STATE, false);
         }
         
         if (sparam == "screen_" + code) {
            
         }
         
         if (sparam == "spread_" + code) {
            ObjectSetInteger(0, sparam, OBJPROP_STATE, false);
         }
      }
         
   } 
   
   if (id == CHARTEVENT_OBJECT_CREATE && !ExtDialog.flagMin_max) {
      if (!ExtDialog.flagMin_max) {
         ExtDialog.OnClickButtonMinMax();
         ExtDialog.OnClickButtonMinMax();
      }
      if (createObject(sparam) && flagCreate){
         reloadButtons();
         if (ObjectType(sparam) == OBJ_RECTANGLE && !trueLevelFibo(sparam)) {
            if (ExtDialog.FindFile("color")) {
               color clr = StringToColor(ExtDialog.ReadFile("color"));
               ObjectSetInteger(0, sparam, OBJPROP_COLOR, clr);
            }
            if (ExtDialog.FindFile("fon")) {
               string pos = ExtDialog.ReadFile("fon");
               if (pos == "1") ObjectSet(sparam, OBJPROP_BACK, true);  else ObjectSet(sparam, OBJPROP_BACK, false); 
            }
         }
         ExtDialog.SaveFile("object", sparam);
         ExtDialog.nameGraphObject(sparam);
         ObjectSet(sparam, OBJPROP_SELECTED, true);
         ExtDialog.GetOptionsObject();
         ExtDialog.getStyle();
      }
   }
   
   if (id == CHARTEVENT_OBJECT_DELETE) {
      // функции
   }     
   
   if (id == CHARTEVENT_OBJECT_CHANGE) {
      // функции
   }
   
   if (id == CHARTEVENT_OBJECT_DRAG) {
      // функции
   }
}
 

Код достаточно большой поэтому часть функций убрал.

 
Vyacheslav Suchkov #:

Код достаточно большой поэтому часть функций убрал.

Увы помочь не смогу.
 
Vyacheslav Suchkov #:

Код достаточно большой поэтому часть функций убрал.

Для фильтрации свой/чужой используйте обращение по имени объекта , а не по типу
 
Vyacheslav Suchkov #:

Спасибо за ответ! Можете привести пример каким образом это можно сделать?

Я при запуске индикатора, делал разный префикс к имени панели. За счёт этого они не конфликтовали между собой.  здесь 

У Артёма очень подробно описано, что к чему. Почитайте.

 
Большое спасибо всем за ответы!!!
 
Aleksandr Slavskii #:
У Артёма очень подробно описано, что к чему. Почитайте.

В указанной статье, к сожалению, тоже две и более панелей не работают. В последующих обновлениях много чего исправлено и, вероятно, и совместная работа нескольких

 
Доброго времени суток, уважаемые форумчане! Я совсем новичок, и столкнулся с проблемой в тестировании и оптимизации советника
Во время прохождения тестирования - всегда происходит большая разница в результатах теста между обычным режимом (не визуальным) и визуальным, несмотря на абсолютно одинаковые вводные настройки. При этом в визуальном тесте я наглядно вижу как происходят сделки, и что все работает правильно, а обычный тест всегда дает более худшие результаты.

Также после проведения оптимизации, я запускаю одиночное тестирование полученных конфигураций настроек советника - и они никогда не сходяться. Настолько, что конфигурация которая была на 10 месте в оптимизаторе, в рамках одиночного теста показывает результаты лучше, нежели конфигурация находящаяся на первом месте оптимизатора. 

Подскажите пожалуйста, что я делаю не так?