Проблемы исполнения ChartSymbol().

 

Один из моих брокеров изменил название одного символа с EURRUR на EURRUB и всё - эксперт подвис.

Если в эксперте реализован анализ чартов с использованием ChartSymbol() и этой функции встречается чарт, в котором сидит неизвестный символ, то:
эксперт начинает вести себя непредсказуемо. По крайней мере, функция не отдаёт название символа чарта. Со всеми вытекающими.

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

Может быть, есть способ обойти этот момент программно? Подскажите, пожалуйста.

 
User_mt5:

Один из моих брокеров изменил название одного символа с EURRUR на EURRUB и всё - эксперт подвис.

Если в эксперте реализован анализ чартов с использованием ChartSymbol() и этой функции встречается чарт, в котором сидит неизвестный символ, то:
эксперт начинает вести себя непредсказуемо. По крайней мере, функция не отдаёт название символа чарта. Со всеми вытекающими.

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

Может быть, есть способ обойти этот момент программно? Подскажите, пожалуйста.

Опишите словами решение - можно будет решить программно
 
User_mt5:

Один из моих брокеров изменил название одного символа с EURRUR на EURRUB и всё - эксперт подвис.

...........

Может быть, есть способ обойти этот момент программно? Подскажите, пожалуйста.

Название первых шести букв символа всегда одинаково, это международно(поправьте меня если не прав). По ним и работайте.

 
User_mt5:

Если терминал настроен под одного брокера, а потом происходит переключение на другого брокера, то снова мы в трубе.

Может быть, есть способ обойти этот момент программно? Подскажите, пожалуйста.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Особенности языка mql5, тонкости и приёмы работы

fxsaber, 2017.11.30 09:48

Памятка

Действие/тип программыСмена ТФ или символаСмена счета
ИндикаторЗапуск OnDeinit и OnInit, объект глобального класса меняется (полная перезагрузка).Ничего не происходит, кроме обнуления prev_calculated.
СоветникЗапуск OnDeinit и OnInit, объект глобального класса не меняется.Запуск OnDeinit и OnInit, объект глобального класса меняется (полная перезагрузка).

Воспользуйтесь выделенным.

 
STARIJ:
Опишите словами решение - можно будет решить программно

Хотите чтобы я описал словами решение, которого у меня нет? и для поиска которого затеяна эта ветка?

Vladimir M.:

Название первых шести букв символа всегда одинаково, это международно(поправьте меня если не прав). По ним и работайте.

Поправляю.

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

2. Даже если бы система существовала, это ничего не решает. Ведь у каждого брокера свой набор символов. Например, брокер АА предлагает возможность работы с WTI. А у брокера ВВ в списке символов такого нет. Теперь представьте, что Вы работали с АА в окне этого символа. Т.е. в МТ5 есть живое окно с этим символом. Потом Вы переключаетесь на счёт брокера ВВ. И Ваш эксперт начинает исследовать окна на предмет символов (в которых нужно будет что-то отображать). В процессе перебора он натыкается на неизвестный ему символ и.. впадает в ступор. Если бы функция ChartSymbol() отдавала какую-нибудь -1 в случае неудачи, то было бы ясно - чужой символ. Тогда просто - переступил и пошёл дальше. Но она зависает.

fxsaber:

Воспользуйтесь выделенным.

Пока не представляю как это сделать. Если в терминале есть окно с чужим символом, то для принятия решения нужно знать его символ. А это как раз и не получается.
 

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

SymbolInfoInteger(sym,SYMBOL_SELECT);
SymbolSelect(sym,true);
 
Taras Slobodyanik:

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

Наверное, я плохо излагаю.

Эксперт мультивалютный. Сидит в одном окне, но торгует по всем доступным символам. При этом по ходу дела ещё что-то отображает в окнах, какую-то графику.

Всего символов, например, 100. В текущий момент задействовано, например, 12 окон с какими-то конкретными символами. Зная всё про окна эксперт легко нарисует свою графику в имеющихся 12-и окнах. А по символам, для которых окон нет, пытаться рисовать не будет, хотя и торгует по ним. И чтобы знать что рисовать в конкретном окне нужно знать символ этого окна.

Вопрос простой: как это узнать? И ответ простой: использовать ChartSymbol(). Беда в том, что эта функцццыя не работает по символам, которых нет в списке этого брокера (хотя окно есть, оно просто осталось после работы с другим брокером в этом же терминале).

 

Вот сейчас терминал обновился, я провёл небольшой эксперимент. Функция возвращает "" = ничего. Пожалуй, это решение. Правда, думает она неоправданно долго, но опрос окон делается нечасто, можно и потерпеть.

Хотя ещё нужно проверить персонально и все другие функции, обращающиеся в такое окно.

Всем спасибо.