Доброго времени суток!
Есть некий график. На него перетаскиванием из Навигатора помещены несколько индикаторов. На графике они видны, всё нормально.
Теперь я хочу получить их список. Есть пример:
Но он не работает - даже в цикл не попадаем.
Пробовал скрипт с кодом и отдельно запускать и перетаскивать на график - нет списка индикаторов. Хотя сами индикаторы я вижу.
Что я делаю не так?
Установили на график одинаковые индикаторы?
Доброго времени суток!
Есть некий график. На него перетаскиванием из Навигатора помещены несколько индикаторов. На графике они видны, всё нормально.
Теперь я хочу получить их список. Есть пример:
Но он не работает - даже в цикл не попадаем.
Пробовал скрипт с кодом и отдельно запускать и перетаскивать на график - нет списка индикаторов. Хотя сами индикаторы я вижу.
Что я делаю не так?
во первых надо ждать, первый проход в OnStart скрипта вполне может статься неправильным
нельзя такие опросы проводить прямо вот так сразу - загрузил и поехали..такое только в тестере случается
ещё неплохо наверное дёрнуть ChartRedraw() или подобные..
---
просто по физике процесса - индикаторы чарта работают в своём потоке, скрипты в другом. Запустившись из иного потока, стоит как-то дождаться синхронности
не слишком явно в документации написано за что отвечает CHART_WINDOWS_TOTAL - не разобрался
я б с такого кода начал:
void OnStart() { for(long i = ChartFirst(); i != -1; i = ChartNext(i)) { for(int j = 0; j < ChartGetInteger(0, CHART_WINDOWS_TOTAL); j++) { for(int k = 0; k < ChartIndicatorsTotal(i, j); k++) { Print("ChartID = ", i, " , name = ", ChartIndicatorName(i, j, k)); } } } }
Имеются такие индикаторы:
Код который распечатывает все индикаторы:
int windows_total=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL); for(int i=windows_total-1; i>=0; i--) { for(int j=ChartIndicatorsTotal(0,i)-1; j>=0; j--) { string name=ChartIndicatorName(0,i,j); Print("windows ",i,", indicator ",j,", indicator name ",name); } }
Результат:
2021.09.18 07:07:54.127 Script 1 (AUDUSD,D1) windows 2, indicator 0, indicator name Bulls SMA(6) Smoothing(13) 2021.09.18 07:07:54.128 Script 1 (AUDUSD,D1) windows 1, indicator 0, indicator name MACD(12,26,9) 2021.09.18 07:07:54.129 Script 1 (AUDUSD,D1) windows 0, indicator 0, indicator name MA(12)
А синхронизироваться, видимо, как то надо. Эти методы сильно зависят от машины, на которой выполняются. Особенно заметно на виртуалке.
Формально, ведь никто не мешает запустить скрипт из ME при запущенном MT (с открытым графиком и парой индикаторов на нём). По документации, вроде, особых ограничений на такое нет. Но, если скрипт запустится после того, как график уже есть - не факт, что он индикаторы найдёт.
Разговор за разные потоки не очень актуален - сам метатрейдер ведь один, он запущен, графики видны (с индикаторами) и можно ожидать, что и скрипт всё это увидит - нет, не всегда.
Доброго времени суток!
Есть некий график. На него перетаскиванием из Навигатора помещены несколько индикаторов. На графике они видны, всё нормально.
Теперь я хочу получить их список. Есть пример:
Но он не работает - даже в цикл не попадаем.
Пробовал скрипт с кодом и отдельно запускать и перетаскивать на график - нет списка индикаторов. Хотя сами индикаторы я вижу.
Что я делаю не так?
C конца мотать нужно! Вы его удаляете и индексы смещаются
for(int i=0;i<total;i++) for(int i=total-1 ;i>=0;i--) {
Не придумывайте. :) Если индикаторов будет 2, то один то должен остаться. А их нет. Что с вашим вариантом, что без: total == 0
Если скрипт перетаскивать на график - тут будет рулетка, иногда всё нормально, иногда 0.
А вот если скрипт запустить из ME - total всегда будет равен 0. При отладке скриптов такое поведение очень неудобно.
Не придумывайте. :) Если индикаторов будет 2, то один то должен остаться. А их нет. Что с вашим вариантом, что без: total == 0
Если скрипт перетаскивать на график - тут будет рулетка, иногда всё нормально, иногда 0.
А вот если скрипт запустить из ME - total всегда будет равен 0. При отладке скриптов такое поведение очень неудобно.
Ви проверили? Именно так и есть, если бы не удаляли индикаторы все так же было ок.
Конечно если запускать с МЕ то он открывает новый график на котором нет индикаторов. У вас же указан текущий график в коде.- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть некий график. На него перетаскиванием из Навигатора помещены несколько индикаторов. На графике они видны, всё нормально.
Теперь я хочу получить их список. Есть пример:
Но он не работает - даже в цикл не попадаем.
Пробовал скрипт с кодом и отдельно запускать и перетаскивать на график - нет списка индикаторов. Хотя сами индикаторы я вижу.
Что я делаю не так?