Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2710

 
ANDREY #:
Спасибо. То есть если позиции закрылись сегодня, но открылись не сегодня .... тогда не распечатает. Мне это не подходит. Мне нужно вычислять время открытия закрытых позиций .... При этом время открытия закрытой позиции  может быть в любой день.

Вот в этом как раз и поможет идентификатор позиции.

 
Alexey Viktorov #:

Вот в этом как раз и поможет идентификатор позиции.

Спасибо

 
Aleksandr Slavskii #:

Понятно, в код даже не заглянул.

Удачи в освоении MQL оно будет долгим.

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

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

void OnTick()//    /**/
{
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);
}
}
}
}
 
Есть ли возможность объявлять переменные в одной области видимости, а обращаться к ним в другой области видимости?
 
Andrei Sokolov #:
Есть ли возможность объявлять переменные в одной области видимости, а обращаться к ним в другой области видимости?
Объявить на глобальном уровне программы (перед блоком инициализации). Тогда будут видны из любого места кода.
 
Vitaly Murlenko #:
Объявить на глобальном уровне программы (перед блоком инициализации). Тогда будут видны из любого места кода.

Спасиб, но это и так понятно. Интересует ответ на вопрос в виде как есть.

пс - объявлять можно в любом месте где удобно, не обязательно перед блоком инициализации.

 
Andrei Sokolov #:
Есть ли возможность объявлять переменные в одной области видимости, а обращаться к ним в другой области видимости?

Переменная, объявленная в одной области видимости, не видна в другой области.

Для чего нужно? Без контекста не понятно

 
Artyom Trishkin #:
Для чего нужно? Без контекста не понятно
чтоб объявленные внутри функции переменные были доступны по всему коду.
 
Andrei Sokolov #:
чтоб объявленные внутри функции переменные были доступны по всему коду.

Моветон какой-то.

Зачем?

Это говорит о неправильном структурировании.

 
Artyom Trishkin #:

Моветон какой-то.

Зачем?

Это говорит о неправильном структурировании.

В роботе такая панель, в ней много полей ввода. Имена полей ввода формируются непосредственно перед созданием объекта, в котором содержится номер строки. 

В общем чтоб не писать отдельно список нужных имен вне функции.


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

В общем если можно было бы как-то "глобально" объявить переменную внутри, то мне было-бы удобно в подобных ситуациях.