|
//+------------------------------------------------------------------+ //|
显示北京时间,或者显示其他时区的时间
| //+------------------------------------------------------------------+ #property
copyright "复盘专用" #include <MTDinc.mqh> #property
indicator_chart_window
//默认显示北京时间,即东8区 extern int display_timezone=8;//东8区为北京时间.可选择的只从
-12到12,共25个 extern int myFontSize=20; extern color
myFontColor=Lime; extern int myXDISTANCE=6; extern int
myYDISTANCE=15; extern int myCORNER=2;
string objname="MTDRealTIME"; bool
isForex=true;//时候是外汇品种,影响到显示的时间,不是外汇就显示北京时间 int
iTimezone_Forex=2;//外汇时区
//+------------------------------------------------------------------+ //|
Custom indicator initialization
function
| //+------------------------------------------------------------------+
int init() {
isForex=isForex(Symbol());//是否是外汇
iTimezone_Forex=MTDTimezone(); return(0);
} //+------------------------------------------------------------------+ //|
Custom indicator iteration
function
| //+------------------------------------------------------------------+ int
start() { int
now_play_time=MTDTimeCurrent();//当前的播放时间,MTDTimeCurrent()函数来自包含文件MTDlib.mqh,用来获得当前最新时间
//Alert(theText);
if(isForex){
now_play_time=now_play_time+(display_timezone-iTimezone_Forex)*60*60;
string theText=TimeToStr(now_play_time,TIME_DATE|TIME_MINUTES);
if(display_timezone==8){
//由于复盘软件数据有采用夏令时,大概在每年4月初到10月底,时间快1小时.而北京时间不采用夏令时,所以在夏令时,要转换为北京时间需要-1小时
//注意此算法在冬令时和夏令时交接的那几天时间可能不准,因为每年的夏令时开始时间不是固定的日期,所以此算法为估算算法,可以让大部分时间准确
int
m=TimeMonth(now_play_time);
if(m>=4 &&
m<=10){
theText=TimeToStr(now_play_time-1*60*60,TIME_DATE|TIME_MINUTES);
}
theText=theText+"
(beijing)";//北京时间
}else{
if(display_timezone>=0){
theText=theText+" (UTC
+"+display_timezone+")";//
}else{
theText=theText+" (UTC
"+display_timezone+")";//
}
}
}else{
theText=theText+"
(beijing)";//北京时间,期货股票等直接显示北京时间
}
string
id=objname;
ObjectDelete(id); ObjectCreate( id,
OBJ_LABEL, 0, 0, 0 );
ObjectSetText(id,theText,myFontSize,"Arial",myFontColor);
ObjectSet( id, OBJPROP_XDISTANCE, myXDISTANCE
); ObjectSet( id, OBJPROP_YDISTANCE,
myYDISTANCE ); ObjectSet( id,
OBJPROP_BACK, true ); ObjectSet( id,
OBJPROP_CORNER, myCORNER);
return(0); }
//+------------------------------------------------------------------+ //|
Custom indicator deinitialization
function
| //+------------------------------------------------------------------+ int
deinit() { //----
ObjectDelete(objname); //---- return(0);
}
|