Easy Canvas - MetaTrader 5 库

以下是使用该库的简单指标的示例。
在此示例中,指标主体不具有处理 OnChartEvent 事件的功能。但它也可能存在。

#财产指标图表窗口 #包括<画布\iCanvas.mqh>整数 初始化时() { 事件集毫秒定时器(33); 图表集整数(0,图表显示,真的); 图表集整数(0,CHART_CROSSHAIR_TOOL,错误的); // 关闭十字准线 返回(初始化成功); }空白 解初始化(常量 整数原因) {如果(原因<2){图表集整数(0,CHART_CROSSHAIR_TOOL,真的);图表重绘();}}空白 定时器() { 静止的 整数X=0; 静止的 整数Y=0; 如果(X!=W.MouseX || Y!=W.MouseY) { 画布.擦除(0); // 绘制一个模糊点 为了(整数ix=-20;ix<=20;九++)为了(整数iy=-20;iy<=20;iy++) { 双倍的p=开方(ix*ix+iy*iy)/20.0; 如果(p>1) p=1; 乌查尔P=(乌查尔)圆形的((1.0-p)*255.0); Canvas.PixelSet(W.MouseX+ix,W.MouseY+iy,ARGB(P,100,0,200)); } // 显示信息块 整数Y1=(整数)Canvas.Y(画布。关闭(W.MouseX)); Canvas.FillRectangle(W.MouseX,Y1,W.MouseX+140,Y1+67,0xA0808080); 帆布。文本输出(W.MouseX+5,Y1+2,“关闭=”+双精度转字符串(帆布。关闭(W.MouseX),_数字),0xFFFFFFFF); 帆布。文本输出(W.MouseX+5,Y1+18,“酒吧=”+双精度转字符串(W.MouseBar,2),0xFFFFFFFF); 帆布。文本输出(W.MouseX+5,Y1+34,字符串时间(W.MouseTime,TIME_DATE|TIME_SECONDS),0xFFFFFFFF); 帆布。文本输出(W.MouseX+5,Y1+50,“子窗口=”+细绳(W.MouseSubWin),0xFFFFFFFF); // 十字线 Canvas.LineHorizontal(0,W.宽度-1,W.MouseY,~W.Color); Canvas.LineVertical(W.MouseX,0,W.高度-1,~W.颜色); 整数Ym=(W.MouseY>16)?(W.MouseY-16):(W.鼠标Y+2); 整数Xm=(W.MouseX<(W.宽度-140))?(W.MouseX+4):(W.MouseX-125); 帆布。文本输出(W.宽度-76,嗯,双精度转字符串(W.MousePrice,_数字),~W.颜色); 帆布。文本输出(Xm,W.高度-16,字符串时间(W.MouseTime,TIME_DATE|TIME_SECONDS),~W.颜色); Canvas.Update(); X=W.MouseX; Y=W.MouseY; } }整数 计算时(常量 整数费率_总计, 常量 整数先前计算的, 常量 整数开始, 常量 双倍的&价格[]) { 返回(费率_总计); }
库特点:
窗口结构:
结构体窗户 { 单位 颜色; // 窗口背景颜色 整数 宽度; // 窗口宽度 整数 高度; // 窗口高度 整数 左栏; // 窗口中最左边的栏的编号 双倍的 右栏; // 窗口中最右边的栏的编号 双倍的 总条数; // 窗口中的最大条数 整数 风中酒吧; // 窗口中可见条的数量 双倍的 Y_分钟; // 窗口内价格的最小值 双倍的 Y_最大; // 窗口内价格的最大值 双倍的 dy_pix; // 一个像素的价格变化 整数 dx_像素; // 改变每个像素的条数 整数 鼠标X; // 鼠标指针当前位置的X坐标 整数 鼠标Y; // 鼠标指针当前位置的Y坐标 双倍的 鼠标栏; // 鼠标指针当前条形位置 双倍的 鼠标价格; // 鼠标指针的当前价格 日期时间 鼠标时间; // 鼠标指针当前时间 整数 鼠标子Win;// 鼠标指针所在的子窗口号 整数 Windows总计;// 子窗口总数,包括主窗口 整数 子温; // 当前子窗口 日期时间 时间[]; // 窗口中所有可见柱的开盘时间数组 };
班级画布:民众画布 {私人的: 日期时间 T[1]; 双倍的 普[1]; 布尔值 FullWinCanvW;// 按宽度使用全窗口画布 布尔值 FullWinCanvH;// 按高度使用全窗口画布 民众: iCanvas(整数X位置=0,整数y位置=0,细绳姓名=“i画布”,整数宽度=0,整数高度=0,ENUM_COLOR_FORMAT格式CF=COLOR_FORMAT_ARGB_NORMALIZE,整数子温=-1); ~iCanvas() { 销毁();}; 双倍的 X(双倍的酒吧); 双倍的 X(日期时间 时间){返回X((双倍的)天花板(W.Right_bar)+iBarShift(无效的,0,时间));}; 双倍的 Y(双倍的价格) {返回((W.Y_max-价格)/W.dy_pix); }; 双倍的 酒吧(整数x) {返回((双倍的)W.Left_bar+1-(双倍的)x/(双倍的)W.dx_pix);}; 日期时间 时间位置(整数x) {双倍的B=条(x);复制时间(_象征,_时期,楼层(B),1,T);返回T[0]+整数((双倍的)周期秒数()*(1-B+(整数)B));}; 双倍的 关闭(整数x) {复制关闭(_象征,_时期,整数(条(x)),1,Pr);返回普[0];}; 双倍的 打开(整数x) {复制打开(_象征,_时期,整数(条(x)),1,Pr);返回普[0];}; 双倍的 高的(整数x) {高复制(_象征,_时期,整数(条(x)),1,Pr);返回普[0];}; 双倍的 低的(整数x) {低拷贝(_象征,_时期,整数(条(x)),1,Pr);返回普[0];}; 布尔值 FullWinCanvWidth() {返回FullWinCanvW;};// 按宽度使用全窗口画布 布尔值 FullWinCanvHeight() {返回FullWinCanvH;};// 按高度使用全窗口画布 ENUM_PROGRAM_TYPE程序类型; };
附件下载
📎 test_icanvas.mq5(6.64 KB)
📎 icanvas.mqh (31.88 KB)
Source: MQL5 #22164
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录
