在MT4上使用双线MACD指标源码

在MT4上使用双线MACD指标源码MACD指标是股票交易中经典的一款技术分析指标,该指标由两条曲线和柱线组成。基本用法:MACD金叉:DIFF由下向上突破DEA,为买入信号。MACD死叉:DIFF由上向下突破DEA,为卖出信号。MACD绿转红:MACD值由负变正,市场由空头转为多头。MACD红转绿:MACD值正转负,市场多头转空头。DIFF与DEA均为正值,即都在零轴线以上时,大势属于多头市场,DIFF向上突破DEA,可以做买入信号。DIFF与DEA均为负值,即都在零轴线以下时,大势属于空头市场,DIFF向下跌破DEA,可做卖出信号。DE

大家好,又见面了,我是你们的朋友全栈君。

MACD指标是股票交易中经典的一款技术分析指标,该指标由两条曲线和柱线组成。

基本用法:MACD金叉:DIFF由下向上突破DEA,为买入信号。MACD死叉:DIFF由上向下突破DEA,为卖出信号。MACD绿转红:MACD值由负变正,市场由空头转为多头。MACD红转绿:MACD值正转负,市场多头转空头。DIFF与DEA均为正值,即都在零轴线以上时,大势属于多头市场,DIFF向上突破DEA,可以做买入信号。DIFF与DEA均为负值,即都在零轴线以下时,大势属于空头市场,DIFF向下跌破DEA,可做卖出信号。DEA在盘整局面失误率高,配合RSI及KDJ指标可以适当弥补缺点。

效果如下:
在这里插入图片描述
源代码:

#property copyright "Copyright 2021,EATrader."
#property link "https://www.mql5.com/"
#property description "关注公众号:从零开始学EA交易"
"\n微信号:XQH20200705"
#property icon "\\Images\\001.ico"
#property version "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots 4
//--- plot DIF
#property indicator_label1 "DIF"
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrSilver
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
//--- plot DEA
#property indicator_label2 "DEA"
#property indicator_type2 DRAW_LINE
#property indicator_color2 clrYellow
#property indicator_style2 STYLE_SOLID
#property indicator_width2 1
//--- plot macd hist+
#property indicator_label3 "Macd+"
#property indicator_type3 DRAW_HISTOGRAM
#property indicator_color3 clrRed
#property indicator_style3 STYLE_SOLID
#property indicator_width3 1
//--- plot macd hist-
#property indicator_label4 "Macd-"
#property indicator_type4 DRAW_HISTOGRAM
#property indicator_color4 clrAqua
#property indicator_style4 STYLE_SOLID
#property indicator_width4 1
input int FastEMA = 12;
input int SlowEMA = 26;
input int MACDEMA = 9;
//--- indicator buffers
double         DIFBuffer[];
double         DEABuffer[];
double         MacdHistBuffer[];
double         MacdHistBuffer1[];
double w=0;
double w1=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{ 

//--- indicator buffers mapping
SetIndexBuffer(0,DIFBuffer);
SetIndexBuffer(1,DEABuffer);
SetIndexBuffer(2,MacdHistBuffer);
SetIndexBuffer(3,MacdHistBuffer1);
SetIndexEmptyValue(2,EMPTY_VALUE);
SetIndexEmptyValue(3,EMPTY_VALUE);
for(int i=0; i<4; i++)
SetIndexDrawBegin(i,SlowEMA+MACDEMA);
IndicatorDigits(Digits);
IndicatorShortName("MACD("+(string)FastEMA+","+(string)SlowEMA+","+(string)MACDEMA+")");
if(FastEMA<0 || SlowEMA<0 || MACDEMA<0)
return(INIT_FAILED);
w = 2.0/(MACDEMA + 1);
w1= 1.0-w;
//---
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=0;
if(rates_total<=0) return(0);
if(prev_calculated<=0) limit=rates_total-1;
else limit=rates_total-prev_calculated+1;
double hst=0.0;
for(i=limit; i>=0; i--)
{ 

if(i==rates_total-1) continue;
DIFBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
DEABuffer[i]=w*DIFBuffer[i]+w1*DEABuffer[i+1];
hst = 2.0*(DIFBuffer[i]-DEABuffer[i]);
if(hst>=0)
{ 

MacdHistBuffer[i]=hst;
MacdHistBuffer1[i]=EMPTY_VALUE;
}
else
{ 

MacdHistBuffer1[i]=hst;
MacdHistBuffer[i]=EMPTY_VALUE;
}
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+

工欲善其事,必先利其器,交易最重要的是遵守规则,严格执行。关注公众号,学习MQL入门到精通EA教程,学习更多EA编程,畅写属于自己的EA,锻造属于自己的神兵利器。
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/139285.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 域名怎么与主机空间绑定的_域名绑定虚拟主机

    域名怎么与主机空间绑定的_域名绑定虚拟主机域名怎么与主机空间绑定2008-07-2623:41由于各种原因,我们有时候需要在一个IP地址上建立多个web站点,在IIS中,我们可能通过简单的设置达到这个目标。  在IIS中,每个Web站点都具有唯一的、由三个部分组成的标识,用来接收和响应请求:  1、IP地址  2、端口号  3、主机头名。  在IIS中,在一个IP地址上建立多个独

    2022年10月15日
  • 应用架构,业务架构,技术架构和业务流程图详解怎么写_业务架构和应用架构

    应用架构,业务架构,技术架构和业务流程图详解怎么写_业务架构和应用架构应用架构应用架构(ApplicationArchitecture)是描述了IT系统功能和技术实现的内容。应用架构分为以下两个不同的层次:企业级的应用架构:企业层面的应用架构起到了统一规划、承上启下的作用,向上承接了企业战略发展方向和业务模式,向下规划和指导企业各个IT系统的定位和功能。在企业架构中,应用架构是最重要和工作量最大的部分,他包括了企业的应用架构蓝图、架构标准/原则、系统的边界…

    2022年10月12日
  • Arduino文档阅读笔记-RFID工作原理及RC522模块介绍

    RFID工作原理RFID(RadioFrequencyIdentification):无线射频识别RFID由2个部分组成:应答器/标签被贴在某个物体上的东东。无线接收器用于读取应答器/标签上的数据。读卡器由频射模块及高平磁场组成。Tag/应答器为待感应设备,此设备不包含电池。他只包含微型集成电路芯片及存储数据的介质以及接收和发送信号的天线。读取tag中的数据,首先要放…

  • C++ STL map集合的使用「建议收藏」

    C++ STL map集合的使用「建议收藏」有时需要根据索引找到对应的元素,像键值对一样的查找,并对这些元素进行操作。可以同故宫调用STL里面的map来解决这个问题。

  • 关系模型的相关术语[通俗易懂]

    关系模型的相关术语[通俗易懂]关系模型的相关术语

  • 查看Linux内核版本及发行版本「建议收藏」

    查看Linux内核版本及发行版本「建议收藏」1.查看内核版本$uname-srLinux4.15.11-1.el7.elrepo.x86_64$uname-aLinuxlocalhost.localdomain4.15.11-1.el7.elrepo.x86_64#1SMPMonMar1911:46:06EDT2018x86_64x86_64x86_64GNU/Linux$cat/pro…

    2022年10月13日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号