Ошибки, баги, вопросы - страница 362

 
Lizar:
Необходимость такого функционала будет возрастать по мере увеличения количества типов объекта. И станет необходимым при появлении объектов, когда по его типу нельзя определить количество точек привязки. Например, какая-нибудь полилиния. А пока не очень критично, но как пожелание в  сервисдеск можно оформить.

Сейчас, реальнее всего (если такая необходимость есть) создать функцию-switch которая по типу объекта будет выдавать количество точек привязки.

Просто сделайте обработку этой таблицы (Справочник MQL5 / Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов ) в switch. Входным параметром функции будет ObjectGetInteger(chart_id,name,OBJPROP_TYPE)

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

 
Urain:

Сейчас, реальнее всего (если такая необходимость есть) создать функцию-switch которая по типу объекта будет выдавать количество точек привязки.


я давненько просил свойство в ObjectGet. но в СД был отказ.

мне так кажется, что это связано с самой логикой в недрах МТ5.

он наверно просто проходит по всем точкам и проверяет их на EMPTY. И если в точке есть нормальная цифра, то происходит построение.

То есть нет никакой прямой связи между типом объекта и числом точек привязки.

поэтому вы правильно заметили, что надо самому делать switch.

 
Urain:

Сейчас, реальнее всего (если такая необходимость есть) создать функцию-switch которая по типу объекта будет выдавать количество точек привязки.

Просто сделайте обработку этой таблицы (Справочник MQL5 / Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов ) в switch. Входным параметром функции будет ObjectGetInteger(chart_id,name,OBJPROP_TYPE)

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

sergeev:

я давненько просил свойство в ObjectGet. но в СД был отказ.

мне так кажется, что это связано с самой логикой в недрах МТ5.

он наверно просто проходит по всем точкам и проверяет их на EMPTY. И если в точке есть нормальная цифра, то происходит построение.

То есть нет никакой прямой связи между типом объекта и числом точек привязки.

поэтому вы правильно заметили, что надо самому делать switch.

Да, как писал выше, у меня это реализовано через switch. Работает без проблем. Но мысль-то идет дальше, хочется больше удобств и универсальности. 

Кстати, на мой взгляд, было бы хорошо дать пользователям делать свои объекты. Например, позволить хотя бы объединять стандартные объекты  в группы под общим "брендом". Чтобы можно было обращаться к группе объектов как к одному. Тогда появились бы какие-нибудь хитрые объекты типа полилинии, кольца, тор ... да много чего. Да даже объекты некой панели управления можно было бы объединить.  А Ctrl-B выдавал бы не простыню объектов, а аккуратные названия групп объектов, ну или что-то подобное. И еще, проблема получения 100000 событий от изменения объектов в обработчик OnChartEven() тоже бы решилась, т.к. эти 100000 объектов можно было бы объединить в группу и получать всего одно событие CHARTEVENT_OBJECT_CHANGE. В общем, красота. Конечно, частично это все можно реализовать через классы, но не всё.

 

Lizar:

........  А Ctrl-B выдавал бы не простыню объектов, а аккуратные названия групп объектов, ну или что-то подобное...........

.......т.к. эти 100000 объектов можно было бы объединить в группу и получать всего одно событие CHARTEVENT_OBJECT_CHANGE. В общем, красота.......

Мечтать не вредно...  А вот надеяться не советую.

:)

 

Пишу индикатор для отображения свеч сразу по нескольким инструментам. После запуска и до появления новых баров все отображается правильно:

Но после появления новых баров происходит смещение:

 

И ChartRedraw не помогает. Хотя если нажать правую кнопку-обновить все становится на места. Подскажите как предотвратить смещение?

Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
Файлы:
 

Нормализуется ли double price; в  MqlTradeRequest автоматически?(что маловероятно) и если нет то почему до сих пор в стандартной библиотеке нет нормализации ? (вопрос об этом поднимал 9 месяцев назад)

Я выходил из ситуации просто делая правки в стандартной библиотеке, но сами понимаете это не дело (при обновлении это сносится).

bool CTrade::PositionOpen(const string symbol,ENUM_ORDER_TYPE order_type,double volume,
                          double price,double sl,double tp,const string comment)
{
...
m_request.price       =price; // ??????????
...
}

если я не прав то укажите в чём?

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 

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

Нужно самостоятельно в случае, когда используется расчитываемая цена, делать ее нормализацию. Когда выставляется ордер с чистыми неизмененными ценами Bid/Ask, то нормализация не нужна.

 
Renat:

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

Нужно самостоятельно в случае, когда используется расчитываемая цена, делать ее нормализацию. Когда выставляется ордер с чистыми неизмененными ценами Bid/Ask, то нормализация не нужна.

Спасибо, я узнал что хотел. В четвёрке приходилось нормализовывать даже bid/ask.
 
Urain:
Спасибо, я узнал что хотел. В четвёрке приходилось нормализовывать даже bid/ask.

Вообще-то, в МТ4 не надо нормализовывать Бид и Аск. Они всегда по умолчанию нормализованные.

Если есть пример под рукой, покажите, пожалуйста.

 
Renat:

Вообще-то, в МТ4 не надо нормализовывать Бид и Аск. Они всегда по умолчанию нормализованные.

Если есть пример под рукой, покажите, пожалуйста.

Примера под рукой нет, это было довольно давно (возможно в теперешних билдах всё нормально), когда то были такие проблемы что получал реквоты в МТ4 даже запрашивая по Бид и Аск, после нормализации всё наладилось, вот и появилось правило нормализовывать любой запрос. А ведь сами понимаете привычка вторая натура.