//+------------------------------------------------------------------+
//| ProjectName |
//| Copyright 2012, CompanyName |
//| http://www.companyname.net |
//+------------------------------------------------------------------+
#property description "QQ:364191868 QQ群:3210497 定制指标与EA"
#property description "版本号:2016年2月8日 09:08:28"
#property description "通过追踪鼠标定位图表中的北京时间"
#property description "用于复盘检视图表中时间轴对应的北京时间,回顾所发生的状况。"
#property description "用于复盘检视图表中时间轴对应财经日历时间所发生的状况。"
#property strict
extern int 时间偏差 = 2;//时间偏差小时数修正//下面没有代入
extern color font_color = clrRed;//字体颜色
extern int font_size = 20;//字体大小
extern int corner = 0; //显示位置:0.左上角 1.右上角 2.左下角 3.右下角
extern int spread_distance_x = 25;//相对角落的X坐标
extern int spread_distance_y = 30;//相对角落的Y坐标
void OnInit()
{
//--- 启用 CHART_EVENT_MOUSE_MOVE 信息
ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,1);
}
//+------------------------------------------------------------------+
//|反初始化 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
ObjectDelete("北京时间");
ObjectDelete(0,"V Line");
Comment("");
}
//+------------------------------------------------------------------+
//| ChartEvent 函数 |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//--- 如果这是鼠标点击事件图表
if(id==CHARTEVENT_MOUSE_MOVE)
{
//--- 准备变量
int x =(int)lparam;
int y =(int)dparam;
datetime dt =0;
datetime dt2 =D'2001.01.01 02:00';//时间偏差在此修正,后面02表示2小时
datetime dt3 =D'2001.01.01 00:00';
//有些平台没有偏差不需要设计偏差就行,有些平台有偏差,与显示不符,需要人工输入变量进行修正。
//目标是显示的时间减去2小时,由于年月无法为0,所以只能采用2个变量进行抵消的方式,最后得出偏移2小时。
//求高手将此处进行简化,目标是可以自定义输入偏差小时数,然后变成时间变量代入加上进行显示。
//可以根据不同的平台人工修正时区偏差
//改好后发我的邮箱364191868@qq.com 多谢!!
double price =0;
int window=0;
//--- 依据日期/时间转换X和Y坐标
if(ChartXYToTimePrice(0,x,y,window,dt,price))
{
Comment(Hour(),"QQ群:3210497 北京时间:",TimeToString(dt-TimeGMTOffset()));
LabelCreate("北京时间",25,25,TimeToString(dt-TimeGMTOffset()));
if(ChartTimePriceToXY(0,window,dt,price,x,y))
{
Comment("QQ群:3210497 北京时间:",TimeToString(dt-dt2+dt3-TimeGMTOffset()));
LabelCreate("北京时间",25,25,TimeToString(dt-dt2+dt3-TimeGMTOffset()));
}
else
Print("return error code: ",GetLastError());
//--- 删除线
ObjectDelete(0,"V Line");
//--- 创建十字光标垂直线
ObjectCreate(0,"V Line",OBJ_VLINE,window,dt,price);
ChartRedraw(0);
}
else
Print("return error code: ",GetLastError());
Print("+--------------------------------------------------------------+");
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void LabelCreate(string As_0,int A_x_8,int A_y_12,string A_text_16="-",string A_fontname_28="Arial",int A_window_40=0)
{
//如果还没显示,则显示
ObjectCreate(As_0,OBJ_LABEL,A_window_40,0,0);//标签型文字
ObjectSet(As_0,OBJPROP_CORNER,corner);//角落1、2、3、4
ObjectSet(As_0,OBJPROP_XDISTANCE,spread_distance_x);//横坐标
ObjectSet(As_0,OBJPROP_YDISTANCE,spread_distance_y);//纵坐标
ObjectSetText(As_0,A_text_16,font_size,A_fontname_28,font_color);
}
//+------------------------------------------------------------------+
|