【漆学军】分享一个自定义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

智能推荐

ubuntu 完全干净的卸载docker_ubuntu卸载docker-程序员宅基地

文章浏览阅读3.2k次,点赞3次,收藏11次。ubuntu 完全干净的卸载docker_ubuntu卸载docker

java毕业设计疫苗及注射管理系统(springboot+mysql+jdk1.8+meven)-程序员宅基地

文章浏览阅读1.1k次,点赞18次,收藏10次。这样,前端Vue.js和后端Spring Boot框架的接口紧密协作,而MySQL数据库则作为数据存储和管理的核心,确保了整个系统的数据一致性和高效处理。通过本系统的设计与实施,旨在为政府和卫生部门提供一个高效、可靠、易用的疫苗及注射管理平台,满足现代疫苗管理的需求,同时为学生提供一个实践和提升技能的机会。以上选题背景和意义内容是根据本选题撰写,非本作品实际的选题背景、意义或功能。推动行业发展:随着信息技术的发展,疫苗及注射管理系统的建立将推动整个卫生防疫行业的信息化、数字化进程,促进行业的创新和发展。

JSON详解-程序员宅基地

文章浏览阅读66次。原文出处:http://www.cnblogs.com/mcgrady/archive/2013/06/08/3127781.htmlJSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。XML也是一种数据交换格式,为什么没有选择XML呢?因为XML虽然可以作为跨平台的数据交换...

Python水平自测!100道经典练习题.pdf(附答案)_python题库 file:pdf-程序员宅基地

文章浏览阅读1.4w次,点赞80次,收藏579次。自学Python最令人头痛的地方,不是学不进去,而是不知道自己学完之后是什么样的水平!篇幅原因本文只分享了前10道练习题。公号文章处放了前36道题,大家可以自行查阅:https://mp.weixin.qq.com/s/qvcrduneuvmfLEyfoQkf9Q文末附完整版Python100经典练习题.pdf下载方式,大家自行获取即可~1:Python有哪些特点和优点?答:作为一门编程入门语言,Python主要有以下特点和优点:可解释具有动态特性面向对象简..._python题库 file:pdf

Java中Double类型出现科学计数法问题解决方法_java double科学计数-程序员宅基地

文章浏览阅读1.7k次。Double类型接收参数出现科学计数法_java double科学计数

51单片机寻迹小车_51单片机巡线小车说明书-程序员宅基地

文章浏览阅读3w次,点赞136次,收藏1.1k次。# 基于51单片机的循迹小车(详细讲解+源码)作为一名大学生,这里我就简单谈谈我们小组做这个循迹小车的一个过程。主要是实现小车寻黑线行驶的这样一个功能,速度可以调节(定时器中断模拟PWM波实现)一丶硬件部分小车的主体框架是一个三轮的外在形态电源:采用2S可充电锂电池作为主电源供给(主要是给驱动,单片机供电)传感器:采用灰度传感器(2个)灰度传感器工作原理很简单,下面有介绍,它和单片机之间的通信就是通过代码来体现的:两个灰度传感器的信号输出端(DO,这里可以定义两个变量分别保存他们的输出信号)_51单片机巡线小车说明书

随便推点

【youcans 的 OpenCV 例程200篇】128. 形态算法之骨架 (skimage)_c++opencv骨骼化-程序员宅基地

文章浏览阅读5k次,点赞3次,收藏28次。形态骨架(morphological skeleton)是一种细化的结构,指图像的骨骼部分,用于描述物体的几何形状和拓扑结构,是目标物体重要的拓扑描述。图像的细化是对二值图像进行骨架提取,删除不需要的轮廓点,只保留其骨架点。skimage 中提供了函数 **skimage.morphology.skeletonize** 可以获取图像的骨骼。_c++opencv骨骼化

SQL Server 2008 R2 Developer Edition图文安装教程_sql server 2008 developer-程序员宅基地

文章浏览阅读2.6k次。 转载自:https://blog.csdn.net/lucky51222/article/details/72953853本文主要以截图的方式,详细说明SQL Server 2008 R2 Developer Edition的安装过程。1.下载SqlServer的64位安装包如下: 2.双击安装首先将安装可执行程序拷贝到其他文件夹下然后默认解压路径为:C:\Users..._sql server 2008 developer

ACE的使用及其核心模块讲解等_ace使用-程序员宅基地

文章浏览阅读2.9k次。下面为本人在使用ACE中遇到的一些问题的汇总,只介绍了大体的思路,具体的细节还需进佐证。 1. ACE配置模块的使用 就一个正常项目而言,一个配置文件是必不可少的,那就先从这里入手了。linux/unix 程序可能经常用到命令行方式,不过我还是比较喜欢windows 的 ini 格式的,当然,有xml 的更好,不过 ACE 里暂时没有提供。配置文件的使用很简单,ACE 提供的类也很友好。代_ace使用

python飞机大战源代码(可直接运行)_飞机大战python源代码-程序员宅基地

文章浏览阅读5.6w次,点赞60次,收藏96次。喜欢的点个赞支持一下哦联系方式见评论区--------------欢迎大家一起探讨-----------------------------------------------------------------具体的代码:settings配置import pygameclass Settings(object): """设置常用的属性""" def __ini..._飞机大战python源代码

php加固_php文件上传加固-程序员宅基地

文章浏览阅读1.3k次。PHP应用部署后,开发者或者运维人员应该时刻关注PHP方面的漏洞消息,升级PHP版本,对PHP环境进行安全加固。本文将给大家介绍如何从WEB安全方面让你的网站更坚固更安全。1.启用 PHP 的安全模式PHP 环境提供的安全模式是一个非常重要的内嵌安全机制,PHP 安全模式能有效控制一些 PHP 环境中的函数(例如system()函数),对大部分的文件操作函数进行权限控制,同时不允许对某些关..._php文件上传加固

BM3406-VB一款N—Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明-程序员宅基地

文章浏览阅读210次。BM3406-VB是一款SOT23封装的N—Channel沟道场效应晶体管,具有低电阻、高电流特性,适用于高性能开关电子应用。4. **汽车电子:** 在汽车电子系统中,用于控制电动窗、座椅等模块。2. **驱动模块:** 在驱动电路中,实现快速、可靠的开关操作。1. **电源模块:** 用于电源开关和稳压模块,确保高效能耗。3. **电动工具:** 用于电动工具中的电源和驱动控制。- 产品型号:BM3406-VB。- 沟道类型:N—Channel。- 品牌:VBsemi。- 封装:SOT23。

推荐文章

热门文章

相关标签