打印本文打印本文 关闭窗口关闭窗口

MT5程序代码讲解之——旋转的时间

作者:MT4 来源:cxh99.com 发布时间:2012年05月05日
  • MT5程序代码讲解之——旋转的时间

    //+-----------------------------------------------------+
    ytg_Time_exp.mq5 |
    //Copyright Yuriy Tokman |
    //yuriytokman@gmail.com |
    //+-----------------------------------------------------+
    #property copyright "Yuriy Tokman"
    #property link "yuriytokman@gmail.com"
    #property version "1.00"

    string obj_name = "ytg_Time";
    int tick = 0, tyk = 0;
    string name ;
    //+----------------------------------------------------+
    //|初始化函数(加载函数)|
    //+----------------------------------------------------+
    int OnInit()
    {
    //---
    EventSetTimer(1);//设置时间触发器,这正是MT5的新功能,每隔1秒触发一次OnTimer()函数。这样不用象 MT4那样只靠tick数据触发了。
    ChartRedraw();//刷新图表
    //---
    return(0);
    }
    //+-----------------------------------------------------+
    //|反初始化函数(卸载函数) |
    //+-----------------------------------------------------+
    void OnDeinit()
    {
    //---
    ObjectDelete(0,obj_name);//退出时删除物件。
    EventKillTimer();//如果在初始化函数中设置了EventSetTimer(),必须用这条语句在退出时取消时间触发。
    ChartRedraw();//刷新图表
    }
    //+-------------------------------------------------+
    //|实时函数
    //+------------------------------------------------+
    void OnTimer()
    {
    //---
    tick ++; if(tick>10) tick = 0;//使tick在0至10之间变化。
    tyk ++; if(tyk>=30) tyk = 0; //使tyk在0至30之间变化。
    datetime t1 = TimeGMT();//GMT 是格林威治标准时间的英文缩写,反回格林威治标准时间给 t1。
    datetime t2 = TimeCurrent();//返回最后访问的服务器时间给 t2 。
    datetime t3 = TimeLocal(); //返回当前电脑时间给 t3。
    color colir;//设置颜色变量。

    if(tyk>=0 && tyk<10){name = TimeToString(t1,TIME_SECONDS)+" (GMT)";colir = Blue;}//对每30秒的前10秒设置文本内容和颜色。
    if(tyk>=10 && tyk<20){name = TimeToString(t2,TIME_SECONDS)+"(current)";colir = Lime;} //对每30秒的中间10秒设置文本内容和颜色。
    if(tyk>=20 && tyk<=30){name = TimeToString(t3,TIME_SECONDS)+"(local)";colir = Red;} //对每30秒的后10秒设置文本内容和颜色。

    //调用LABEL函数创建物件
    Label(obj_name, //物件名称
    name, // 文本内容
    200+tick*10,//横坐标在200至300像素之间变化
    150+tick*10, //纵坐标在150至250像素之间变化
    9+tick*3,//字体在9至39号之间变化
    36*tick,//角度在0至360度之间变化
    "Tahoma",
    colir);

    ChartRedraw();
    }

    void Label(string obj_name, //对象名称
    string txt, // 文本内容
    int x, // 以像素为单位的横坐标
    int y, // 以像素为单位的纵坐标
    int font_size, // 字体大小
    int angle, //物件角度
    string font, // 字体名称
    color cir ) //字体颜色
    {
    ObjectCreate(0,obj_name,OBJ_LABEL,0,0,0);
    //ObjectSetInteger(0,obj_name,OBJPROP_COLOR,DeepSkyBlue);
    ObjectSetString(0,obj_name,OBJPROP_TEXT,name);
    ObjectSetInteger(0,obj_name,OBJPROP_XDISTANCE,x);
    ObjectSetInteger(0,obj_name,OBJPROP_YDISTANCE,y);
    ObjectSetInteger(0,obj_name,OBJPROP_FONTSIZE,font_size);
    ObjectSetDouble(0,obj_name,OBJPROP_ANGLE,angle);
    ObjectSetString(0,obj_name,OBJPROP_FONT,font);
    ObjectSetInteger(0,obj_name,OBJPROP_COLOR,cir);
    }
    这个EA运行后会在不同位置,不断变换大小、角度、颜色来显示三种形式的时间。

    代码讲解:bcsunwww
    MetaQuotes 官方网站俄文原文地址:http://codebase.mql4.com/ru/6023
    [ 此帖被bcsunwww在2009-10-02 09:07重新编辑 ]
打印本文打印本文 关闭窗口关闭窗口