#property copyright "Copyright © 2008, beginnertrader.com" #property link "http://www.beginnertrader.com" #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Black extern int displayType = 2; extern string _ = "0: Line, 2: Histogram, 3: Dot/Scatter"; extern string pair1 = "EURUSD"; extern string pair2 = "USDCHF"; extern int averagePeriod = 10; extern color graphColour = Navy; extern color levelColour = DarkGray; int gi_unused_116 = 1440; double g_ibuf_120[]; double gda_124[]; double gda_128[]; int init() { SetIndexStyle(0, displayType, STYLE_SOLID, 2, graphColour); SetIndexBuffer(0, g_ibuf_120); if (displayType == DRAW_ARROW) SetIndexArrow(0, 158); SetLevelValue(0, -4); SetLevelValue(1, -3); SetLevelValue(2, -2); SetLevelValue(3, 2); SetLevelValue(4, 3); SetLevelValue(5, 4); SetLevelStyle(2, 1, levelColour); IndicatorShortName("Normalised Divergence v01 (" + pair1 + " | " + pair2 + ")"); return (0); } int deinit() { Comment(""); return (0); } int start() { double ld_4; double ld_12; double ld_20; for (int li_0 = 0; li_0 < Bars - averagePeriod; li_0++) { ld_4 = iClose(pair1, 0, li_0) - iClose(pair2, 0, li_0); ld_12 = average(pair1, pair2, li_0); ld_20 = deviation(pair1, pair2, li_0); g_ibuf_120[li_0] = (ld_4 - ld_12) / ld_20; } return (0); } double average(string as_unused_0, string as_unused_8, int ai_16 = 0) { for (int l_index_20 = 0; l_index_20 <= averagePeriod; l_index_20++) { ArrayResize(gda_124, l_index_20 + 1); gda_124[l_index_20] = iClose(pair1, 0, ai_16 + l_index_20) - iClose(pair2, 0, ai_16 + l_index_20); } return (iMAOnArray(gda_124, 0, averagePeriod, 0, MODE_SMA, 0)); } double deviation(string as_unused_0, string as_unused_8, int ai_16 = 0) { for (int l_index_20 = 0; l_index_20 <= averagePeriod; l_index_20++) { ArrayResize(gda_128, l_index_20 + 1); gda_128[l_index_20] = iClose(pair1, 0, ai_16 + l_index_20) - iClose(pair2, 0, ai_16 + l_index_20); } return (iStdDevOnArray(gda_128, 0, averagePeriod, 0, MODE_SMA, 0)); }