RefreshRates() внутри OnTick() - страница 3

 

Задача: Обновление данных по инструменту во время выполнения OnTick(), позволяющее получить свежие котировки, которые возникают в то время,

пока экспертом обрабатывается последний тик.


Результаты: 

При обычной торговле в MT5 обновлять данные по инструменту можно в любой точке OnTick() без ограничений и любое количество раз.

При торговле в тестере MT5 обновить данные по инструменту внутри OnTick()  можно только один раз после каждой попытки проведения торговой операции.

При тестировании невозможно реализовать внутри OnTick() какие-либо процедуры, предусматривающие ожидание и получение новых цен

или данных по инструменту без проведения торговых операций.

 

Всем спасибо! Особенно to Valmars

 
MoneyJinn:

При тестировании невозможно реализовать внутри OnTick() какие-либо процедуры, предусматривающие ожидание и получение новых цен

или данных по инструменту без проведения торговых операций.

 

Попробуйте внутри OnTick организовать небольшой (скажем 100 итераций) цикл со слипом, скажем Sleep(100). Прогоните это дело в тестере с выводом в лог текущей цены из MarketWatch
 
stringo:
Попробуйте внутри OnTick организовать небольшой (скажем 100 итераций) цикл со слипом, скажем Sleep(100). Прогоните это дело в тестере с выводом в лог текущей цены из MarketWatch
 
MoneyJinn:

Что Вы хотите сказать?
 
MoneyJinn:

Когда я говорил про текущую цену из MarketWatch, я имел в виду организацию запросов внутри цикла типа SymbolInfoDouble(Symbol(),SYMBOL_BID); Это - очевидно.

Можно другим способом обновлять текущие данные, например при помощи CopyRates

А просто так Ваши локальные переменные никогда самостоятельно не обновятся

 
stringo:

Когда я говорил про текущую цену из MarketWatch, я имел в виду организацию запросов внутри цикла типа SymbolInfoDouble(Symbol(),SYMBOL_BID); Это - очевидно.

Можно другим способом обновлять текущие данные, например при помощи CopyRates

А просто так Ваши локальные переменные никогда самостоятельно не обновятся

Основная проблема разработчиков MT5 - отсутствие внимания к деталям.

Похоже, что для Вас свойства Вашего же терминала являются открытием.

 

Пара: EURUSD, Период М1, Режим: все тики.

void OnTick()
  {    
   MqlTick tick;
   for(int i=0;i<100;i++)
   {
   Sleep(1000);
   SymbolInfoTick(Symbol(),tick);
   Print(DoubleToString(tick.bid,_Digits));
   }
...

 Результат: 201108121.log

 

void OnTick()
  {    
   MqlTick tick;
   for(int i=0;i<100;i++)
   {
   Sleep(1000);
   SymbolInfoTick(Symbol(),tick);
   Print(DoubleToString(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits));
   }
...

 Результат: 201108122.log

 

void OnTick()
  {    
   MqlRates rates[];
   for(int i=0;i<100;i++)
   {
   Sleep(1000);
   ArraySetAsSeries(rates,true);
   CopyRates(Symbol(),0,0,1,rates);
   Print(DoubleToString(rates[0].close,_Digits));
   }
...

 Результат: 201108123.log

 
MoneyJinn:

Основная проблема разработчиков MT5 - отсутствие внимания к деталям.

Похоже, что для Вас свойства Вашего же терминала являются открытием.

 

Пара: EURUSD, Период М1, Режим: все тики.

 Результат: 201108121.log

 

 Результат: 201108122.log

 

 Результат: 201108123.log

 

Отсутствие внимания к деталям не является основной проблемой разработчиков. А вот Вы, похоже, утаили интересные детали. Вот лог аналогичного Вашему эксперта.

2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:00   OnTick  1.41733
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:01   1.41733
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:02   1.41733
...
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:39   1.41733
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:40   1.41733
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:01   OnTick  1.41732
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:02   1.41732
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:03   1.41733
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:04   1.41732
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:05   1.41736
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:06   1.41736
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:07   1.41737
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:08   1.41736
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:09   1.41737
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:10   1.41735
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:11   1.41735
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:12   1.41734
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:13   1.41735
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:14   1.41734
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:15   1.41737
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:16   1.41734
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:17   1.41734
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:18   1.41730
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:19   1.41727
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:20   1.41723
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:21   1.41722
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:22   1.41722
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:23   1.41723
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:24   1.41722
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:25   1.41724
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:26   1.41721
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:27   1.41717
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:28   1.41717
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:29   1.41714
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:30   1.41710
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:31   1.41709
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:32   1.41710
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:33   1.41710
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:34   1.41709
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:35   1.41711
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:36   1.41708
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:37   1.41704
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:38   1.41701
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:39   1.41701
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:40   1.41697
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:41   1.41696
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:42   1.41697
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:43   1.41696
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:44   1.41696
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:45   1.41698
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:46   1.41697
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:47   1.41696
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:48   1.41695
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:49   1.41693
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:50   1.41693
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:51   1.41692
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:52   1.41691
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:53   1.41690
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:54   1.41688
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:55   1.41688
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:56   1.41687
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:57   1.41686
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:58   1.41686
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:00:59   1.41686
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:00   1.41684
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:01   1.41683
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:02   1.41682
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:03   1.41680
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:04   1.41680
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:05   1.41679
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:06   1.41677
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:07   1.41676
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:08   1.41676
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:09   1.41677
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:10   1.41676
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:11   1.41678
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:12   1.41678
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:13   1.41677
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:14   1.41675
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:15   1.41674
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:16   1.41674
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:17   1.41672
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:18   1.41671
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:19   1.41671
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:20   1.41672
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:21   1.41671
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:22   1.41673
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:23   1.41673
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:24   1.41672
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:25   1.41670
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:26   1.41669
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:27   1.41669
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:28   1.41667
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:29   1.41666
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:30   1.41667
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:31   1.41667
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:32   1.41666
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:33   1.41668
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:34   1.41668
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:35   1.41667
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:36   1.41665
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:37   1.41664
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:38   1.41664
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:39   1.41662
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:40   1.41663
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:41   1.41662
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:42   OnTick  1.41663
2011.08.15 13:56:20     TestSleep (EURUSD,H1)   2011.04.01 00:01:43   1.41663

 

Судя по логам - проблема есть на самом первом тике, и мы её решим. Со второго тика всё, как и предполагалось 

 
stringo:

Отсутствие внимания к деталям не является основной проблемой разработчиков. А вот Вы, похоже, утаили интересные детали. Вот лог аналогичного Вашему эксперта.

Судя по логам - проблема есть на самом первом тике, и мы её решим. Со второго тика всё, как и предполагалось 

Вы слишком торопитесь. Если теперь поставите проверку на обновление после любого OrderSend() внутри OnTick(), то обнаружите еще один сюрприз.

 
MoneyJinn:

Вы слишком торопитесь. Если теперь поставите проверку на обновление после любого OrderSend() внутри OnTick(), то обнаружите еще один сюрприз.

Спасибо. Вот так совместно и решим проблему.
Причина обращения: