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

 
Roman Shiredchenko #:

коллеги - читаю статью работы со временем

https://www.mql5.com/ru/articles/599

пока не понятно- помогите - как программно (как то возможно через ф-ию)

написать это условие - чтобы год назад в общем  выйти на начало - прошлого года и его конец от текущего, чтобы избежать вот такого явного указания:


в общем надо программно выйти на начало и конец прошлого года - от текущего - это вставка в 1. условие и

текущую дату прошлого года, только - это вставка чтобы была во второе условие... 2.

для выполнения условий if...

первая секунда текущего года : MqlDateTime dt; TimeToStruct(TimeCurrent(),dt); dt.mon=0; dt.day=0;.../* обнуляешь всё кроме года*/ ; datetime thisyear=StructToTime(dt); 

для предыдущего года то-же самое, но отнимаешь от dt.year еденичку

 
Maxim Kuznetsov #:

первая секунда текущего года : MqlDateTime dt; TimeToStruct(TimeCurrent(),dt); dt.mon=0; dt.day=0;.../* обнуляешь всё кроме года*/ ; datetime thisyear=StructToTime(dt); 

для предыдущего года то-же самое, но отнимаешь от dt.year еденичку

cпс - то что от года отнимать 1 - это я знаю....

как (год текущий - 1), дни (01) и месяцы (01)  вставить в это условие (из структуры) и год -1 и мес 12 и день 31:

 1.     if(time[i]>=D'2022.01.01' && time[i]<=D'2022.12.31') 

...
2.       if(time[i]<=D'2022.09.26')
или в общем - для примера - как сравнивать переменные структуры?
 
Maxim Kuznetsov #:
первая секунда текущего года : MqlDateTime dt; TimeToStruct(TimeCurrent(),dt); dt.mon=0; dt.day=0;.../* обнуляешь всё кроме года*/ ;

Возможно, быстрее будет:  MqlDateTime dt, dt1; TimeToStruct(TimeCurrent(),dt); ZeroMemory(dt1); dt1.year=dt.year; datetime thisyear=StructToTime(dt1);

 
JRandomTrader #:

Возможно, быстрее будет:  MqlDateTime dt, dt1; TimeToStruct(TimeCurrent(),dt); ZeroMemory(dt1); dt1.year=dt.year; datetime thisyear=StructToTime(dt1);

Как сравнить переменные структуры?
 
lynxntech #:

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

пока вижу расчетную часть поставить после проверки datetime

   limit=MathMin(rates_total-prev_calculated-1,PERIOD_MN1/Period());
 
Roman Shiredchenko #:
Как сравнить переменные структуры?

Точно так же. Прошлый год: if(dt2.year==dt1.year-1)

Или:

MqlDateTime dt, dt1;
TimeToStruct(TimeCurrent(),dt);
ZeroMemory(dt1);
dt1.year=dt.year;
datetime thisyear=StructToTime(dt1);
dt1.year--;
datetime prevyear=StructToTime(dt1);
if(time[i]>=prevyear && time[i]<thisyear){...}
 
JRandomTrader #:

Точно так же. Прошлый год: if(dt2.year==dt1.year-1)

А. Спс. А дни и месяцы , также выделять по о дельным условиям? 

Спс. 1 ое  усл мне понятно.

А 2 ое когда меньше текущей даты?

Я еще посмотрю....

Я понял - сравнение происхтдит по полям структуры времени.



 
JRandomTrader #:

Точно так же. Прошлый год: if(dt2.year==dt1.year-1)

Или:

Спс
 
Roman Shiredchenko #:
А. Спс. А дни и месяцы , также выделять по о дельным условиям? 

Спс. 1 ое  усл мне понятно.

А 2 ое когда меньше текущей даты?
if( time[i] <= TimeCurrent() - thisyear + prevyear ){...}
 
JRandomTrader #:
Спс. Буду разбираться, чтобы понять.....
Причина обращения: