Если таймер больше ни для чего не используется, его имеет смысл прибивать в MyOnInit. И назначение IsReadyToInit - не ясно: почему не
вставить в if просто проверку AccountInfoString(ACCOUNT_SERVER) на пустоту?
На случай, если произошло переключение на другой сервер во время работы.
Запускаю этот индикатор и перезагружаю Терминал. Индикатор в OnInit не видит название сервера.
Кто как это побеждает? Неужели только через таймер?
OnInit() в индикаторах штука капризная, я бы такие вещи в OnCalculate() проверял бы
intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{ staticstring AccServer = AccountInfoString(ACCOUNT_SERVER); //--- инициализация static переменных происходит до вызова OnInit(), так сказал @Ilyas , проверить бы это в индикаторах - не проверял
if(AccServer=="") AccServer = AccountInfoString(ACCOUNT_SERVER); //--- первый запуск и нет конекта, пробуем получить имя сервераelse
{ if(AccServer!=AccountInfoString(ACCOUNT_SERVER)) ; //--- конект с сервером уже был и было переключение на новый сервер
}
if(prev_calculated==0); //--- первый вызов индикатора или смена таймфрейма или подгрузка данных из истории....думаю тут тоже можно было AccServer проверить
Если Терминал не подключен
к серверу, то узнать название сервера штатными средствами, похоже, невозможно. Через WinAPI можно.
пролистал справку не нашел как получить полное имя файла с путями, а идея была открыть для чтения файл истории .hst и узнать папку в которой он лежит -
папка имя сервера
пролистал справку не нашел как получить полное имя файла с путями, а идея была открыть для чтения файл истории .hst и узнать папку в которой он
лежит - папка имя сервера
К сожалению, разработчики проигнорировали такие просьбы.
К сожалению, разработчики проигнорировали такие просьбы.
если для себя пишете, то можно сохранить в файл(глобальные переменные терминала) базу номеров счета ACCOUNT_LOGIN и по ним
определять сервер к какому подключены
К сожалению, разработчики проигнорировали такие просьбы.
Полагаю, должен сработать обход через созданный вручную линк на нужные объекты файловой системы внутри папки Files. Тогда можно использовать обход иерархии по FileFindFirst/Next и читать названия папок.
Если таймер больше ни для чего не используется, его имеет смысл прибивать в MyOnInit. И назначение IsReadyToInit - не ясно: почему не вставить в if просто проверку AccountInfoString(ACCOUNT_SERVER) на пустоту?
На случай, если произошло переключение на другой сервер во время работы.
Прошу помощи по индикатору в MT4.
Запускаю этот индикатор и перезагружаю Терминал. Индикатор в OnInit не видит название сервера.
Кто как это побеждает? Неужели только через таймер?
OnInit() в индикаторах штука капризная, я бы такие вещи в OnCalculate() проверял бы
OnInit() в индикаторах штука капризная, я бы такие вещи в OnCalculate() проверял бы
Такой способ не сработает на выходных. Окончательно пришел к этому
Если Терминал не подключен к серверу, то узнать название сервера штатными средствами, похоже, невозможно. Через WinAPI можно.
Такой способ не сработает на выходных. Окончательно пришел к этому
по моему Ваш код будет переключение ТФ воспринимать как конект к новому серверу
проверил, обрывы связи Ваш кон не видит
а мой видит
вот этот принт видит обрыв связи
{ if(prev_calculated==0) Print("prev_calculated==0"); if (!IsOnInit()) return(0); return(rates_total); }по моему Ваш код будет переключение ТФ воспринимать как конект к новому серверу
Смена ТФ вызывает другую копию индикатора.
Не фиксирую обрывы связи, т.к. не нужны.
Если Терминал не подключен к серверу, то узнать название сервера штатными средствами, похоже, невозможно. Через WinAPI можно.
пролистал справку не нашел как получить полное имя файла с путями, а идея была открыть для чтения файл истории .hst и узнать папку в которой он лежит - папка имя сервера
пролистал справку не нашел как получить полное имя файла с путями, а идея была открыть для чтения файл истории .hst и узнать папку в которой он лежит - папка имя сервера
К сожалению, разработчики проигнорировали такие просьбы.
К сожалению, разработчики проигнорировали такие просьбы.
если для себя пишете, то можно сохранить в файл(глобальные переменные терминала) базу номеров счета ACCOUNT_LOGIN и по ним определять сервер к какому подключены
К сожалению, разработчики проигнорировали такие просьбы.
Полагаю, должен сработать обход через созданный вручную линк на нужные объекты файловой системы внутри папки Files. Тогда можно использовать обход иерархии по FileFindFirst/Next и читать названия папок.
Здравствуйте, всем.
Мне нужн оффициалный MetaTrader 4 Client Terminal build 1220
где я могу скачать? я искал во многих сайтах.
если возмоно оставте ссылку к инсталятор.
извиняюсь за простой может и быть не тот вопрос.
мне не надо алпари мт 4 или еще что.
если вопрос не тот тогда дайте мне ссылку к ДОК чтоб я понял что на самом деле нужно.
.