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

 
fxsaber:

Вы не поняли. Ищется, действительно, на любом Терминале. Но зайти на счет могу только на родном. На другом - нет.

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

1) На неподключающемся терминале раньше делали подключения(успешные или неуспешные) к серверу Swissquote-Server?

2) Зайдите в окно открыти счета, введите "Swissquote-Server", нажмите Enter, дождитесь успешной отработки и попробуйте снова подключиться

3) Это переинсталлированный/новый/неиспользованный компьютер? Какая операционка и стоят ли апдейты?

 
Renat Fatkhullin:

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

1) На неподключающемся терминале раньше делали подключения(успешные или неуспешные) к серверу Swissquote-Server?

Не делал.

2) Зайдите в окно открыти счета, введите "Swissquote-Server", нажмите Enter, дождитесь успешной отработки и попробуйте снова подключиться

Именно так и делаю всегда, когда нужно подключиться в серверу, которого не было в списке. Сервер в списке, коннекта нет.

3) Это переинсталлированный/новый/неиспользованный компьютер? Какая операционка и стоят ли апдейты?

Родной Терминал.

2020.03.26 08:05:40.967 Terminal        Swissquote Bank MT5 Client Terminal x64 build 2368 started for Swissquote Bank SA
2020.03.26 08:05:40.969 Terminal        Windows 7 Service Pack 1 build 7601, Intel Core i7-2700K  @ 3.50GHz, 7 / 15 Gb memory, 4 / 29 Gb disk, IE 11, Admin, GMT+2
2020.03.26 08:05:40.969 Terminal        C:\Program Files\Swissquote Bank MT5 Client Terminal


Чужой Терминал.

2020.03.26 08:06:51.678 ICMarkets - MetaTrader 5 x64 build 2368 started for International Capital Markets Pty Ltd.
2020.03.26 08:06:51.679 Windows 7 Service Pack 1 build 7601, Intel Core i7-2700K  @ 3.50GHz, 7 / 15 Gb memory, 4 / 29 Gb disk, IE 11, Admin, GMT+2
2020.03.26 08:06:51.679 C:\Program Files\ICMarkets - MetaTrader 5


Запускается на одной и той же машине. Если уничтожить config-папку, то коннект идет. Но тогда потеряю данные всех остальных счетов на исследовательском Терминале.


ЗЫ Можете мне в ЛС сообщить IP-адрес сервера, чтобы я попробовал напрямую?

 
fxsaber:

Не делал.

Именно так и делаю всегда, когда нужно подключиться в серверу, которого не было в списке. Сервер в списке, коннекта нет.

Родной Терминал.


Чужой Терминал.


Запускается на одной и той же машине. Если уничтожить config-папку, то коннект идет. Но тогда потеряю данные всех остальных счетов на исследовательском Терминале.


ЗЫ Можете мне в ЛС сообщить IP-адрес сервера, чтобы я попробовал напрямую?

У меня всё подключилось без проблем:

2020.03.26 13:34:06.558 Network new demo account '6036452' opened on Swissquote-Server
2020.03.26 13:34:21.308 Network '8550475': disconnected from MetaQuotes-Demo
2020.03.26 13:34:22.540 HistoryCenter   delete old files from E:\MetaQuotes\MetaTrader 5\bases\Swissquote-Server\history\AEP, last access time 2018.03.02 18:42
2020.03.26 13:34:23.588 Experts automated trading is disabled because the account has been changed
2020.03.26 13:34:23.946 Network '6036452': authorized on Swissquote-Server
2020.03.26 13:34:23.946 Network '6036452': previous successful authorization performed from 176.49.173.218 on 2020.03.26 07:34:05
2020.03.26 13:34:25.751 Network '6036452': terminal synchronized with Swissquote Bank SA
2020.03.26 13:34:25.751 Network '6036452': trading has been enabled - hedging mode
2020.03.26 13:34:26.843 Network '6036452': scanning network for access points
2020.03.26 13:35:01.961 Network '6036452': scanning network finished
 
Artyom Trishkin:

У меня всё подключилось без проблем:

Да, на демо заходит без проблем.

2020.03.26 08:42:07.401 new demo account '6036453' opened on Swissquote-Server
2020.03.26 08:42:09.188 '6036453': authorized on Swissquote-Server


На реал - нет.

2020.03.26 08:42:40.551 '6036453': disconnected from Swissquote-Server
2020.03.26 08:42:41.418 'xxxxxxx': no connection to Swissquote-Server
 
fxsaber:

Да, на демо заходит без проблем.


На реал - нет.

Там было два сервера:

Я демо создавал на первом.

Может реал на втором?

 
Artyom Trishkin:

Там было два сервера:

Я демо создавал на первом.

Аналогично.

Может реал на втором?

На втором другой торговый сервер.

 

Ребята помогите пожалуйста!

Не давно начал программировать, у меня появилось такие ошибки, подскажите это из-за чего...

1. Я использовал MarketInfo(Symbol(),MODE_TICKVALUE), для пары EURUSD в тестере даёт число 0,01 а в терминале 1, это почему?

2. iClose,iOpen,iHigh,iLow иногда выдаёт 0, при shift =1, как исправить?


Спасибо

 

По прежнему не дает покоя тема скорости работы ArrayResize()+reserve.
На этот раз вопрос касается массивов примитивных типов данных.

#define K 1000
#define M (1000 * K)

#define   SpeedTest(test_count,msg,EX_pref, EX_test, EX_post) {         \
               uint result = 0; ulong count=test_count;                 \
               for(ulong ii=0;ii<count&&!_StopFlag;ii++){               \ 
                   EX_pref                                              \
                   uint start=GetTickCount();                           \
                   EX_test                                              \
                   result += GetTickCount() - start;                    \ 
                   EX_post                                              \
               }                                                        \
               printf("%-60s: loops=%i ms=%u",msg,count,result);}
                                              
class A{
public:
   int data;
};


template<typename T>
void test1(const int test_count, const int array_size){
   T class_array[];
   T tmp[];
   
   SpeedTest(
      test_count, StringFormat("Test %s ArrayResize all", typename(T)),
      {}
      ,
      {
         ArrayResize(class_array, array_size);
         for(int i = 1; i <= array_size; i++){
            ArrayResize(class_array, array_size, i);
            class_array[i-1] = NULL;
         }
      },
      {            
         ArraySwap(tmp, class_array);
         ArrayFree(tmp);
      }
   )
};

template<typename T>
void test2(const int test_count, const int array_size){
   T class_array[];
   T tmp[];
   
   SpeedTest(
      test_count, StringFormat("Test %s ArrayResize one by one with reserved memory", typename(T)),
      {},
      {
         ArrayResize(class_array, array_size);         
         for(int i = 1; i <= array_size; i++){
            ArrayResize(class_array, i, i);
            class_array[i-1] = NULL;
         }
      },   
      {            
         ArraySwap(tmp, class_array);
         ArrayFree(tmp);
      }
   )
};

 


void OnStart()
{
  const int test_count = 1;
  const int array_size = 20*K*K;  
  
   printf("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
   test1<int>(test_count, array_size);              // Avg time: release( 120) / debug( 155)
   test2<int>(test_count, array_size);              // Avg time: release( 205) / debug( 235)
   test1<int>(test_count, array_size);
   test2<int>(test_count, array_size);
   test1<int>(test_count, array_size);
   test2<int>(test_count, array_size);
   test1<int>(test_count, array_size);
   test2<int>(test_count, array_size);
   test1<int>(test_count, array_size);
   test2<int>(test_count, array_size);
   
   printf("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
   test1<double>(test_count, array_size);           // Avg time: release( 155) / debug( 190)
   test2<double>(test_count, array_size);           // Avg time: release( 250) / debug( 260)
   test1<double>(test_count, array_size);
   test2<double>(test_count, array_size);
   test1<double>(test_count, array_size);
   test2<double>(test_count, array_size);
   test1<double>(test_count, array_size);
   test2<double>(test_count, array_size);
   test1<double>(test_count, array_size);
   test2<double>(test_count, array_size);
   
   printf("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
   test1<A*>(test_count, array_size);              // Avg time: release( 190) / debug( 200)
   test2<A*>(test_count, array_size);              // Avg time: release( 330) / debug( 340)
   test1<A*>(test_count, array_size);
   test2<A*>(test_count, array_size);
   test1<A*>(test_count, array_size);
   test2<A*>(test_count, array_size);
   test1<A*>(test_count, array_size);
   test2<A*>(test_count, array_size);
   test1<A*>(test_count, array_size);
   test2<A*>(test_count, array_size);
}

По сравнению с прошлой версией, код был немного улучшен:
- для обоих тестов ArrayResize гарантированно вызывается одинаковое число раз, ранее оптимизатор вносил свой вклад...
- из подсчета времени выполнения исключено время на освобождение массивов - ArrayFree;


Для примитивных типов данных ArrayResize()+reserve выполняется более чем 3 раз медленнее чем обычный ArrayResize() (205 ms vs 65 ms). 
Это очень много, так для Generic\ArrayList.mqh на 20М вызовах CArrayList::Add скорость работы без резервирования памяти и с резервированием отличаются в 1.85 раза  (170 ms vs 95 ms).
Что-то тут явно то.

Можно ли как-то улучшить скорость работы для примитивных типов функциональности ArrayResize()+reserve?
На чем там могут быть такие большие потери?

Понимаю, что реальность может быть намного сложнее, но видится всего пару проверок влияющих на результат выполнения:

IsDynamic == true
IsIndexBuffer == false
IsSetAsSerrias == false
new_size > size
new_size < capacity
IsFundamental == true (или конструктор и деструктор == 0)

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

 
fxsaber:

Да, на демо заходит без проблем.

На реал - нет.

2020.03.26 08:42:41.418 'xxxxxxx': no connection to Swissquote-Server

Добрый день,

1. На терминале (исследовательском) где не проходит подключение к реальному аккаунту в списке счетов этот аккаунт присутствует?

То есть отображается ли этот xxxxxxx аккаунт в навигаторе:


2. Если аккаунт xxxxxxx есть, то отображается ли он с именем YYYYYY после двоеточия (а не только в виде числа)?

3. Если аккаунт xxxxxxx есть, то если его удалить (в навигаторе через команду меню Delete) и по новой подключиться, то подключение проходит?


Спасибо

 
Anton:

1. На терминале (исследовательском) где не проходит подключение к реальному аккаунту в списке счетов этот аккаунт присутствует?

То есть отображается ли этот xxxxxxx аккаунт в навигаторе:

Отображается xxxx.

2. Если аккаунт xxxxxxx есть, то отображается ли он с именем YYYYYY после двоеточия (а не только в виде числа)?

Нет YYYY и нет двоеточия.

3. Если аккаунт xxxxxxx есть, то если его удалить (в навигаторе через команду меню Delete) и по новой подключиться, то подключение проходит?

Получилось!


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


Спасибо!


ЗЫ В тему.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 2280

fxsaber, 2020.02.19 11:32

Если при подключении к существующему торговому счету указать неправильное имя торгового сервера, то счет перемещается в Навигаторе так, что можно подумать, что он просто пропал.


При логине на MetaQuotes-Demo укажите адрес сервера MetaQuotes-Demo2. Увидите, что произойдет в Навигаторе. Просьба, к существующим счетам применять такое правило только после удачного соединения.

Строка для поиска: Uluchshenie 005.
Причина обращения: