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

 

Мне вчера на работе поменяли комп с WindowsХР/32 на Win7/64. До этого нормально на работе торговал на МТ4, с хранилища обновлял коды и обратно фиксировал в хранилище. Теперь на 7-ке могу торговатъ на МТ4, данные прокси-сервера прописал новые, логин и пароль сообщества тоже прописаны. Проблема теперь в том, что с МетаЕдитора 4 не могу синхронизироватъ коды. В профиле галочка при "Подключить хранилище" есть.

Сегодня поменял пароль на сообществе, в другой папке установил второй МТ4, прописал прокси, логин и новый пароль - торговля идёт, все сервисы MQ вижу, но синхронизации с хранилищем нет, не могу подключится. Подскажите, где ещё может быть проблема.


 
paladin800:

Мне вчера на работе поменяли комп с WindowsХР/32 на Win7/64. До этого нормально на работе торговал на МТ4, с хранилища обновлял коды и обратно фиксировал в хранилище. Теперь на 7-ке могу торговатъ на МТ4, данные прокси-сервера прописал новые, логин и пароль сообщества тоже прописаны. Проблема теперь в том, что с МетаЕдитора 4 не могу синхронизироватъ коды. В профиле галочка при "Подключить хранилище" есть.

Сегодня поменял пароль на сообществе, в другой папке установил второй МТ4, прописал прокси, логин и новый пароль - торговля идёт, все сервисы MQ вижу, но синхронизации с хранилищем нет, не могу подключится. Подскажите, где ещё может быть проблема.


Переустановить терминал МТ4 с правами администратора и запускать терминал МТ4 в правами администратора. МТ4 в Vista/8/8.1 при таком способе видит и хранилище и папку с Вашими кодами и сохраняет все настройки графиков.
 
barabashkakvn:
Переустановить терминал МТ4 с правами администратора и запускать терминал МТ4 в правами администратора. МТ4 в Vista/8/8.1 при таком способе видит и хранилище и папку с Вашими кодами и сохраняет все настройки графиков.
Понятно. Я тут на работе в тихушку подрабатываю на Форексе, админ (надеюсь) не знает, так что с правами админа не протянет. Проблема не критична, буду через флешку работать. Благодарю за разъяснение.
 
paladin800:
Понятно. Я тут на работе в тихушку подрабатываю на Форексе, админ (надеюсь) не знает, так что с правами админа не протянет. Проблема не критична, буду через флешку работать. Благодарю за разъяснение.
Можно ещё арендовать VPS. Тогда через подключение к удалённому столу можно заходить и никаких проблем с правами администратора.
 
Ошибка компиляции, build 969
template<typename T>
T plus( T a, T b )      { return ( a + b ); }

template<typename T>
int f( T& array[], int i )
{
        return ( plus( ::ArraySize( array ), i ) );
}

void OnStart()
{
        int a[ 2 ];
        int b = 1;
        Print( f( a, b ));
}

Возникает потому, что в новом build 

template<typename T>
void g( T& array[] ) { Print( typename( ::ArraySize( array ))); }
void OnStart()
{
        int a[ 2 ];
        g( a ); //Результат: uint
}
uint ArraySize(...);
в то время как раньше было
 int ArraySize(...);
а кому помешал ?
int ArraySize(...);

  Зачем было менять при том что, справка молчит и такие изменения могут повлиять на вычисления?! и никто даже не заметит

 
A100:
Ошибка компиляции, build 969Возникает потому, что в новом build а кому помешал ?

  Зачем было менять при том что, справка молчит и такие изменения могут повлиять на вычисления?! и никто даже не заметит

Справка просто всегда немного запаздывает.  Конечно же uint для обозначения размера массива разумнее, поскольку отрицательным размер быть всё равно не может.  // а ulong был бы ещё лучше :)
 
Нелогичность еще и в том, что 
template<typename T>
void g( T& array[] )
{
        Print( typename( ::ArrayResize( array, 3 )));
}

void OnStart()
{
        int a[ 2 ];
        g( a ); //Результат: int
}

Получается, что у ArraySize поменяли, а у ArrayResize не - поменяли? А в чем принципиальная разница?

А разница в том, что

Возвращаемое значение

При успешном выполнении функция возвращает количество всех элементов, содержащихся в массиве после изменения размера;
в противном случае возвращает -1 и массив не меняет размеры.

Получается, что у  ArrayResize принципиально нельзя поменять возвращаемый тип (из-за '-1'). Ну если у ArrayResize нельзя поменять - зачем менять у ArraySize?

 

Такая ситуация. Нужно прогнать эксперт на паре лет EURNZD. Удалял уже историю по символу целиком, загружал заново - результат один:

HistoryCenter: 5240 bars imported in 'EURNZD60'

А это всего лишь сентябрь 2013. Мотать график дальше назад терминал не дает. Когда открываю history center и нажимаю Download, выводится сообщение "There are no new data for a symbol EURNZD". Фиг с ним, что написано неграмотно, но как в принципе котировки получить? Неужели у брокера нет истории? Брокер-то известный, по другим символам проблем таких не встречал.

P.S. Усё, вопрос снимается. После того как я плюнул на EURNZD и скачал GBPAUD, это чудо техники вдруг увидело новые данные и для EURNZD. Может кто будет в подобной ситуации - тогда не забывайте про "пляски с бубном" и необходимость настойчиво теребить терминал разными способами. ;-)

P.P.S. Вот сейчас опять такая же хрень началась с AUDNZD. Пришлось тупо подряд кучу раз нажимать Download, пока вдруг "оно" само не увидело-таки данные.

 
MetaDriver:
Справка просто всегда немного запаздывает.  Конечно же uint для обозначения размера массива разумнее, поскольку отрицательным размер быть всё равно не может.  // а ulong был бы ещё лучше :)

template<typename T>
void g( T& str ) { Print( typename( ::StringLen( str ))); }
void OnStart()
{
        string str = "ABC";
        g( str ); //Результат: int
}

 Длина строки тоже не может быть отрицательной, однако для обозначения длин/размеров - разумнее использовать int по одной простой причине, что функции (поиска, вычисления, и т.д.) в общем случае возвращают длину/размер, либо -1 в случае неудачи, что существенно упрощает обработку ошибок.

 
A100:
Ошибка компиляции, build 969
...
 Зачем было менять при том что, справка молчит и такие изменения могут повлиять на вычисления?! и никто даже не заметит

По поводу ArraySize я буквально на днях поднимал похожую проблемку на MQL4:  https://www.mql5.com/ru/forum/152471. Как я  понимаю, на MQL5 должно быть всё идентично этом плане.

А когда появился этот 969 билд?  Возможно там как-раз и учли моё обращение :)   По поводу этой проблемы в сервис-деске ответили, что причина была в некорректной работе оптимизатора, и что они поменяют тип на uint в новых билдах. Точнее по факту он и сейчас uint, просто недокументированно :)  И кстати для ArrayResize тоже будут менять на uint.  Я правда посоветовал им менять сразу на ulong, иначе в ближайшем будущем придётся вернуться к этой проблеме из-за нехватки 32-битного значения при хранения больших объёмов.

А что касается значения -1 при ошибке, то с этим проблем быть не должно, ибо:  (int)-1 = (uint)-1 = 0xFFFFFFFF = UINT_MAX, т.е. битовое представление одно и то же.  Правда операция сравнения уже даст другой результат.  Т.е. если в коде было так:

if (ArrayResize(...) < 0) ...

то станет некорректно.

Причина обращения: