技术标签: 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行代码就搞定了,如果看不明白,可以问我,我来教你。
文章浏览阅读89次。据英国媒体报道,中国种植的中药八角被发现是世界上对抗禽流感的唯一良方。 八角又名大茴香,是木兰科期莽草属树的果实,形若星状,因而得名。八角果实内含莽草酸成分,莽草酸是制造世界上唯一能抑制禽流感药物达菲的材料。 资料显示,全球八角90%在中国,广西是中国八角的主要产区。 但并非所有的八角都能被用作原材料。拥有“达菲”制造专利的瑞士药剂商罗氏集团声称,只有来自中国..._八角茴香是我国南亚热带地区的珍贵经济林树种,主要生长于我国广西等4个省份,每年
文章浏览阅读1.4k次。介绍在之前的文章中介绍过MongoDB的可视化管理工具,有Web端的,也有桌面端的,怎么用都大同小异,今天介绍的adminMongo也是一个MongoDB的Web端可视化管理工具,界面美观,安装操作简单。而且依旧是开源免费的。特性从连接级别进行管理,以便轻松访问多个数据库创建/删除数据库备份/恢复数据库创建/删除/编辑集合创建/删除/编辑文档创建/删除索引查询文件收集统计以JSON格式导出集合服务..._adminmongo
文章浏览阅读126次。作业要求来自:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/957环境:windows7 cmd命令行要求1bug计分。阅读教材第298页,发布bug报告。一、被测试程序的作者:吴雨丹 吴雨丹的代码git地址:https://git.coding.net/clairewyd/wf.git..._bug测试报告新闻发布
文章浏览阅读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. 系..._学生成绩管理系统和学生成绩管理信息系统
文章浏览阅读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
文章浏览阅读300次。Red Hat的领导X.Org开发人员Adam Jackson正在考虑重新改造Fedora的VESA显示代码路径。该计划需要从X.Org服务器中删除一些旧的“粗略代码”并转移到UVESAFB作为基于VESA的FBDEV驱动程序,但意味着在其他更改中删除对OpenChrome驱动程序的支持。杰克逊的计划涉及切换到UVESAFB,VESA帧缓冲驱动程序用于缺少适当的DRM / KMS驱动程序的旧/不支..._xgi可以切到vesa
文章浏览阅读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
文章浏览阅读6.6k次。前言:在android原生中比较常用的是luban压缩,当然,flutter版本也有luban压缩,通过一些资料搜索,luban压缩是直接通过dart进行压缩的,在针对一些大图片,动不动就12-20m的图片,在部分旧手机的会直接出现闪退的情况。当然,上面说得可能也不一定正确,下面我自己使用的是pub上比较popular的插件:flutter_image_compress: ^0.7.0使用方式:pubspec.yaml 添加依赖,如下:使用命令:pub packages get在_flutter 图片压缩上传
文章浏览阅读35次。<form> 你爱好的运动是?<input type="checkbox" id="CheckedAll" />全选/全不选<br /> <input type="checkbox" name="items" value="足球" />足球 <input type="che..._复选框勾选时将rowid存入列表,取消勾选时将rowid从列表中删除
文章浏览阅读53次。什么是recovery?用智能手机常刷ROM的朋友一定会知道。recovery中文意思是恢复,复苏的意思。笼统的说:就是一个刷机的工程界面,在这个界面你可以直接用sd卡上的zip的rom升级或者备份你的系统。一般刷rom之前最好wipe一下(wipe只是抹除rom 以外的个人数据,不会影响rom 本身),也就是返回出厂设置一下比较好,但是这样就会丢失你的所有软件,短信彩信,联系人(备份在..._ms7613主板recovery