MACD柱线与K线背离指标源码

MACD线和列使歪斜倡导者K线源

    显示呈现正中鹄的成功实现的事,这么倡导者是详细地反省出发的最好办法。,这是K线的峰。、谷地,MACD柱线的峰谷地十足的宽敞的。,最理想的钥匙经过。

    上面将详细地反省它的构成宣布和运用本领。,如下为未来准备了EA前任的。,供应根底。

//+————————————————————————————————+

//| FX5_Divergence.mq4 |

//| FX5 |

//| hazem@uk2.net |

//+————————————————————————————————-+

#property copyright “Copyright ?2007, FX5”

#property link :hazem@uk2.net

//—-根本构成释义

#property indicator_separate_window 在边图上显示

#property indicator_buffers 5 5大厦的构成释义

#property indicator_color1 LimeGreen 最前部色橙绿色

#property indicator_color2 FireBrick 线的色-二歪曲砖

#property indicator_color3 Green 第三行色绿

#property indicator_color4 Red 四个一组之物行色红

//—- input parameters内部优先权

extern string separator1 = “*** OSMA Settings ***”; MACD柱线设置

extern int fastEMA = 12; 彻底地线的自行车数

extern int slowEMA = 26; 慢行自行车数

extern int signal = 9; 使感动自行车数

extern string separator2 = “*** Indicator Settings ***”; //钥匙设置

extern bool drawDivergenceLines = true; 描写的后备线=真的

extern bool displayAlert = true; 受雇杀人的枪手显示=真

//—- buffers大厦构成释义小数的型

double upOsMA[]; MACD柱休会

double downOsMA[]; MACD柱谢绝

double bullishDivergence[]; 牛分开

double bearishDivergence[]; //澳门星际官网

double OsMA[]; MACD柱线

//—-

static datetime lastAlertTime; 恒稳态变量的时期和日期典型:终于告警时期

//+——————————————————————+

//| Custom indicator initialization function |

//+——————————————————————+

int init() //负担时运行

{

//—- indicators

SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 2);

钥匙典型(钥匙- 0),画柱线,实心的线,宽- 2像素)

SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 2);

钥匙典型(钥匙- 1),画柱线,实心的线,宽- 2像素)

SetIndexStyle(2, DRAW_ARROW);

钥匙典型(钥匙- 2),画箭头记号)

SetIndexStyle(3, DRAW_ARROW);

钥匙典型(钥匙- 3),画箭头记号)

SetIndexStyle(4, DRAW_NONE);

钥匙典型(钥匙- 4),不要画线)

//—-

SetIndexBuffer(0, upOsMA) 倡导者倡导者(倡导者- 0),MACD柱垂线休会)

SetIndexBuffer(1, downOsMA) 倡导者倡导者(倡导者- 1),MACD柱谢绝)

SetIndexBuffer(2, bullishDivergence); 倡导者倡导者(倡导者- 2),牛分开)

SetIndexBuffer(3, bearishDivergence); 倡导者倡导者(倡导者- 3),澳门星际官网)

SetIndexBuffer(4, OsMA) 倡导者倡导者(倡导者- 4),MACD柱线)

//—-

SetIndexArrow(2, 233); 箭头记号典型(钥匙- 2),编号233)

SetIndexArrow(3, 234); //箭头记号典型(钥匙-3,234号)

//—-

IndicatorDigits(Digits + 2); 钥匙占有一小部分数字(取礼物的十进法 2)。,免得眼前的钱币对小数的位数为5位,则钥匙小数的位:5+2=7,保存小数的点后7位。,因而计算发生四-五,停止计列。

IndicatorShortName(“(” + fastEMA + “,” + slowEMA + “,” + signal + “)”); 倡导者(fx_出发倡导者(彻底地EMA),慢EMA,使感动自行车)

归属(0)

}

//+——————————————————————+

//| Custom indicator deinitialization function |

//+——————————————————————+

int deinit() //倾倒动手术

{

为(int i = ObjectsTotal() – 1; i >= 0; i–) 成圈反省(不赞成总额- 1),0,增加1)

{

string label = 不赞成(我) 变量说法典型:制表=不赞成名(i)

免得(StringSubstr(制表, 0, 14) != “DivergenceLine”)

免得说法(制表被作为精华产生),从0个字母开端,取字母时间的长短= 14)和前进

continue; //持续

ObjectDelete(label); 拟出不赞成(制表)

}

归属(0)

}

//+——————————————————————+

//| Custom indicator iteration function |

//+——————————————————————+

int start() //主行使职责

{

int countedBars = IndicatorCounted(); 计算K线= K线总额量的功用

if(countedBars < 0) // 免得(计算K线数< 0)

countedBars = 0; K线数= 0计算

CalculateIndicator(countedBars); //倡导者计算(计算)K行数)-自构成释义行使职责命令

归属(0)

}

//+——————————————————————+

//|自构成释义行使职责无归属典型:钥匙计算|

//+——————————————————————+

void CalculateIndicator(int countedBars) //自构成释义行使职责:倡导者计算(计算)K行数)

{

为(int i = Bars – countedBars; i >= 0; i–) 成圈反省(i = k行数-计算k行数,0,i=i-1)

{

CalculateOsMA(i); MACD柱线(I)的计算——自构成释义行使职责

CatchBullishDivergence(i + 2); 挂钩牛使歪斜行使职责(i 2)-自构成释义行使职责

CatchBearishDivergence(i + 2); //捕获澳门星际官网行使职责(i+2)-自构成释义行使职责

}

}

//+——————————————————————+

//|自构成释义行使职责无归属典型:计算MACD柱线|

//+——————————————————————+

void CalculateOsMA(int i)//自构成释义行使职责:计算MACD柱线

{

奥斯马[我] = iOsMA(空, 0, fastEMA, slowEMA, signal, PRICE_CLOSE, i);

MACD柱行[ i ]=命令MACD柱线的功用(现行钱币对,礼物呈现,彻底地EMA,慢EMA,使感动自行车,沉淀,i)

if(奥斯马[我] > 0) 免得(MACD柱行I>0)

{

up奥斯马[我] = 奥斯马[我]; MACD柱休会[i]= MACD柱行[ i ]

down奥斯马[我] = 0; MACD柱谢绝[i]=0

}

else

if(奥斯马[我] < 0) //免得(MACD柱行[ i ]<0)

{

down奥斯马[我] = 奥斯马[我]; MACD柱谢绝[i]=MACD柱行[ i ]

up奥斯马[我] = 0; MACD柱休会[i]=0

}

else

{

up奥斯马[我] = 0; MACD柱休会[i]=0

down奥斯马[我] = 0; MACD柱谢绝[i]=0

}

}

//+——————————————————————+

//|自构成释义行使职责无归属典型:挂钩牛使歪斜行使职责|

//+——————————————————————+

void CatchBullishDivergence(int 移) //挂钩牛使歪斜行使职责(K线数)

{

if(IsIndicatorTrough(移) == 假) //免得(其中的哪人家是钥匙的浪尖(K线数)=假)

return;

int currentTrough = shift; 概数型变量:礼物谷= k行序列号

int lastTrough = GetIndicatorLastTrough(移);

概数型变量:前番浪尖=获取钥匙的前番浪尖(K线数)

免得(OSMA [ currenttrough ] > OsMA[lastTrough] && Low[currentTrough] < Low[lastTrough])

免得(MACD线[礼物浪尖] MACD线[终于浪谷] 且 K线低[礼物浪尖] > 低k线[终于浪尖]

{

bullishDivergence[currentTrough] = OsMA[currentTrough];

牛分开[礼物浪尖]=MACD线[礼物浪尖]

if(drawDivergenceLines == 真的) 免得(画的后备是离线的=真的)

{

DrawPriceTrendLine(Time[currentTrough], Time[lastTrough],

Low[currentTrough], Low[lastTrough], Green, STYLE_SOLID);

绘制价钱倾向线(定位[礼物浪尖] ],定位[终于人家浪尖],最小量价钱[礼物浪尖],最小量价钱[终于的低谷],绿色,整行)

DrawIndicatorTrendLine(Time[currentTrough], Time[lastTrough],

OsMA[currentTrough],OsMA[lastTrough], Green, STYLE_SOLID);

绘制倡导者倾向线(定位[礼物浪尖],定位[终于人家浪尖],MACD线[礼物浪尖],MACD线[终于浪谷],绿色,整行)

}

if(displayAlert == 真的) 免得(显示受雇杀人的枪手=真)

DisplayAlert(“Classical bullish divergence on: “, currentTrough);

显示受雇杀人的枪手(规范恐吓使歪斜外表):”,眼前的低谷

}

免得(OSMA [ currenttrough ] < OsMA[lastTrough] && Low[currentTrough] > Low[lastTrough])

//免得(MACD线[礼物浪尖]最小量价钱[终于的低谷])

{

bullishDivergence[currentTrough] = OsMA[currentTrough];

牛分开[礼物浪尖]=MACD线[礼物浪尖]

if(drawDivergenceLines == 真的) 免得(画的后备是离线的=真的)

{

DrawPriceTrendLine(Time[currentTrough], Time[lastTrough], Low[currentTrough],

Low[lastTrough], Green, STYLE_DOT);

绘制价钱倾向线(定位[礼物浪尖] ],定位[终于人家浪尖],最小量价钱[礼物浪尖],最小量价钱[终于的低谷],绿色,虚线)

DrawIndicatorTrendLine(Time[currentTrough], Time[lastTrough],

OsMA[currentTrough],OsMA[lastTrough], Green, STYLE_DOT);

绘制倡导者倾向线(定位[礼物浪尖],定位[终于人家浪尖],MACD线[礼物浪尖],MACD线[终于浪谷],绿色,虚线)

}

if(displayAlert == 真的) 免得(正告受雇杀人的枪手是真的)

DisplayAlert(“Reverse bullish divergence on: “, currentTrough);

正告受雇杀人的枪手显示(反向无角动物出发):”,眼前的低谷

}

}

//+——————————————————————+

//|自构成释义行使职责无归属典型:捕获澳门星际官网行使职责|

//+——————————————————————+

void CatchBearishDivergence(int 移) //捕获澳门星际官网行使职责(K线数)

{

if(IsIndicatorPeak(移) == 假) //免得(其中的哪人家是钥匙的波谷(K线数)=假)

return;

int currentPeak = shift; 电流波谷值k线序列号

int lastPeak = GetIndicatorLastPeak(移); //前番波谷=获取钥匙的前番波谷(K线数)

免得(OSMA [峰电流] < OsMA[lastPeak] && High[currentPeak] > High[lastPeak])

免得(MACD柱线[礼物波谷值]出色的价钱[终于一波]

{

bearishDivergence[currentPeak] = OsMA[currentPeak];

//澳门星际官网[礼物波谷]=MACD柱线[礼物波谷]

if(drawDivergenceLines == 真的) 免得(画的后备是离线的=真的)

{

DrawPriceTrendLine(Time[currentPeak], Time[lastPeak], High[currentPeak],

High[lastPeak], Red, STYLE_SOLID);

绘制价钱倾向线(定位[礼物波谷],定位[终于一波],出色的价钱[电流波],出色的价钱[终于一波],白色,整行)

DrawIndicatorTrendLine(Time[currentPeak], Time[lastPeak], OsMA[currentPeak],

OsMA[lastPeak], Red, STYLE_SOLID);

绘制倡导者倾向线(定位[礼物波谷值],定位[终于一波],MACD柱线[礼物波谷],MACD线[终于一波],白色,整行)

}

if(displayAlert == 真的) 免得(受雇杀人的枪手显示= TRUE)

DisplayAlert(“Classical bearish divergence on: “, currentPeak);

//受雇杀人的枪手显示(“规范澳门星际官网呈现:电流波的峰值

}

免得(OSMA [峰电流] > OsMA[lastPeak] && High[currentPeak] < High[lastPeak])

免得(MACD柱线[礼物波谷值]>MACD线[终于一波] 且出色的价钱[电流波]<出色的价钱[终于一波]

{

bearishDivergence[currentPeak] = OsMA[currentPeak];

//澳门星际官网[礼物波谷]=MACD柱线[礼物波谷]

if(drawDivergenceLines == 真的) 免得(画的后备是离线的=真的)

{

DrawPriceTrendLine(Time[currentPeak], Time[lastPeak], High[currentPeak],

High[lastPeak], Red, STYLE_DOT);

绘制价钱倾向线(定位[礼物波谷],定位[终于一波],出色的价钱[电流波],出色的价钱[终于一波],白色,虚线)

DrawIndicatorTrendLine(Time[currentPeak], Time[lastPeak], OsMA[currentPeak],

OsMA[lastPeak], Red, STYLE_DOT);

绘制倡导者倾向线(定位[礼物波谷值],定位[终于一波],MACD柱线[礼物波谷],MACD线[终于一波],白色,虚线)

}

if(displayAlert == 真的) 免得(正告受雇杀人的枪手是真的)

DisplayAlert(“Reverse bearish divergence on: “, currentPeak);

//预警受雇杀人的枪手显示(“反向澳门星际官网呈现:电流波的峰值

}

}

//+——————————————————————+

//|自构成释义行使职责逻辑型:评价钥匙波谷功用|

//+——————————————————————+

bool IsIndicatorPeak(int 移) //倡导者其中的哪人家为峰值K线数)

{

免得(OSMA [转变] > 0 && 奥斯马[转变] > OsMA[shift+1] && 奥斯马[转变] > OsMA[shift-1])

免得(MACD柱行k行数>0) 且 MACD线[ K线] MACD柱行[ K线序列号 1 ] 且MACD线[ K线] MACD柱[ K线序列号- 1 ]

{

为(int i = shift + 1; i < Bars; i++) //成圈查找(i=K线性的序列号+1,i

{

if(奥斯马[我] < 0) //免得(MACD柱行[ i ]<0)

return(真的);

if(奥斯马[我] > 奥斯马[转变]) 免得(MACD柱行[ i ]>MACD线[ K线]

break; //跳绳

}

}

return(假); 归属(false)

}

//+——————————————————————+

//|自构成释义行使职责逻辑型:判别行使职责|

//+——————————————————————+

bool IsIndicatorTrough(int 移) //倡导者其中的哪人家为浪尖K线数)

{

免得(OSMA [转变] < 0 && 奥斯马[转变] < OsMA[shift+1] && 奥斯马[转变] < OsMA[shift-1])

若(MACD柱行[ K线数]<0 且 MACD柱线[K线性的序列号]< MACD柱行[ K线序列号 1 ] 且MACD线[ K线]

{

为(int i = shift + 1; i < Bars; i++) //成圈查找(i=K线性的序列号+1,i

{

if(奥斯马[我] > 0) //免得(MACD柱行[ i ]>0)

return(真的);

if(奥斯马[我] < 奥斯马[转变]) //免得(MACD柱行[ i ]>MACD线[ K线]

break; //跳绳

}

}

return(假); 归属(false)

}

//+——————————————————————+

//|自构成释义行使职责概数型:失掉倡导者的终于一次动摇|

//+——————————————————————+

int GetIndicatorLastPeak(int 移) //失掉倡导者的终于一次动摇(K线性的序列号)

{

为(int i = shift + 5; i < Bars; i++) //成圈查找(i=K线性的序列号+5;i

{

if(奥斯马[我] >= OsMA[i+1] && 奥斯马[我] > OsMA[i+2] &&

奥斯马[我] >= 奥斯马[·] && 奥斯马[我] > OsMA[i-2])

//免得(MACD柱行[ i ] MACD柱线[ i 1 ] 且MACD柱行[ i ]>MACD柱线[i+2]

且MACD柱行[ i ] MACD柱线[·] 且MACD柱行[ i ]>MACD柱线[i-2])

归属(i) 归属(i)

}

归属(- 1) 归属(- 1)

}

//+——————————————————————+

//|自构成释义行使职责概数型:进入终于任何人槽|

//+——————————————————————+

int GetIndicatorLastTrough(int 移) //进入终于任何人槽(K线性的序列号)

{

为(int i = shift + 5; i < Bars; i++) //成圈查找(i=K线性的序列号+5;i

{

if(奥斯马[我] <= OsMA[i+1] && 奥斯马[我] < OsMA[i+2] &&

奥斯马[我] <= 奥斯马[·] && 奥斯马[我] < OsMA[i-2])

//免得(MACD柱行[ i ] <=MACD柱线[i+1] 且MACD柱行[ i ]

且MACD柱行[ i ] <=MACD柱线[i-1] 且MACD柱行[ i ]

归属(i) 归属(i)

}

归属(- 1) 归属(- 1)

}

//+——————————————————————+

//|自构成释义行使职责无归属典型:预警受雇杀人的枪手显示|

//+——————————————————————+

void DisplayAlert(string message, int 移) //预警受雇杀人的枪手显示(留心,K线性的序列号)

{

免得(移 <= 2 && Time[shift] != lastAlertTime)

//免得(K线性的序列号<=2 且 定位[K线性的序列号]≠前番受雇杀人的枪手定位)

{

lastAlertTime = 时期[轮流] //前番受雇杀人的枪手定位=定位[K线性的序列号]

警报(音讯, Symbol(), ” , “, Period(), ” minutes 图)

突然出现正告窗口(留心),眼前的钱币对,“,”礼物自行车,分钟计算

}

}

//+——————————————————————+

//|自构成释义行使职责无归属典型:描写价钱排队|

//+——————————————————————+

void DrawPriceTrendLine(datetime x1, datetime x2, double y1,

double y2, color lineColor, double 风骨)

//描写价钱排队(x1时期和日期典型,X2-时期和日期典型,Y1-小数的型,Y2-小数的型,认为色,认为典型小数的型)

{

string label = ” ” + DoubleToStr(x1, 0);

//制表=“背离线”+小数的到说法(X1,0)

ObjectDelete(label); 拟出不赞成(制表)

ObjectCreate(label, OBJ_TREND, 0, x1, y1, x2, y2, 0, 0);

找到不赞成(制表)),倾向线,0,X1,Y1,X2,Y2,0,0,)

量(制表, OBJPROP_RAY, 0); 不赞成的属性设置(制表),射线,0)

量(制表, OBJPROP_COLOR, lineColor); 不赞成的属性设置(制表),色,线的色)

量(制表, OBJPROP_STYLE, 风骨); 不赞成的属性设置(制表),认为典型,型)

}

//+——————————————————————+

//|自构成释义行使职责无归属典型:图线倾向线|

//+——————————————————————+

void DrawIndicatorTrendLine(datetime x1, datetime x2, double y1,

double y2, color lineColor, double 风骨)

//图线倾向线(X1-时期和日期典型,X2-时期和日期典型,Y1-小数的型,Y2-小数的型,认为色,典型小数的型)

{

int indicatorWindow = WindowFind(“(” + fastEMA + “,” + slowEMA + “,” + signal + “)”);

倡导者窗=倡导者反省(fx5_使歪斜( 表达EMA),均线慢线,使感动自行车

if(indicatorWindow < 0)

免得(钥匙窗口的号码)<0

return;

string label = “$# ” + DoubleToStr(x1, 0);

制表目录=钱#离线 值的说法(x1,0)

ObjectDelete(label);

拟出不赞成(制表)

ObjectCreate(label, OBJ_TREND, indicatorWindow, x1, y1, x2, y2, 0, 0);

找到不赞成(制表),趋线,钥匙窗口,X1,Y1,X2,Y2,0,0)

量(制表, OBJPROP_RAY, 0);

不赞成的属性设置(制表),射线,0)

量(制表, OBJPROP_COLOR, lineColor);

不赞成的属性设置(制表),色,线的色)

量(制表, OBJPROP_STYLE, 风骨);

不赞成的属性设置(制表),认为典型,型)

}

//+——————————————————————+

clip_image002

正文:MACD柱线的功用=iOsMA()

该功用称为OsMA在是你这么说的嘛!钥匙,实为:MACD(12,26,9)时期柱状图。