EA邦程序化交易论坛
标题: 求编写:双组双线变色MACD叠加指标。谢谢! [打印本页]
作者: mjshh 时间: 2019-1-31 20:23
标题: 求编写:双组双线变色MACD叠加指标。谢谢!
本指标根据标准双线MACD稍加修改,效果见附图:
(图中是将2个单组MACD叠加在一个指标窗口中,左右移动K线的话,2组线的相对位置会变化不定,故想设计在同一个指标中,让相对位置能够固定下来。)
指标参数:
1)线型:EMA、SMA、LWMA(以便与主图相配合,能反应主图中采用不同类型均线时的真实均线差值)
2)Short1:25
3)Short2: 99
4)LONG:181
5)MID:9
将macd(Short1, LONG)及macd(Short2, LONG)两个参数组的DIF、DEA叠加在一个指标窗口中,为避免图形混乱,柱状线只保留其中一组即可。另外:
1. 两条均线差值采用乖离率百分比计算(参见如下公式),这样不同货币对的强弱标准统一,具有可比性;
2. DIF、DEA上升下降均会变色。
我只会写通达信股票公式,见下(供参考):
M1:=MA(CLOSE,SHORT1)*(M=0)+EMA(CLOSE,SHORT1)*(M=1)+WMA(CLOSE,SHORT1)*(M=2);
M2:=MA(CLOSE,SHORT2)*(M=0)+EMA(CLOSE,SHORT2)*(M=1)+WMA(CLOSE,SHORT2)*(M=2);
L1:=MA(CLOSE,LONG)*(M=0)+EMA(CLOSE,LONG)*(M=1)+WMA(CLOSE,LONG)*(M=2);
DIF1:M1*100/L1-100,COLORYELLOW;
DEA1:EMA(DIF1,MID),COLORWHITE;
MACD
DIF1-DEA1)*2,COLORSTICK;
DIF2:M2*100/L1-100,COLORYELLOW;
DEA2:EMA(DIF2,MID),COLORWHITE;
0,DOTLINE,COLORYELLOW;
IF(DIF1<REF(DIF1,1),DIF1,DRAWNULL),COLORRED;
IF(DEA1<REF(DEA1,1),DEA1,DRAWNULL),COLORRED;
IF(DIF2<REF(DIF2,1),DIF2,DRAWNULL),COLORRED;
IF(DEA2<REF(DEA2,1),DEA2,DRAWNULL),COLORRED;
多谢老师及各位网友相助!
-
作者: 胡老师 时间: 2019-2-10 22:08
看到了,已经安排排期了,最近比较忙,vip用户优先,您这个得排他们后面。
作者: mjshh 时间: 2019-2-11 21:14
谢谢老师相助,静候佳音!
作者: 唐老师 时间: 2019-2-16 22:25
我看了一下,是通达信的代码啊,对这个不是很熟。
你懂通达信公式的话,你能不能直接告诉我上面的代码是什么意思?
作者: mjshh 时间: 2019-2-18 22:36
//这是用M1、M2、L1三均线操盘.其中三根均线的周期参数short1<short2<long。
M1:=MA(CLOSE,SHORT1)*(M=0)+EMA(CLOSE,SHORT1)*(M=1)+WMA(CLOSE,SHORT1)*(M=2);
M2:=MA(CLOSE,SHORT2)*(M=0)+EMA(CLOSE,SHORT2)*(M=1)+WMA(CLOSE,SHORT2)*(M=2);
L1:=MA(CLOSE,LONG)*(M=0)+EMA(CLOSE,LONG)*(M=1)+WMA(CLOSE,LONG)*(M=2);
//以上参数m是选择线型:m=0时为SMA; m=1时为EMA; m=2时为LWMA。
DIF1:M1*100/L1-100,COLORYELLOW;
DEA1:EMA(DIF1,MID),COLORWHITE;
MACD=(DIF1-DEA1)*2,COLORSTICK;
//计算第1组均线的DIF、DEA及MACD;
DIF2:M2*100/L1-100,COLORYELLOW;
DEA2:EMA(DIF2,MID),COLORWHITE
//计算第2组均线的DIF、DEA;
0,DOTLINE,COLORYELLOW;
//设置0位水平线颜色;
F(DIF1<REF(DIF1,1),DIF1,DRAWNULL),COLORRED;
IF(DEA1<REF(DEA1,1),DEA1,DRAWNULL),COLORRED;
IF(DIF2<REF(DIF2,1),DIF2,DRAWNULL),COLORRED;
IF(DEA2<REF(DEA2,1),DEA2,DRAWNULL),COLORRED;
//两组DIF、DEA线下降时设为红色。
谢谢老师回复!
作者: mjshh 时间: 2019-2-18 22:41
//+------------------------------------------------------------------+
//| MACD双线.mq4 |
//+------------------------------------------------------------------+
#property copyright "我在跑数据"
#property link "rundata.taobao.com"
#property indicator_separate_window
#property indicator_buffers 6
#property indicator_color1 Red
#property indicator_color2 Red
#property indicator_color3 Red
#property indicator_color4 Green
#property indicator_color5 Lime
#property indicator_color6 Lime
extern int Short=12;
extern int Long=26;
extern int Mid=9;
double c;
double x1[];
double x2[];
double x3[];
double x4[30000];
double x5[30000];
double x6[];
double x7[];
double x8[];
double xa2[101];
double xaa1[40000];
double xaa2[40000];
double xaa3[40000];
int init()
{
SetIndexBuffer(0,x1);
SetIndexStyle(0,DRAW_LINE);
SetIndexDrawBegin(0,0);
SetIndexBuffer(1,x2);
SetIndexStyle(1,DRAW_LINE);
SetIndexDrawBegin(1,0);
SetIndexBuffer(2,x3);
SetIndexStyle(2,DRAW_HISTOGRAM);
SetIndexDrawBegin(2,0);
SetIndexBuffer(3,x6);
SetIndexStyle(3,DRAW_HISTOGRAM);
SetIndexDrawBegin(3,0);
SetIndexBuffer(4,x7);
SetIndexStyle(4,DRAW_LINE);
SetIndexDrawBegin(4,0);
SetIndexBuffer(5,x8);
SetIndexStyle(5,DRAW_LINE);
SetIndexDrawBegin(5,0);
IndicatorDigits(Digits+1);
SetLevelValue(0,0);
return(0);
}
int start()
{
int limit;
int counted_bars=IndicatorCounted();
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(int i=limit+500; i>=0; i--)
{
x4[i]=iMA(NULL,0,Short,0,MODE_EMA,PRICE_CLOSE,i);
x5[i]=iMA(NULL,0,Long,0,MODE_EMA,PRICE_CLOSE,i);
x1[i]=x4[i]-x5[i];
ArrayCopy(xa2,x1,0,i,100);
ArraySetAsSeries(xa2,true);
x2[i]=iMAOnArray(xa2,0,Mid,0,MODE_EMA,0);
if(x1[i]>x1[i+1])
x7[i]=x1[i];
else x7[i]=EMPTY_VALUE;
if(x2[i]>x2[i+1])
x8[i]=x2[i];
else x8[i]=EMPTY_VALUE;
if(x1[i]-x2[i]>=0)
{
x3[i]=2*(x1[i]-x2[i]);
x4[i]=EMPTY_VALUE;
}
else
{
x6[i]=2*(x1[i]-x2[i]);
x3[i]=EMPTY_VALUE;
}
}
return(0);
}
作者: mjshh 时间: 2019-2-18 22:44
以上是MT4的单组双线变色MACD源码,dif与dea之间是用差值计算的,我想把差值改为乖离百分比计算。然后变为双组dif、dea显示。谢谢!
| 欢迎光临 EA邦程序化交易论坛 (https://www.eabang.com/bbs/) |
Powered by Discuz! X3.5 |