int bars=Bars(_Symbol,_Period);
if(bars>0)
{
Print("Количество баров в истории терминала по символу-периоду на данный момент = ",bars);
}
else//нет доступных баров
{
//--- видимо, данные по символу не синхронизированы с данными на сервереbool synchronized=false;
//--- счетчик циклаint attempts=0;
// сделаем 5 попыток дождаться синхронизацииwhile(attempts<5)
{
if(SeriesInfoInteger(Symbol(),0,SERIES_SYNCHRONIZED))
{
//--- есть синхронизация, выходим
synchronized=true;
break;
}
//--- увеличим счетчик
attempts++;
//--- подождем 10 миллисекунд до следующей итерацииSleep(10);
}
//--- вышли из цикла по факту синхронизацииif(synchronized)
{
Print("Количество баров в истории терминала по символу-периоду на данный момент = ",bars);
Print("Самая первая в истории терминала дата по символу-периоду на данный момент = ",
(datetime)SeriesInfoInteger(Symbol(),0,SERIES_FIRSTDATE));
Print("Самая первая дата в истории по символу на сервере = ",
(datetime)SeriesInfoInteger(Symbol(),0,SERIES_SERVER_FIRSTDATE));
}
//--- синхронизация данных так и не была достигнутаelse
{
Print("Не удалось получить количество баров на ",_Symbol);
}
}
также, обращение к ценам в OnTick должно быть (чтобы сторонние символы погрузились).
также, обращение к ценам в OnTick должно быть (чтобы сторонние символы погрузились).
Это не решает проблемы изначальной
SymbolInfoDouble(euSY06,SYMBOL_BID,euSY06b) при правильном использовании всегда заполняется значением. По каким то причинам правильное значение по нужному символу не приходит. И заполнение происходит видимо по предыдущему полученому значению, а это значение одной из других семи валют.
Если нет какого то решения, а это решение я ищу уже не первый месяц, то я чувствую что юто просто баг тестера. Разработчики уделите пожалуйста этому внимание. Если это баг исправте
точно не помню. но когда я тестирую один из своих мультисимвольных индикаторов, то в OnInit подгружается список символов из строки в input параметрах. а обращение к их ценам идёт в OnCalculate. при чем, когда я устанавливаю в настройках загрузку символов из Market Watch, то в тестере появляется только один основной символ. не знаю как в роботах, но думаю там всё аналогично.
точно не помню. но когда я тестирую один из своих мультисимвольных индикаторов, то в OnInit подгружает список символов из строки в input параметрах. а обращение к их ценам идёт в OnCalculate. при чем, когда я устанавливаю в настройках загрузку символов из Market Watch, то в тестере появляется только один основной символ. не знаю как в роботах, но думаю там всё аналогично.
У меня все символы появляются и котировки идут. Моментная проблема, когда
в SymbolInfoDouble("EURUSD",SYMBOL_BID,dataEURUSD) попадают данные соседнего SymbolInfoDouble("EURGBP",SYMBOL_BID,dataEURGBP)
то есть, вы хотите сказать, что обращаетесь 2 раза к одному и тому же символу за 1 тик и получаете разные данные? а 2117, это номер строки на сколько я понял?
то есть, вы хотите сказать, что обращаетесь 2 раза к одному и тому же символу за 1 тик и получаете разные данные? а 2117, это номер строки на сколько я понял?
2117 это номер строки. Каждая строчка это отдельный тик. В каждом тике запрос бида по символу EURGBP. Но так же в каждом цикле я запрашиваю еще цены по другим 6 валютам. И вот в какой то момент цена не приходит от нужного символа, и всето того чтобы выдать 0 или -1, или еще чтото, заполняется котировкой от соседнего запроса по другому символу.
Если делать так, а в коде 7 таких строк для семи пар, то в обзоре рынка будут котировки только по одной валюте.
попробуйте вызвать Bars в OnTick
https://www.mql5.com/ru/docs/series/bars
из статьи:
также, обращение к ценам в OnTick должно быть (чтобы сторонние символы погрузились).попробуйте вызвать Bars в OnTick
https://www.mql5.com/ru/docs/series/bars
из статьи:
также, обращение к ценам в OnTick должно быть (чтобы сторонние символы погрузились).Это не решает проблемы изначальной
SymbolInfoDouble(euSY06,SYMBOL_BID,euSY06b) при правильном использовании всегда заполняется значением. По каким то причинам правильное значение по нужному символу не приходит. И заполнение происходит видимо по предыдущему полученому значению, а это значение одной из других семи валют.
Если нет какого то решения, а это решение я ищу уже не первый месяц, то я чувствую что юто просто баг тестера. Разработчики уделите пожалуйста этому внимание. Если это баг исправтеНужно сделать в ОнИнит()
точно не помню. но когда я тестирую один из своих мультисимвольных индикаторов, то в OnInit подгружается список символов из строки в input параметрах. а обращение к их ценам идёт в OnCalculate. при чем, когда я устанавливаю в настройках загрузку символов из Market Watch, то в тестере появляется только один основной символ. не знаю как в роботах, но думаю там всё аналогично.
точно не помню. но когда я тестирую один из своих мультисимвольных индикаторов, то в OnInit подгружает список символов из строки в input параметрах. а обращение к их ценам идёт в OnCalculate. при чем, когда я устанавливаю в настройках загрузку символов из Market Watch, то в тестере появляется только один основной символ. не знаю как в роботах, но думаю там всё аналогично.
У меня все символы появляются и котировки идут. Моментная проблема, когда
в SymbolInfoDouble("EURUSD",SYMBOL_BID,dataEURUSD) попадают данные соседнего SymbolInfoDouble("EURGBP",SYMBOL_BID,dataEURGBP)
Это не решает проблемы изначальной
пробовали?
или, например, CopyTime или CopyClose пробовали вызывать в OnTick?
У меня все символы появляются и котировки идут. Моментная проблема, когда
в SymbolInfoDouble("EURUSD",SYMBOL_BID,dataEURUSD) попадают данные соседнего SymbolInfoDouble("EURGBP",SYMBOL_BID,dataEURGBP)
как вы это определили?
как вы это определили?
то есть, вы хотите сказать, что обращаетесь 2 раза к одному и тому же символу за 1 тик и получаете разные данные? а 2117, это номер строки на сколько я понял?
то есть, вы хотите сказать, что обращаетесь 2 раза к одному и тому же символу за 1 тик и получаете разные данные? а 2117, это номер строки на сколько я понял?
2117 это номер строки. Каждая строчка это отдельный тик. В каждом тике запрос бида по символу EURGBP. Но так же в каждом цикле я запрашиваю еще цены по другим 6 валютам. И вот в какой то момент цена не приходит от нужного символа, и всето того чтобы выдать 0 или -1, или еще чтото, заполняется котировкой от соседнего запроса по другому символу.