Ошибки, баги, вопросы - страница 1441
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
после обновления терминала появился такой баг с ArrayResize
поправьте пжалуйста. (при условии ArraySetAsSeries(t,true);)
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
ArraySetAsSeries(t,true);
ArrayResize(t,11);
for(int a=0;a<ArraySize(t);a++)
t[a]=a;
//---
string txt="";
for(int a=0;a<ArraySize(t);a++)
txt+=t[a]+" ";
Print(txt);
//---
ArrayResize(t,ArraySize(t)+1);
t[0]=11;
//---
txt="";
for(int a=0;a<ArraySize(t);a++)
txt+=t[a]+" ";
Print(txt);
//---
return(INIT_SUCCEEDED);
}
int t[];
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const int begin,
const double &price[])
{
//---
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
Добрый день. Укажите пожалуйста версию, битность и билд используемого терминала/эдитора.
terminal64.exe /portable
terminal64.exe /portable
массива не обрабатывался флаг AsSeries. Теперь изменение размера
массивов с флагом AsSeries идентично изменению массивов без
данного флага. А именно, добавление новых элементов происходит к
концу массива, а не к его началу. Aналогично, при уменьшенини
размера массива - отрезаются элементы с его конца.
Скриншот нагядно объясняет принцип работы на Вашем примере:
Была исправлена ошибка - при добавлении или удалении элементов
массива не обрабатывался флаг AsSeries. Теперь изменение размера
массивов с флагом AsSeries идентично изменению массивов без
данного флага. А именно, добавление новых элементов происходит к
концу массива, а не к его началу. Aналогично, при уменьшенини
размера массива - отрезаются элементы с его конца.
Скриншот нагядно объясняет принцип работы на Вашем примере:
логичнее добавлять к нулевой ячейке, в зависимости от направления массива.
ну, что уж, буду переписывать.
работы привалило ;))
спасибо за оперативность!
Не сохраняется вставленное через редактор сообщений видео.
Google Chrome Версия 46.0.2490.86 m.
Internet Explorer 11.11.10586.0.
Здравствуйте!
После обновления (Build 920) терминал перестал перезагружать индикатор после компиляции.
Обновляется только список индикаторов в окне навигатора.
Т.е. до обновления индикатор на графике нормально перезагружался после компиляции и все изменения в коде индикатора начинали работать.
После обновления при каждом изменении кода и компиляции, вынужден удалять индикатор с графика и добавлять его на график заново.
У кого не будь случалось такое?
Скажите, пож., как преодолеть ситуацию, когда тестер ограничивает количество открытых позиций сотней, несмотря на то, что, в настройках указываю 1000?
Читаем о CopyRates() вдумчиво справку:
Примечание
1. Если интервал запрашиваемых данных полностью находится вне доступных данных на сервере, то функция возвращает -1. В случае если запрашиваются данные за пределами TERMINAL_MAXBARS (максимальное количество баров на графике), функция также вернет -1.
2. При запросе данных из индикатора, если запрашиваемые таймсерии еще не построены или их необходимо загрузить с сервера, то функция сразу же вернет -1, но при этом сам процесс загрузки/построения будет инициирован.
3. При запросе данных из эксперта или скрипта, будет инициирована загрузка с сервера, если локально этих данных у терминала нет, либо начнется построение нужной таймсерии, если данные можно построить из локальной истории, но они еще не готовы. Функция вернет то количество данных, которые будут готовы к моменту истечения таймаута, но загрузка истории будет продолжаться, и при следующем аналогичном запросе функция вернет уже больше данных.
1. Тут всё правильно и логично, перед запросом данных нужно проверить разрешённое количество баров в окне.
2. Тут тоже всё правильно, нужно делать попытки получения данных до тех пор, пока терминал не вернёт необходимое количество, не забывая проверять соединение с сервером. Сомнений в качестве полученных данных здесь сомневаться не приходится - данные либо есть, либо их нет.
3. А вот тут совершенно ничего не понятно. Никогда нельзя быть уверенным в том, что полученные данные полные. И зачем пользователю данные, в полноте которых нет уверенности? Практика показывает, что никакие ухищрения (предварительные попытки получения данных с целью инициализации закачки с сервера) не дают уверенности, что при запросе будут получены полные данные.
Полагаю, что практичнее сделать поведение функций получения данных в советниках аналогично поведению в индикаторах.
Читаем о CopyRates() вдумчиво справку:
3. А вот тут совершенно ничего не понятно. Никогда нельзя быть уверенным в том, что полученные данные полные. И зачем пользователю данные, в полноте которых нет уверенности? Практика показывает, что никакие ухищрения (предварительные попытки получения данных с целью инициализации закачки с сервера) не дают уверенности, что при запросе будут получены полные данные.
Почему нельзя быть уверенным? Для уверенности используйте SeriesInfoInteger(symbol,period,SERIES_SYNCHRONIZED)
Читайте документацию дальше. Не менее вдумчиво.