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

 
JRandomTrader #:

На практике, bid и ask, полученные из SymbolInfoTick и из стакана, могут отличаться.

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

или есть другая схема?

 
Alexey Viktorov #:

Я никого не агитирую. Хотите пишите так как вам нравится. Зачем вы второй раз указываете на то, что в тестере не работает???

OnChartEvent  в тестере работать не может в принципе. И ЧТО???

Индикатор-шпион прекрасно работает в тестере, обеспечивая идентичные результаты тестирования мультивалютных советников при запуске на любом инструменте.

 
Maxim Kuznetsov #:
на сервере всё равно OnBook возникает раньше

А в советнике почему-то после соответствующего OnTick.

 

Ошибки при отправке уведомлений из терминала MT5 и МТ4. 

В журнале MT5:

2024.10.04 15:46:00.232 Notifications send request failed (raw - read failed, 0 error, 1 bytes needed)

В журнале MT4:

2024.10.04 15:53:42.219 Notifications: 'Test message from  ......  not sent to .......

2024.10.04 15:53:42.219 Notifications: failed send request [0] notify.mql5.net:443 failed


 
Alexey Viktorov #:

Зачем вы второй раз указываете на то, что в тестере не работает???

OnChartEvent  в тестере работать не может в принципе. И ЧТО???

1. Потому, что стартовый вопрос был связан с тестером.

2.  OnChartEvent работает в тестере, но с ограничениями.

 
Как у такой структуры заменить массив на вектор?
struct DATA
{
  double Array[3]; // Здесь нужен вектор.
};
 

Господа, я вчера обновил МТ5 до 4585 и если раньше было UTC 0, то теперь один показывает UTC 0, другой - UTC +3, 3й - UTC +2 

и как мне теперь всё это безобразие вернуть к UTC 0??? Дайте функцию выбора времени в терминале; 

 
JRandomTrader #:

Поддерживаю.

Кусок кода для поиска bid и ask в стакане:

Всё гораздо проще.

SymbolInfoInteger(_Symbol, SYMBOL_TICKS_BOOKDEPTH);

Максимальное количество показываемых заявок в стакане. По моим наблюдениям и как правило это чётное количество. Следовательно SYMBOL_TICKS_BOOKDEPTH/2 это заявки BUY и SYMBOL_TICKS_BOOKDEPTH/2-1 будут заявки SELL. Те самые которые вы назвали ценами Bid и Ask

Но у меня есть другая проблема.

Подписка на стакан проходит без ошибок, а в OnBookEvent() проходят не все символы. Почему не проходят, как определить причину?

 
fxsaber #:
Как у такой структуры заменить массив на вектор?

Не понял, нужен вектор или массив векторов. Но имхо, оба варианта сделать несложно:

#define _PRINT(d) (::Print(#d," = ",d))
//+------------------------------------------------------------------+
//| Structure                                                        |
//+------------------------------------------------------------------+
struct DATA1
  {
   //double Array[3]; // Здесь нужен вектор.
   vector            Vc;
  };
//+------------------------------------------------------------------+
//| Structure                                                        |
//+------------------------------------------------------------------+
struct DATA2
  {
   // Сделаем массив векторов.
   vector            Vc[3];
  };
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   /*
     1)
     struct DATA1
       {
        vector Vc;
       };
   */
   DATA1 data1;
   data1.Vc = vector::Full(3, 1.11);
   _PRINT(data1.Vc);
   /*
      2)
      struct DATA2
        {
         vector Vc[3];
        };
   */
   DATA2 data2;
   for(int v_idx = 0; v_idx < 3; v_idx++)
      data2.Vc[v_idx] = vector::Full(3, (v_idx + 1) * 1.33);
   _PRINT( data2.Vc[0]);
   _PRINT( data2.Vc[1]);
   _PRINT( data2.Vc[2]);
  }
//+------------------------------------------------------------------+

Тогда в журнале:

2024.10.07 17:06:33.465 b1 (AFLT,H1)    data1.Vc = [1.11,1.11,1.11]
2024.10.07 17:06:33.465 b1 (AFLT,H1)    data2.Vc[0] = [1.33,1.33,1.33]
2024.10.07 17:06:33.465 b1 (AFLT,H1)    data2.Vc[1] = [2.66,2.66,2.66]
2024.10.07 17:06:33.465 b1 (AFLT,H1)    data2.Vc[2] = [3.99,3.99,3.99]
 
Периодично после выходных мт4 не соединяется с сервером. После перезагрузки мт4 соединяется. И вот если не просыпаться в начале дня, а например в 6 утра, то цены могут уйти уже далеко, а советник не закрыл вовремя так как не было связи с сервером. В итоге потери из за кого, Метаквотовцев? Как решить данную проблему?