#property library #property strict //+--------------------------------------------------------------------------------+ //| YZ_summer_time | //| YURAZ yzh@mail.ru | //| функция определяет летнее или зимнее время | //| перевод часов на зимнее время проводится в ночь последнего воскресенья октября | //| а летнее время включают в ночь последнего воскресенья марта | //| более надежного варианта вычисления летнего или зимнего времени не существует | //| возврат 0 - летнее время | //| возврат 1 - зимнее время | //+--------------------------------------------------------------------------------+ int YZ_summer_time(datetime pdt) { MqlDateTime dt; TimeToStruct(pdt,dt); int code=1; if(dt.mon>=11 || dt.mon<=2) // ЗИМА { code=1; } if(dt.mon>=4 && dt.mon<=9) // ЛЕТО { code=0; } datetime tSeek; MqlDateTime dtf; if(dt.mon==10) // октябрь { if(dt.day<25) // ночью в последнее воскресенье октября - переход на зимнее время code=0; // еще лето else { TimeToStruct(pdt,dtf); tSeek=StringToTime(IntegerToString(dtf.day_of_year)+".10.31 02:00"); // установим последний день октября while(dtf.day_of_week!=0) // // ищем первое воскресенье с конца { tSeek=tSeek-86400; TimeToStruct(tSeek,dtf); } if(pdttSeek) { code=0; // лето } else code=1; // зима } } return( code); } //+------------------------------------------------------------------+