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

 
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, поэтому следует разрешить их использование.
 
Vladimir Karputov:

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


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

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

Благодарю за алгоритм.

Вопрос -- по чему при таком коде линия находится и обесцвечивается ?, 

if(preff+"hhh" == ChartSymbol(0) ){
ObjectSetInteger(0,preff+"hhh",OBJPROP_COLOR,clrNONE); }

а сделать как нужно нужно в тёмный лес идти....

 
Mikhail Dovbakh:

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

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

Для 5-ки  отдельно. 

Отлично, здесь есть то, что мне нужно!

 
Сергей Таболин:

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

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

Вы бы, вместо того, чтобы хамить, занялись бы чем-то полезным, ей-богу!

И не трудитесь отвечать и реагировать! Ваше мнение мне, увы, не интересно!)

 

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

торговых классов внутри своего класса, без создания объектов внутри своего?



Причина обращения: