【漆学军】分享一个自定义K线的指标的源码_k线指标源码-程序员宅基地

技术标签: EA编程  MQL4  MT4指标  自定义K线  MT4教程  

实现方法:在每根k线上绘制柱子,粗柱子作为K线主体,细柱子作为k线引线。

技术难点:本例没有使用绘制对象的方法,而是直接使用MT4指标的方法绘制DRAW_HISTOGRAM,主图指标使用这个方法必然是两两成对。

举一反三:掌握了这个技术,可以绘制一些独特的k线,比如说达到了一定的条件,才显示特定颜色的k线,更高级一点,可以使用这个技术绘制砖块图,也就是Renko图。这比绘制Object的方式高效多了,也更加节省内存,速度更快。

效果如图:

说明:为了便于观看,自定义的K线绘制在当前k线上移了20个点的位置。

完整源码如下:

//+------------------------------------------------------------------+
//|                                                    自定义K线.mq4 |
//|                                                         漆天编程 |
//|                                           http://www.forexmt4.cn |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "http://www.forexmt4.cn"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property  indicator_buffers 4
#property  indicator_color1  Silver
#property  indicator_color2  Red
#property  indicator_color3  Silver
#property  indicator_color4  Red
#property  indicator_width1  5
#property  indicator_width2  5
#property  indicator_width3  1
#property  indicator_width4  1

double    Buffer1[];
double    Buffer2[];

double    Buffer3[];
double    Buffer4[];

int shift=-200;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexStyle(3,DRAW_HISTOGRAM);
   SetIndexBuffer(0,Buffer1);
   SetIndexBuffer(1,Buffer2);
   SetIndexBuffer(2,Buffer3);
   SetIndexBuffer(3,Buffer4);
//---
   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[])
  {
//---
   int i,limit;
   limit=rates_total-prev_calculated;
   if(prev_calculated>0)
      limit++;
//--- macd counted in the 1-st buffer
   for(i=0; i<limit; i++)
     {
      Buffer1[i]=Open[i]-shift*Point;
      Buffer2[i]=Close[i]-shift*Point;
      Buffer3[i]=High[i]-shift*Point;
      Buffer4[i]=Low[i]-shift*Point;
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

75行代码就搞定了,如果看不明白,可以问我,我来教你。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yunkaicn/article/details/117600140

智能推荐

流感病毒的克星-达菲-程序员宅基地

文章浏览阅读89次。据英国媒体报道,中国种植的中药八角被发现是世界上对抗禽流感的唯一良方。 八角又名大茴香,是木兰科期莽草属树的果实,形若星状,因而得名。八角果实内含莽草酸成分,莽草酸是制造世界上唯一能抑制禽流感药物达菲的材料。 资料显示,全球八角90%在中国,广西是中国八角的主要产区。  但并非所有的八角都能被用作原材料。拥有“达菲”制造专利的瑞士药剂商罗氏集团声称,只有来自中国..._八角茴香是我国南亚热带地区的珍贵经济林树种,主要生长于我国广西等4个省份,每年

可视化管理_Web端的MongoDB可视化管理——adminMongo-程序员宅基地

文章浏览阅读1.4k次。介绍在之前的文章中介绍过MongoDB的可视化管理工具,有Web端的,也有桌面端的,怎么用都大同小异,今天介绍的adminMongo也是一个MongoDB的Web端可视化管理工具,界面美观,安装操作简单。而且依旧是开源免费的。特性从连接级别进行管理,以便轻松访问多个数据库创建/删除数据库备份/恢复数据库创建/删除/编辑集合创建/删除/编辑文档创建/删除索引查询文件收集统计以JSON格式导出集合服务..._adminmongo

软工2017第三周作业之找bug——测试报告-程序员宅基地

文章浏览阅读126次。作业要求来自:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/957环境:windows7 cmd命令行要求1bug计分。阅读教材第298页,发布bug报告。一、被测试程序的作者:吴雨丹 吴雨丹的代码git地址:https://git.coding.net/clairewyd/wf.git..._bug测试报告新闻发布

os模块讲解、sys模块详解(待补充)_os.system(-q -o)-程序员宅基地

文章浏览阅读4k次。一、os模块介绍os 模块可以帮助我们直接对操作系统进行操作。我们可以直接调用操作系统的可执行文件、命令,直接操作文件、目录等等。在系统运维的核心基础。二、常用命令 1、os.system调用操作系统命令import oscmd = 'ping www.baidu.com'os.system(cmd)【注】Linux 是命令行操作更容易,我们可以通过 os.system 可以更加容易的调用相关的命令;2、os.startfile() 直接调用可执行文件3、o..._os.system(-q -o)

学生成绩管理系统/学生信息管理系统-程序员宅基地

文章浏览阅读3.6k次,点赞3次,收藏29次。学校课程设计作业,完成一个简单的学生信息管理系统,考虑到系统实用性,把它做成了一个简单的能够使用的学生成绩管理系统,包含了学生信息管理,就当做练手吧。发一个博客,做展示用!!第一次做的一个比较完整的系统,难免会有一些bug(^_^)下载链接:学生成绩管理系统一、 开发背景软件名称:学生成绩管理系统(SSMS)使用对象:小学、初中、高中二、 需求分析1. 系..._学生成绩管理系统和学生成绩管理信息系统

ios9.3.3版本下 document.execCommand("copy") 失败-程序员宅基地

文章浏览阅读1.6k次。copyText()安卓,ios11,ios12都可用 ,并且不弹起输入键盘// 复制copyTextfunction copyText(text) {var input = document.createElement("input");var currentFocus = document.activeElement;document.body.appendChi..._document.execcommand("copy")不存在

随便推点

神经网络没学到东西_您的神经网络会忘记它学到的东西-程序员宅基地

文章浏览阅读760次。神经网络没学到东西By Hannah Peterson and George Williams ([email protected])汉娜·彼得森( Hannah Peterson)和乔治·威廉姆斯( George Williams) ([email protected]) 什么是灾难性遗忘?(What is Catastrophic Forgettin..._bi-level continue learning

Linux VESA驱动升级:Fedora计划采用UVESAFB替代旧VESA和OpenChrome-程序员宅基地

文章浏览阅读300次。Red Hat的领导X.Org开发人员Adam Jackson正在考虑重新改造Fedora的VESA显示代码路径。该计划需要从X.Org服务器中删除一些旧的“粗略代码”并转移到UVESAFB作为基于VESA的FBDEV驱动程序,但意味着在其他更改中删除对OpenChrome驱动程序的支持。杰克逊的计划涉及切换到UVESAFB,VESA帧缓冲驱动程序用于缺少适当的DRM / KMS驱动程序的旧/不支..._xgi可以切到vesa

Unsatisfied dependency expressed through field ‘authorizationServerTokenServices‘_unsatisfied dependency expressed through field 'to-程序员宅基地

文章浏览阅读1.4k次。使用SpringSecurityOauth2启动异常:ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘openId_unsatisfied dependency expressed through field 'tokenservice

flutter压缩图片上传_flutter 图片压缩上传-程序员宅基地

文章浏览阅读6.6k次。前言:在android原生中比较常用的是luban压缩,当然,flutter版本也有luban压缩,通过一些资料搜索,luban压缩是直接通过dart进行压缩的,在针对一些大图片,动不动就12-20m的图片,在部分旧手机的会直接出现闪退的情况。当然,上面说得可能也不一定正确,下面我自己使用的是pub上比较popular的插件:flutter_image_compress: ^0.7.0使用方式:pubspec.yaml 添加依赖,如下:使用命令:pub packages get在_flutter 图片压缩上传

jquery checkbox勾选/取消勾选的诡异问题-程序员宅基地

文章浏览阅读35次。<form> 你爱好的运动是?<input type="checkbox" id="CheckedAll" />全选/全不选<br /> <input type="checkbox" name="items" value="足球" />足球 <input type="che..._复选框勾选时将rowid存入列表,取消勾选时将rowid从列表中删除

recovery教程-程序员宅基地

文章浏览阅读53次。什么是recovery?用智能手机常刷ROM的朋友一定会知道。recovery中文意思是恢复,复苏的意思。笼统的说:就是一个刷机的工程界面,在这个界面你可以直接用sd卡上的zip的rom升级或者备份你的系统。一般刷rom之前最好wipe一下(wipe只是抹除rom 以外的个人数据,不会影响rom 本身),也就是返回出厂设置一下比较好,但是这样就会丢失你的所有软件,短信彩信,联系人(备份在..._ms7613主板recovery

推荐文章

热门文章

相关标签