【漆天编程】Mql4语言编程教程--如何自定义图表背景图片

【注】本文于2015年首发于我本人的QQ空间(https://user.qzone.qq.com/80364276/blog/1439353992),刚刚又有人问到这个问题,我就把这篇文章发到这里来了,希望更多的人看到,并且学会怎样在K线图上面显示背景图,并且还能随意修改背景图片。

 

MT4越来越花哨了,MT4图表上面都可以显示图片了,甚至还可以玩俄罗斯方块和扫雷了。
我今天教大家如何自定义图表背景图片,我通过一个指标例子告诉大家怎么写代码,这个指标的功能就是在MT4任意一个图表上面显示一张图片,点击图片就会切换到另一张,用的是两张图片随意切换。
显示图片的原理是创建label对象,过去label对象只能显示文字,可以设置大小,位置,颜色等,自从MT4升级到build600之后,label对象开始可以显示图片了,而且还做成了按钮,可以实现按下按钮显示一张图片,抬起按钮显示另一张图片。
效果如图:

 





指标程序代码如下:
我写了尽可能详细的注释,有一点MQL4基础的,通过看注释应该就能够明白这是怎么实现的,有不明白的,可以单独来问我。 
注意:直接复制下面的代码后,还需要准备两张图片,分别命名为p11w.bmp和\p12w.bmp并存放到MT4的数据文件夹\MQL4\Images下面,你的指标才可能正常运行。
 //+------------------------------------------------------------------+

//|                                             自定义图表背景图片.mq4 |

//|               Copyright 2015, MetaQuotes Software Corp. |

//|                                                               QQ:80364276 |

//+------------------------------------------------------------------+

#property copyright "Copyright 2015, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#property strict

#property indicator_chart_window

string label_name="p11w_label";          // 设定OBJ_BITMAP_LABEL对象的名称

string p11w      ="\\Images\\p11w.bmp";  // 指定图片文件的路径,位于MT4的数据文件夹\MQL4\Images\p11w.bmp

string p12w      ="\\Images\\p12w.bmp";  // 指定图片文件的路径,位于MT4的数据文件夹\MQL4\Images\p12w.bmp

 

//+------------------------------------------------------------------+

//| 自定义指标初始化函数                                             |

//+------------------------------------------------------------------+

int OnInit()

  {

  //--- 首选在图上搜索是否有我们创建的对象,如果没有,那么就创建

   if(ObjectFind(0,label_name)<0)

     {

      //--- 生成图像标签对象

      bool created=ObjectCreate(0,label_name,OBJ_BITMAP_LABEL,0,0,0);

      if(created)

        {

         //--- 设置对象的位置,在左上角,意思就是对象的(0,0)坐标在左上角

         ObjectSetInteger(0,label_name,OBJPROP_CORNER,CORNER_LEFT_UPPER);

         //--- 设置对象的x,y坐标

         ObjectSetInteger(0,label_name,OBJPROP_XDISTANCE,0);

         ObjectSetInteger(0,label_name,OBJPROP_YDISTANCE,0);

         //--- 重置错误代码为0

         ResetLastError();

         //--- 设置这个图像标签对象被按下的时候显示的图片为p11w

         bool set=ObjectSetString(0,label_name,OBJPROP_BMPFILE,0,p11w);

         //--- 重置错代码为0    

         ResetLastError();

         //--- 设置这个图像标签对象被松开按键的时候显示的图片为p12w

         set=ObjectSetString(0,label_name,OBJPROP_BMPFILE,1,p12w);

         //--- 发送一个命令,让图表上面这个对象自动立即重绘

         ChartRedraw(0);

        }

      else

        {

         //--- 如果对象创建失败,给出提醒

         PrintFormat("创建图像标签对象失败,错误代码 %d",GetLastError());

        }

     }

 

//---

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Custom indicator iteration function                              |

//+------------------------------------------------------------------+

int OnCalculate(const int rates_total,

                const int prev_calculated,

                const datetime &time[],

                const double &open[],

                const double &high[],

                const double &low[],

                const double &close[],

                const long &tick_volume[],

                const long &volume[],

                const int &spread[])

  {

//---

   

//--- return value of prev_calculated for next call

   return(rates_total);

  }

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//--- 卸载指标的时候,清除这个对象。

   ObjectDelete(0,label_name);

  }

以上代码我刚刚测试过了,正常有效,如果你还有问题,可以加我QQ:80364276,咨询我。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MQL5语言编程手册是一本详细介绍MQL5编程语言的指南,适用于MetaTrader 5平台的开发者。该手册以中文撰写,为使用中文语言的开发者提供方便的学习和参考资料。 MQL5语言是专门为金融市场交易而设计的高级编程语言。它可以用于开发自定义的交易机器人(Expert Advisors)、脚本(Scripts)和指标(Indicators),以满足不同交易策略和需求。MQL5语言编程手册详尽地介绍了MQL5的语法、命令、函数等基本概念和用法,并提供了丰富的示例代码,以帮助读者更好地理解和掌握编程技巧。 该手册首先介绍了MQL5编程语言的基础知识,包括变量、运算符、控制结构等基本概念。然后,它逐步深入讲解了MQL5的高级特性,如自定义指标和函数、面向对象编程等。在这些内容的基础上,读者还可以学习如何使用MQL5语言进行数据分析、图表操作、文件操作等高级交易功能的开发。 此外,MQL5语言编程手册还介绍了MQL5社区和MetaTrader市场,这是开发者可以获取额外工具和指标、共享和交流经验的平台。这些资源能够加速开发过程,提供更多创新和定制化的解决方案。 总之,MQL5语言编程手册中文版是一本对于想要开发自己交易机器人的人来说非常重要的指南。它为开发者提供了一个全面的了解和学习MQL5语言的机会,从而使他们能够更好地掌握这一强大的编程语言,实现个性化的交易策略,并在金融市场中取得成功。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漆学军

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值