ANDREY #: Спасибо. То есть если позиции закрылись сегодня, но открылись не сегодня .... тогда не распечатает. Мне это не подходит. Мне нужно вычислять время открытия закрытых позиций .... При этом время открытия закрытой позиции может быть в любой день.
Вот в этом как раз и поможет идентификатор позиции.
Спасибо .Не совсем так.... сначала написал, а потом заглянул. Но я решил творчески подойти ко всему что мне посоветовали и в конечном итоге я придумал свой код. Но благодаря Вам и другим , я расширил свой кругозор. А это , как мне кажется, поможет мне сделать освоение пятерки не бесконечно долгим.
Вот мой код. Возможно он супер неправильный с точки зрения профессионала... Но он делает все что мне нужно. И , как мне кажется, намного короче вариантов, которые мне предлагали
voidOnTick()// /**/
{
Tik++;
if (Tik==1) start=TimeCurrent();// --- определение начала требуемой торговой историиint hour = (int)(TimeCurrent() / 3600) % 24;// час if (hour!=Z) // все вычисления делаем однократно 1 раз в час
{
Z=hour;
datetime end=TimeCurrent(); // --- определение конца требуемой торговой историиHistorySelect(start,end);//--- загрузим в кэш программы нужный интервал торговой историиint history_Deals=HistoryDealsTotal();//--- получим количество сделок в историиfor( i;i<history_Deals;i++)//--- теперь пробежим по всем сделкам Итератор i я сделал глобальным что бы не повторять уже сделанные выисления
{
if (HistoryDealGetDouble(HistoryDealGetTicket(i),DEAL_PROFIT)>0)// если сделка СЕЛ закрыла другую сделку БАЙ по ТП
{
// Вычисляем время открытия сделки которая закрылась по ТП (то есть БАЙ)
To=TimeToString(HistoryOrderGetInteger(HistoryDealGetInteger(HistoryDealGetTicket(i),DEAL_POSITION_ID),ORDER_TIME_SETUP),TIME_DATE|TIME_SECONDS);
// Вычисляем время открытия сделки которая закрыла сделку БАЙ по ТП (то есть СЕЛ)
Tz=TimeToString(HistoryDealGetInteger(HistoryDealGetTicket(i),DEAL_TIME),TIME_DATE|TIME_SECONDS);
Print("---Ticket СЕЛ/БАЙ " ,HistoryDealGetTicket(i)," / ",HistoryDealGetInteger(HistoryDealGetTicket(i),DEAL_POSITION_ID)," == i == ", i," == ТП == ",DoubleToString(HistoryDealGetDouble(HistoryDealGetTicket(i),DEAL_PROFIT),0)," == ВР. ОТКРЫТИЯ БАЙ/СЕЛ == ", To," / ", Tz);
}
}
}
}
В роботе такая панель, в ней много полей ввода. Имена полей ввода формируются непосредственно перед созданием объекта, в котором содержится номер строки.
В общем чтоб не писать отдельно список нужных имен вне функции.
Но тут больше вопрос не в том что "зачем", а можно такое сделать или нет.
В общем если можно было бы как-то "глобально" объявить переменную внутри, то мне было-бы удобно в подобных ситуациях.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Спасибо. То есть если позиции закрылись сегодня, но открылись не сегодня .... тогда не распечатает. Мне это не подходит. Мне нужно вычислять время открытия закрытых позиций .... При этом время открытия закрытой позиции может быть в любой день.
Вот в этом как раз и поможет идентификатор позиции.
Вот в этом как раз и поможет идентификатор позиции.
Спасибо
Понятно, в код даже не заглянул.
Удачи в освоении MQL оно будет долгим.
Спасибо .Не совсем так.... сначала написал, а потом заглянул. Но я решил творчески подойти ко всему что мне посоветовали и в конечном итоге я придумал свой код. Но благодаря Вам и другим , я расширил свой кругозор. А это , как мне кажется, поможет мне сделать освоение пятерки не бесконечно долгим.
Вот мой код. Возможно он супер неправильный с точки зрения профессионала... Но он делает все что мне нужно. И , как мне кажется, намного короче вариантов, которые мне предлагали
Есть ли возможность объявлять переменные в одной области видимости, а обращаться к ним в другой области видимости?
Объявить на глобальном уровне программы (перед блоком инициализации). Тогда будут видны из любого места кода.
Спасиб, но это и так понятно. Интересует ответ на вопрос в виде как есть.
пс - объявлять можно в любом месте где удобно, не обязательно перед блоком инициализации.
Есть ли возможность объявлять переменные в одной области видимости, а обращаться к ним в другой области видимости?
Переменная, объявленная в одной области видимости, не видна в другой области.
Для чего нужно? Без контекста не понятно
Для чего нужно? Без контекста не понятно
чтоб объявленные внутри функции переменные были доступны по всему коду.
Моветон какой-то.
Зачем?
Это говорит о неправильном структурировании.
Моветон какой-то.
Зачем?
Это говорит о неправильном структурировании.
В роботе такая панель, в ней много полей ввода. Имена полей ввода формируются непосредственно перед созданием объекта, в котором содержится номер строки.
В общем чтоб не писать отдельно список нужных имен вне функции.
Но тут больше вопрос не в том что "зачем", а можно такое сделать или нет.
В общем если можно было бы как-то "глобально" объявить переменную внутри, то мне было-бы удобно в подобных ситуациях.