Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1415

 
Alexey Viktorov #:

Всё нормально работает. Ищите другую причину


все, разобрался, у меня старая версия MetaEditora установлена, от марта 20-го года, а данное свойство SYMBOL_SECTOR было позже добавлено

оно у меня даже красным не подсвечивалось в редакторе

 

Есть ли какой-то способ установить свойства линий объекта уровни Фибоначчи сразу для всего объекта, а не индивидуально по уровням?

Вот этот код не работает. Создается жёлтым по дефолту. Свойства RAY работают.

if(!ObjectCreate(ChartID(),name,OBJ_FIBO,0,iTime(Symbol(),0,HiBar),LastHi,iTime(Symbol(),0,LowBar),LastLow))
     {
      Print(__FUNCTION__+": object creation failed. Error=",GetLastError());
      return;
     }
   //--- set object properties
   if(!ObjectSetInteger(ChartID(),name,OBJPROP_COLOR,FiboClr))    
     {
      Print(__FUNCTION__+": setting fibo levels color property failed. Error=",GetLastError());
      return;
     }
   if(!ObjectSetInteger(ChartID(),name,OBJPROP_WIDTH,FiboWidth))
     {
      Print(__FUNCTION__+": setting object width property failed. Error=",GetLastError());
      return;
     }
   if(!ObjectSetInteger(ChartID(),name,OBJPROP_STYLE,FiboStyle))
     {
      Print(__FUNCTION__+": setting object style property failed. Error=",GetLastError());
      return;
     }
   if(!ObjectSetInteger(ChartID(),name,OBJPROP_RAY_RIGHT,true))
     {
      Print(__FUNCTION__+": setting ray property failed. Error=",GetLastError());
      return;
     }   
   if(!ObjectSetInteger(ChartID(),name,OBJPROP_RAY_LEFT,false))
     {
      Print(__FUNCTION__+": setting ray property failed. Error=",GetLastError());
      return;
     }
 

А здесь вообще косяк какой-то.. Хочу скрыть некоторые уровни, а другие сделать определенным стилем (как иначе-то).

Дак вот нулевой уровень в дебаге стиль меняется, а как скрываешь первый уровень, снова возвращается к желтому. Ну и не в дебаге так же. Надпись со значением только нужного цвета. Какая же мука с этим фибоначчи...

   int total_levels=(int)ObjectGetInteger(ChartID(),name,OBJPROP_LEVELS);
   for(int i=0;i<total_levels;i++)
     {
      if(i==0 || i==4 || i==5)
        {
         ObjectSetInteger(ChartID(),name,OBJPROP_LEVELCOLOR,i,FiboClr);
         ObjectSetInteger(ChartID(),name,OBJPROP_LEVELWIDTH,i,FiboWidth);
         ObjectSetInteger(ChartID(),name,OBJPROP_LEVELSTYLE,i,FiboStyle);
        }
      else
        {
         ObjectSetDouble(ChartID(),name,OBJPROP_LEVELVALUE,i,0);
         ObjectSetString(ChartID(),name,OBJPROP_LEVELTEXT,i,"");
        }
     }
 

всем доброго времени суток.

подскажите как можно решить проблему

есть класс который обрабатывает позиции и ордера и сверяет их с базой

нужно из этого класса передать СТРУКТУРЫ (string, double, int, string .....)

чем это можно сделать

и если можно ссылку на пример

 
Sergey Li #:

всем доброго времени суток.

подскажите как можно решить проблему

есть класс который обрабатывает позиции и ордера и сверяет их с базой

нужно из этого класса передать СТРУКТУРЫ (string, double, int, string .....)

чем это можно сделать

и если можно ссылку на пример

Примеры есть в стандартной библиотеке. 

Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / Result
Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / Result
  • www.mql5.com
Result(MqlTradeResult&) - CTrade - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
перед отправкой ордера нужна проверка когда был открыта последняя позиция по символу, что будет быстрее в истории посмотреть или в глобальной переменной терминала?
 
lynxntech #:
перед отправкой ордера нужна проверка когда был открыта последняя позиция по символу, что будет быстрее в истории посмотреть или в глобальной переменной терминала?

Быстрей чем в переменной быть не может. Только одна поправка: для сохранения при перезапуске терминала можно пользоваться и глобальной переменной терминала, и перелопатить историю в OnInit(). Но когда переходите в OnTick() то это значение должно быть в переменной глобального уровня, но не глобальной терминала. 

 
Alexey Viktorov #:

Быстрей чем в переменной быть не может. Только одна поправка: для сохранения при перезапуске терминала можно пользоваться и глобальной переменной терминала, и перелопатить историю в OnInit(). Но когда переходите в OnTick() то это значение должно быть в переменной глобального уровня, но не глобальной терминала. 

неужели глобальная переменная Терминала работает так медленно, ведь она должна храниться в такой же памяти как и обычная, это же не гигантский объем информации который запрашивается с диска при необходимости

 
lynxntech #:

неужели глобальная переменная работает так медленно, ведь она должна храниться в такой же памяти как и обычная, это же не гигантский объем информации который запрашивается с диска при необходимости

Если грубо, то глобальная переменная терминала это почти как файл. Иначе где она хранится когда комп выключен? А переменная глобального уровня, доступная из любого места программы это переменная в памяти. Естественно она быстрей.

Получается, что при новом открытии лучше записать и в переменную глобального уровня, и в глобальную переменную терминала для восстановления после перезагрузки терминала. Но пока терминал работает проверку вести по переменной глобального уровня.

 
Alexey Viktorov #:

Если грубо, то глобальная переменная терминала это почти как файл. Иначе где она хранится когда комп выключен? А переменная глобального уровня, доступная из любого места программы это переменная в памяти. Естественно она быстрей.

Получается, что при новом открытии лучше записать и в переменную глобального уровня, и в глобальную переменную терминала для восстановления после перезагрузки терминала. Но пока терминал работает проверку вести по переменной глобального уровня.

т.е. в OnDeinit проверять историю и записывать в глобальную Терминала?

в идеале, то в текстовой виде там инфы на пару байтов, разве она не содержится в доступности как обычные переменные, т.е. в RAM?

в OnInit считали, запись в RAM, и дальше при обновлении переменной перезапись

реально кто-нибудь проводил замеры? или может разработчики помогут разобраться