Скачать MetaTrader 5

ДО и ПОСЛЕ CopyBuffer(..)

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Статьи помогут закрепить твои знания. Заходи и читай!
Aleksey
2451
Aleksey 2010.08.26 02:42 

Какие проверки, условия, или задержки надо внести ДО и ПОСЛЕ CopyBuffer(), для того, чтоб, ГАРАНТИРОВАННО получить те 400(0) значений индикатора, которые необходимы сейчас(!), на семи(десяти) инструментах в максимально скоростных условиях(в цикле)?

А так же необходимые условия для других Copy.. 

Предлагаю обсудить. Я уже перегрелся...

Sergey Pavlov
8941
Sergey Pavlov 2010.08.26 08:43  

Перед копированием, надо получить ответ на вопрос: а на всём ли диапазоне рассчитан индикатор? Ведь для этого надо какое-то время, и если расчёт не закончен копировать рано! Я использую вот такую конструкцию:

   while(BarsCalculated(handle)<count){}
   CopyBuffer(handle,0,0,count,arr);
Vladimir Batrudinov
4924
Vladimir Batrudinov 2010.08.26 08:54  
DC2008:

Перед копированием, надо получить ответ на вопрос: а на всём ли диапазоне рассчитан индикатор? Ведь для этого надо какое-то время, и если расчёт не закончен копировать рано! Я использую вот такую конструкцию:

Для начала я думаю стоит проверить хендлы на инвалидность, а то в блоке инициализации может такой проверки и не быть... :)
Aleksey
2451
Aleksey 2010.08.26 23:35  
DC2008:

Перед копированием, надо получить ответ на вопрос: а на всём ли диапазоне рассчитан индикатор? Ведь для этого надо какое-то время, и если расчёт не закончен копировать рано! Я использую вот такую конструкцию:

и что, помогает такая конструкция?

Да и  с проверкой валидности у меня что-то не всегда работает... Бывает что хэндл =14, например, а возвращает CopyBuffer(..)=-1, Error=4807

2010.08.26 23:36:43 ME-V-v001 (EURUSD,M1) CSignals::Level CopyBuffer(EURCHF)=14, Copied=-1 Error 4807

 


 

Sergey Pavlov
8941
Sergey Pavlov 2010.08.27 06:12  
pronych:

и что, помогает такая конструкция?

А Вы попробуйте.
Aleksey
2451
Aleksey 2010.08.27 12:22  
DC2008:
А Вы попробуйте.
Попробовал, пока без ошибок. Благодарю за помощь. Надеюсь этого будет достаточно. Хотя бы для начала.
markerius
6
markerius 2015.10.01 21:52  

Я слегка модифицировал вашу идею, а то она частенько переходит в бесконечный цикл!

Кажется так будет лучше


 for (int retry = 0; retry < 5; retry++)
 {
    if (BarsCalculated(handle) < count)
    {
      Sleep (1000);
      continue;
    }
    else
    {
      break;
    }

 }

и дальше копируем

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий