miroslavovich:
Вопрос : можно ли программно вызвать дозагрузку данных с сервера?
Конечно можно. При условии что эти котировки на сервере брокера имеются и у вас нет жёсткого ограничения по количеству баров в окне (устанавливается в настройках терминала). Просто берёте и в цикле обращаетесь к котировкам. Котировки будут докачаны с сервера. Хотя возможно что прийдётся немного подождать если связь плохая. И первые обращения к незакачанным котировкам выдадут вам нули. Но вы просто повторяйте цикл до тех пор пока значения котировок не станут отличаться от нулевых. К примеру вот так вот производится закачка 100 баров по всем таймфреймам из списка инструментов:
string ChartHistoryList[]={"EURUSD","GBPUSD","AUDUSD","NZDUSD","USDCAD","USDCHF","USDJPY"}; bool flag=true; string symbol_for_trade; int i,k; int limit_his=ArraySize(ChartHistoryList); for(i=0;i<limit_his;i++) { symbol_for_trade=ChartHistoryList[i];//Выбираем инструмент из списка while(flag) { flag=false; for(k=0;k<100;k++) { if(iClose(symbol_for_trade,1,k)<0.0001) flag=true; if(iClose(symbol_for_trade,5,k)<0.0001) flag=true; if(iClose(symbol_for_trade,15,k)<0.0001) flag=true; if(iClose(symbol_for_trade,30,k)<0.0001) flag=true; if(iClose(symbol_for_trade,60,k)<0.0001) flag=true; if(iClose(symbol_for_trade,240,k)<0.0001) flag=true; if(iClose(symbol_for_trade,1440,k)<0.0001) flag=true; if(iClose(symbol_for_trade,10080,k)<0.0001) flag=true; if(iClose(symbol_for_trade,43200,k)<0.0001) flag=true; } if(flag) {Print("Проблемы с историей котировок. Ждём 1 минуту");Sleep(60000);RefreshRates();} } }
Теже яйца, только в профиль !
Чуть переделал скрит предложенный soland
Чуть переделал скрит предложенный soland
int start() { //---- int GBPCHF_count = iBars("GBPCHF",PERIOD_M15); Print(" GBPCHF : ",GBPCHF_count); Print("iTime ",TimeToStr(iTime("GBPCHF",PERIOD_M15,GBPCHF_count-1),TIME_DATE)," ",TimeToStr(iTime("GBPCHF",PERIOD_M15,GBPCHF_count-1),TIME_SECONDS)); bool flag = true; int err1 = 0; int err2 = 0; int error_count = 0; int i = 0; int _time; double _close = 0; while(flag) { flag=true; _time = iTime("GBPCHF",PERIOD_M15,i); err1 = GetLastError(); _close = iClose("GBPCHF",PERIOD_M15,i); err2 = GetLastError(); if( _time == 0 || _close == 0) { flag=false; } else { flag = true; } Print("i = ",i," time = ",TimeToStr(_time,TIME_DATE)," ",TimeToStr(_time)," close = ",_close) ; if(!flag ) { if ( error_count <5 ) { error_count++; Print("Проблемы с историей котировок. (err1 = " ,err1," ,err2 = ",err2," )Ждём 60 секунд. error_count = ", error_count); Sleep(60000); RefreshRates(); flag = true; } else { return; } } else { error_count = 0; i++; } } //---- return(0); }
Лог работы скрипта :
14:06:28 Compiling 'Тест' 14:06:28 Тест GBPUSD,H1: i = 2048 time = 1970.01.01 1970.01.01 00:00 close = 0 14:06:28 Тест GBPUSD,H1: Проблемы с историе�� котиро��ок. (err1 = 0 ,err2 = 0 )Ждём 60 секунд. error_count = 5 14:06:28 Тест GBPUSD,H1: i = 2048 time = 1970.01.01 1970.01.01 00:00 close = 0 14:06:28 Тест GBPUSD,H1: removed 14:06:28 Тест GBPUSD,H1: loaded successfully 14:06:28 Тест GBPUSD,H1: GBPCHF : 0 14:06:28 Тест GBPUSD,H1: iTime 1970.01.01 00:00:00 14:06:28 Тест GBPUSD,H1: i = 0 time = 1970.01.01 1970.01.01 00:00 close = 0 14:06:28 Тест GBPUSD,H1: Проблемы с историе�� котиро��ок. (err1 = 4066 ,err2 = 0 )Ждём 60 секунд. error_count = 1 14:07:38 Тест GBPUSD,H1: i = 0 time = 2007.04.19 2007.04.19 13:00 close = 2.4059 14:07:38 Тест GBPUSD,H1: i = 1 time = 2007.04.19 2007.04.19 12:45 close = 2.4061 14:07:38 Тест GBPUSD,H1: i = 2 time = 2007.04.19 2007.04.19 12:30 close = 2.4051 14:07:38 Тест GBPUSD,H1: i = 3 time = 2007.04.19 2007.04.19 12:15 close = 2.4075 14:07:38 Тест GBPUSD,H1: i = 4 time = 2007.04.19 2007.04.19 12:00 close = 2.4075 14:07:38 Тест GBPUSD,H1: i = 5 time = 2007.04.19 2007.04.19 11:45 close = 2.4074 14:07:38 Тест GBPUSD,H1: i = 6 time = 2007.04.19 2007.04.19 11:30 close = 2.4073 14:07:38 Тест GBPUSD,H1: i = 7 time = 2007.04.19 2007.04.19 11:15 close = 2.4082 14:07:38 Тест GBPUSD,H1: i = 8 time = 2007.04.19 2007.04.19 11:00 close = 2.4083 14:07:38 Тест GBPUSD,H1: i = 9 time = 2007.04.19 2007.04.19 10:45 close = 2.4082 14:07:38 Тест GBPUSD,H1: i = 10 time = 2007.04.19 2007.04.19 10:30 close = 2.4088 14:07:38 Тест GBPUSD,H1: i = 11 time = 2007.04.19 2007.04.19 10:15 close = 2.4089 14:07:38 Тест GBPUSD,H1: i = 12 time = 2007.04.19 2007.04.19 10:00 close = 2.4096 ......... 14:07:38 Тест GBPUSD,H1: i = 2045 time = 2007.03.21 2007.03.21 01:00 close = 2.3763 14:07:38 Тест GBPUSD,H1: i = 2046 time = 2007.03.21 2007.03.21 00:45 close = 2.3764 14:07:38 Тест GBPUSD,H1: i = 2047 time = 2007.03.21 2007.03.21 00:30 close = 2.3761 14:07:38 Тест GBPUSD,H1: i = 2048 time = 1970.01.01 1970.01.01 00:00 close = 0 14:07:38 Тест GBPUSD,H1: Проблемы с историе�� котиро��ок. (err1 = 0 ,err2 = 0 )Ждём 60 секунд. error_count = 1 14:08:40 Тест GBPUSD,H1: i = 2048 time = 1970.01.01 1970.01.01 00:00 close = 0 14:08:40 Тест GBPUSD,H1: Проблемы с историе�� котиро��ок. (err1 = 0 ,err2 = 0 )Ждём 60 секунд. error_count = 2 14:09:42 Тест GBPUSD,H1: i = 2048 time = 1970.01.01 1970.01.01 00:00 close = 0 14:09:42 Тест GBPUSD,H1: Проблемы с историе�� котиро��ок. (err1 = 0 ,err2 = 0 )Ждём 60 секунд. error_count = 3 14:10:42 Тест GBPUSD,H1: i = 2048 time = 1970.01.01 1970.01.01 00:00 close = 0 14:10:42 Тест GBPUSD,H1: Проблемы с историе�� котиро��ок. (err1 = 0 ,err2 = 0 )Ждём 60 секунд. error_count = 4 14:11:43 Тест GBPUSD,H1: i = 2048 time = 1970.01.01 1970.01.01 00:00 close = 0 14:11:43 Тест GBPUSD,H1: Проблемы с историе�� котиро��ок. (err1 = 0 ,err2 = 0 )Ждём 60 секунд. error_count = 5 14:12:44 Тест GBPUSD,H1: i = 2048 time = 1970.01.01 1970.01.01 00:00 close = 0 14:12:44 Тест GBPUSD,H1: removedПри показе окна котировок выдает котировки и более ранних периодов подружая их с сервера. Мистика!
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
результат выполнения скрипта :
Открыв окно котировки перейдя на начало графика действительно первая котировка за 2007.04.16 21:01:00, но далее я могу курсором влево открыть и предыдущие котировки. При этом видно , что данные запрашиваются с сервера и повторное выполнение скрипта выдает котировку с более ранним значение времени.
Вопрос : можно ли программно вызвать дозагрузку данных с сервера?