您现在的位置:程序化交易>> 外汇现货>> MT5>> MT5知识>>正文内容

MT5程序代码讲解之——背景图片大放送 [MT4]

  • MT5程序代码讲解之——背景图片大放送
    MT5虽然还没有正式投放市场,但是通过测试人员编写的程序代码我们已经能够看到一些令人激动的新功能了。下面这个EA能够轮番播放存放于硬盘上的图片文件,做为K线图的背景画面。还是挺有趣的。
    //+-----------------------------------------------------+
    //| ytg_BITMAP_exp.mq5 |Copyright Yuriy Tokman |
    yuriytokman@gmail.com |
    //+-----------------------------------------------------+
    #property copyright "Yuriy Tokman"
    #property link "yuriytokman@gmail.com"
    #property version "1.00"

    input string name1 = "Tetris\\1.bmp"; // 带路径的图片文件
    input string name2 = "Tetris\\2.bmp"; //带路径的图片文件input int seconds = 2; //

    string _NAME = "ytg_BITMAP";

    int tick = 0;
    //+----------------------------------------------------+
    //| 初始化函数 |
    //+----------------------------------------------------+
    int OnInit()
    {ChartRedraw();//刷新图表
    EventSetTimer(seconds);//设置时间触发器,这正是MT5的新功能,每隔seconds秒,这里设为2秒,触发一次 OnTimer()函数。这样不用象 MT4那样只靠tick数据触发了。
    return(0);}

    //+-----------------------------------------------------+
    //|反初始化函数 |
    //+----------------------------------------------------+
    void OnDeinit()
    {
    EventKillTimer();//如果在初始化函数中设置了EventSetTimer(),必须用这条语句在退出时取消时间触发。
    ChartRedraw();//刷新图表
    //---
    ObjectDelete(0,_NAME);//删除做为背景的物件
    }
    //+------------------------------------------------------------------+
    //| 实时函数 |
    //+------------------------------------------------------------------+
    void OnTimer()
    {
    //---
    tick ++;//计次。
    if(tick == 2) Bitmap(_NAME,name1); //每触发2次调用第一幅图片做为背景。
    if(tick == 4){tick = 0;Bitmap(_NAME,name2);} //每触发4次调用第二幅图片做为背景。并把计次变量清0
    ChartRedraw();
    }
    //+--------------------------------------------------+
    void Bitmap ( string name, //对象名称
    string file, //文件路径
    int x = 1, // 以像素为单位的横坐标
    int y = 1) // 以像素为单位的纵坐标
    {
    if(ObjectFind(0,name)!=-1)ObjectDelete(0,name);//如存在同名物件予以删除。
    ObjectCreate(0,name,OBJ_BITMAP_LABEL,0,0,0,0,0);//建立名为name的位图文件。
    ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);//横坐标
    ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);//纵坐标
    ObjectSetInteger(0,name,OBJPROP_BACK,true);//设为显示背景
    ObjectSetString(0,name,OBJPROP_BMPFILE,file); //设置背景文件。
    }
    这个EA运行后会每4秒更换一次背景图片。
    代码讲解:bcsunwww
    MetaQuotes 官方网站俄文原文地址:http://codebase.mql4.com/ru/6026

【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容