Ошибки, баги, вопросы - страница 907

 
x100intraday:

  Наоборот. Под личным визуальным контролем вся история скачивается при первом же запуске, по окончании загрузки проверяется клавишей Home с уходом в начало 1994 года на M1. Затем вручную совершаю обход часто используемых мной, а также актуальных для мультитаймфреймового индикатора таймфреймов, дожидаюсь их формирования, перезагружаю терминал. Всё.

Насколько я понимаю, все ТФ строятся на лету из М1. Т.е. перезапуская терминал, вы все предыдущие построения "забываете" и при новом запуске терминалу опять нужно время на их расчет.

Попробуйте перед всеми расчетами вставить в свой индикатор загрузку всей необходимой истории (по всем используемым символам и ТФ), как это сделано в этом скрипте:

   for(int s=0; s<SymbolsCount; s++)
     {
      for(int p=0; p<PeriodsCount; p++)
        {
          if(!CheckLoadHistory(SymbolsName[s],StringToPeriod(PeriodsName[p]),BarsCount)) return;
         }
     }
sHistoryExport - удобный скрипт для экспорта исторических данных в формате МetaТrader 4
sHistoryExport - удобный скрипт для экспорта исторических данных в формате МetaТrader 4
  • голосов: 14
  • 2012.11.12
  • Andrey Khatimlianskii
  • www.mql5.com
Экспорт всех необходимых инструментов и тайм-фреймов одним кликом с загрузкой и проверкой истории.
 
komposter:

Насколько я понимаю, все ТФ строятся на лету из М1. Т.е. перезапуская терминал, вы все предыдущие построения "забываете" и при новом запуске терминалу опять нужно время на их расчет.

Попробуйте перед всеми расчетами вставить в свой индикатор загрузку всей необходимой истории (по всем используемым символам и ТФ), как это сделано в этом скрипте:

 Я, ежели что, вот об этой директории:

C:\Program Files\MetaTrader 5\Bases\MetaQuotes-Demo\history\NZDUSD\cache,

коль под "построениями" имеется в виду формирование не-M1 таймфреймов. Но при первичном запуске терминала и обходе не-M1 таймфреймов для их формирования и возможности дальнейшей работы на них мы их всё ещё не увидим по этому пути, даже несмотря на то, что терминал будет полностью готов к работе и не только ручной. Однако уже после выгрузки терминала, а также при последующих запусках ранее сформированные таймфреймы можно запросто наблюдать в той самой директории. Но раз они не испаряются с выгрузкой, а остаются и вроде бы всего-навсего дописываются при последующих запусках, то вряд ли терминалу нужно время на полный пересчёт затребованного таймфрейма.

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

 Ваш код, я так понимаю, суть не что иное, как предварительная синхронизация локальной истории с серверной? Если так, то у меня это давно в планах, но всё никак не успеваю добавить столь простой блок в свой код.

 
  komposter, я хоть и упомянул намеренно, что терминал готов к полноценной работе уже при первом запуске (после предварительной закачки необходимой истории и донастройки опций), всё же лично для себя подстраховываюсь и начинаю вести отчёт стабилизировавшегося поведения терминала лишь со второго запуска (вот из-за этой неуверенности, что отстроенные не-M1 таймфреймы надёжно легли на диск, а не зависают где-то в RAM и могут начать неуклюже и тяжело свопиться при недостатке памяти за счёт самой ОС, а тут и до повреждения недалеко). Так что по идее, индикатор не должен сбоить уже со второго запуска MT5. А у меня почему-то перестал только на десятый, хотя остальные девять запусков MT5 ничего уже не менялось, всё было однообразно.
 
x100intraday:

Ваш код, я так понимаю, суть не что иное, как предварительная синхронизация локальной истории с серверной? Если так, то у меня это давно в планах, но всё никак не успеваю добавить столь простой блок в свой код.

Не только синхронизация с сервером, еще и построение всех ТФ.

Загрузите библиотеку, вставьте 3 строки кода в свой индикатор, и посмотрите на результат. 

 

Не пойму, почему при тестировании индикатора функция ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0) возвращает ноль, тогда как видимых баров не меньше 30

(проверено функцией ChartGetInteger(0,CHART_VISIBLE_BARS,0)

На обычных графиках - все нормально, одно от другого отличается на 1, а при тестировании такая вот ерунда...

 

Как это побороть?  

 
Поясните, почему в данном простом индикаторе с двумя массивами - второй  имеет нулевой размер??

{Код удалил после ответа на вопрос чтобы не занимал место}



 
dimonsky: Поясните, почему в данном простом индикаторе с двумя массивами - второй имеет нулевой размер??
#property indicator_plots 2
 
avoitenko:
Спасибо!!!
 
Можно ли использовать тут второй аккаунт? Естественно не с целью набивать кредиты
 
Zeleniy:

Можно ли использовать тут второй аккаунт? Естественно не с целью набивать кредиты
Вполне естественный вопрос. Зачем? ))
Причина обращения: