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

 
Artyom Trishkin:
iCustom()
Спасибо большое!  Вы реально мне помогли!

И конечно, где ж ещё быть этой функции, как не в середине списка техн. индикаторов..)
 
serg_V777:
Приветствую.
Имею проблему с горизонтальными линиями на MQL5.
Созданная вручную через кнопку горизонтальная линия на чарте GAZP отображается и на чарте SBER так как у них цены похожие. Подскажите, пожалуйста , как и линию сохранить и чтоб показывала там где была создана.
***
ни в первом ни во втором варианте не хочет работать...
Пожалуйста вставляйте код правильно: при редактировании сообщения нажмите кнопку       Code и во всплывающее окно вставьте свой код.
MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • www.mql5.com
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
 

Имею проблему с горизонтальными линиями на MQL5.
Созданная вручную через кнопку горизонтальная линия на чарте GAZP отображается и на чарте SBER так как у них цены похожие. Подскажите, пожалуйста , как и линию сохранить и чтоб показывала там где была создана.
ни в первом ни во втором варианте не хочет работать...

preff=ChartSymbol( NULL);
price=SymbolInfoDouble(Symbol(),SYMBOL_BIDLOW);
ObjectCreate(0,preff+"hhh",OBJ_HLINE,0,0,price) ;
/////////////////////////////////////////////////////////////
if(preff+"hhh" != ChartSymbol(0) ){
ObjectSetInteger(0,preff+"hhh",OBJPROP_COLOR,clrNONE); }
///////////////////////////////////////////////////////////
if(preff != ChartSymbol(NULL) ) {
ObjectSetInteger(0,preff+"hhh",OBJPROP_COLOR,clrNONE); }



Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Типы объектов - Константы объектов - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
serg_V777:

Имею проблему с горизонтальными линиями на MQL5.
Созданная вручную через кнопку горизонтальная линия на чарте GAZP отображается и на чарте SBER так как у них цены похожие. Подскажите, пожалуйста , как и линию сохранить и чтоб показывала там где была создана.
ни в первом ни во втором варианте не хочет работать...



Смотрим ошибки:

1. Всегда явно задавайте символ графика (да, можно понадеется на документацию, но лучше ВСЕГДА задавать явно)

   preff=ChartSymbol(Symbol());
   price=SymbolInfoDouble(Symbol(),SYMBOL_BIDLOW);
   ObjectCreate(0,preff+"hhh",OBJ_HLINE,0,0,price) ;
//---
   if(preff+"hhh" != ChartSymbol(Symbol()))
     {
      ObjectSetInteger(0,preff+"hhh",OBJPROP_COLOR,clrNONE);
     }
//---
   if(preff != ChartSymbol(Symbol()))
     {
      ObjectSetInteger(0,preff+"hhh",OBJPROP_COLOR,clrNONE);
     }

2. Строка не имеет смысла - так как preff+"hhh" никогда не будет равно Symbol()


Добавлено: лучше иметь такой подход - на графике всегда одна линия, при переключении графика просто менять цену линии.

 
Vladimir Karputov:

Смотрим ошибки:

1. Всегда явно задавайте символ графика (да, можно понадеется на документацию, но лучше ВСЕГДА задавать явно)

2. Строка не имеет смысла - так как preff+"hhh" никогда не будет равно Symbol()


Добавлено: лучше иметь такой подход - на графике всегда одна линия, при переключении графика просто менять цену линии.

Если явно выдаёт предупреждение: implicit conversion from 'string' to 'number'

Суть проблемы в том , что линия отображается не там где была создана.

Если я её создаю на инструменте на прайсе по 255 почему она при загрузке другого инструмента с текущей ценой 310  ОТОБРАЖАЕТСЯ по цене 255 ??

Подскажите, пожалуйста , как и линию сохранить и чтоб показывала там где была создана.
 
serg_V777:

Если явно выдаёт предупреждение: implicit conversion from 'string' to 'number'

Суть проблемы в том , что линия отображается не там где была создана.

Если я её создаю на инструменте на прайсе по 255 почему она при загрузке другого инструмента с текущей ценой 310  ОТОБРАЖАЕТСЯ по цене 255 ??

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

Вы показали обрывок кода - я Вам отдал Ваш обрывок. Объявите переменные и не будет ошибок.

Никак не пойму Вашу логику с линиями. Попробуйте описать свои действия подробнее - а главное ЗАЧЕМ это делать.


В Вашем коде вообще не пойму, зачем ChartSymbol

 
Vladimir Karputov:

Вы показали обрывок кода - я Вам отдал Ваш обрывок. Объявите переменные и не будет ошибок.

Никак не пойму Вашу логику с линиями. Попробуйте описать свои действия подробнее - а главное ЗАЧЕМ это делать.


В Вашем коде вообще не пойму, зачем ChartSymbol

void OnChartEvent(const int id,           // идентификатор события   
                  const long& lparam,     // параметр события типа long 
                  const double& dparam,   // параметр события типа double 
                  const string& sparam) { // параметр события типа string 
 
 
  preff=ChartSymbol( NULL);
  price=SymbolInfoDouble(Symbol(),SYMBOL_BIDLOW); 
 if(id == CHARTEVENT_OBJECT_CLICK && sparam == "dz_draw")// Нажатие кнопки   
  {   
   ObjectCreate(0,preff+"hhh",OBJ_HLINE,0,0,price) ;    
 ObjectSetInteger(0,preff+"hhh",OBJPROP_COLOR,clrBlack); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_STYLE,0); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_WIDTH,3); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_BACK,false); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_SELECTABLE,true); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_SELECTED,true); 
   ObjectSetInteger(0,"dz_draw"   ,OBJPROP_STATE,false);
   }
}

Так создаю линию по цене 277 на чарте Gazp...

 При смене  в этом же окне на  Sber отображается линия созданная на  Gazp по 277..

Если я создаю и на  Sber линию по 310  то я получаю две линии на чарте-- одна правильная (созданная где нужно и по чём нужно) и вторая неправильная -не с этого чарта....

Меняя инструменты и создавая линии в диапазоне цен 200- 400 и вернувшись на чарт  Gazp у меня смешаются и люди и кони :),

а нужна она, единственная, (ну может ещё пару горизонтальных линий) ,  созданная где нужно и почём нужно .

 
serg_V777:

Так создаю линию по цене 277 на чарте Gazp...

 При смене  в этом же окне на  Sber отображается линия созданная на  Gazp по 277..

Если я создаю и на  Sber линию по 310  то я получаю две линии на чарте-- одна правильная (созданная где нужно и по чём нужно) и вторая неправильная -не с этого чарта....

Меняя инструменты и создавая линии в диапазоне цен 200- 400 и вернувшись на чарт  Gazp у меня смешаются и люди и кони :),

а нужна она, единственная, (ну может ещё пару горизонтальных линий) ,  созданная где нужно и почём нужно .

ChartSymbol

Прочтите справку. После справки не используйте этот оператор - он Вам не нужен.


Вам нужен такой алгоритм: для каждого символа нужно сохранить цену. Цена сохраняется в глобальных переменных терминала (имя глобальной переменной - это как раз название символа). Дальше нужно отслуживать 'CHARTEVENT_OBJECT_CHANGE' и 'CHARTEVENT_OBJECT_DRAG' - и пересохранять цену глобальной переменной.

Ещё нужно решить массу нюансов: например - глобальная переменная есть, и линии на графике нет ...

[Удален]  
User_mt5:
Спасибо большое!  Вы реально мне помогли!

И конечно, где ж ещё быть этой функции, как не в середине списка техн. индикаторов..)

А без ёрничества никак? 

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

 
Vitaly Muzichenko:

Спасибо!

Стандартными средствами никак, получается.

Без использования системных DLL никак. 

Я для этих целей целую библиотеку опубликовал )

Для 5-ки  отдельно. 
CDir (MT4) - класс для получения оглавления каталога
CDir (MT4) - класс для получения оглавления каталога
  • www.mql5.com
Класс CDir предназначен для получения сведений о файлах и папках вне "песочницы" MQL4 подобно команде MS-DOS Dir. Задействован вызов системных DLL, поэтому следует разрешить их использование.