Here is an eSignal script of MACD similar to the one contained in nexgen software that costs over $10,000 which is a bollinger band study on macd. What changes should I make to have this run in AB? Thanks for any suggestions.
Dennis eSignal Formula Script --- Printed on: 12/1/2007, 11:14:53 PM --- Page 1 1 /* 2 MACD BB 3 Developed by David Laffineuse, December 2007 4 http://tradersguild.wordpress.com 5 [EMAIL PROTECTED] 6 */ 7 8 var gUpperBoll = null; 9 var gLowerBoll = null; 10 var gMACD = null; 11 var gTagID = null; 12 13 function preMain() { 14 15 setPriceStudy(false); 16 setStudyTitle("DL_MACD_BB"); 17 setCursorLabelName("DL_MACD_UB",0); 18 setCursorLabelName("DL_MACD_LB",1); 19 setDefaultBarFgColor(Color.yellow,0); 20 setDefaultBarFgColor(Color.yellow,1); 21 setPlotType(PLOTTYPE_LINE,0); 22 setPlotType(PLOTTYPE_LINE,1); 23 setDefaultBarThickness(1,0); 24 setDefaultBarThickness(1,1); 25 26 fp1 = new FunctionParameter( "MACD_FL", FunctionParameter.NUMBER); 27 with(fp1) { 28 setName("MACD Fast Length"); 29 setDefault(12); 30 } 31 fp2 = new FunctionParameter( "MACD_SL", FunctionParameter.NUMBER); 32 with(fp2) { 33 setName("MACD Slow Length"); 34 setDefault(26); 35 } 36 fp3 = new FunctionParameter( "MACD_SM", FunctionParameter.NUMBER); 37 with(fp3) { 38 setName("MACD Smoothing"); 39 setDefault(9); 40 } 41 fp4 = new FunctionParameter( "Boll_Length", FunctionParameter.NUMBER); 42 with(fp4) { 43 setName("Bollinger Length"); 44 setDefault(20); 45 } 46 fp5 = new FunctionParameter( "Boll_STD", FunctionParameter.NUMBER); 47 with(fp5) { 48 setName("Bollinger Standard Deviation"); 49 setDefault(2); 50 } 51 52 } 53 54 function main(MACD_FL,MACD_SL,MACD_SM,Boll_Length,Boll_STD){ 55 56 var dblMACD = null; // MACD value @ current bar 57 var dblMACD_1 = null; // MACD value @ previous bar 58 var dblUpperBoll = null; // Upper BB value 59 var dblLowerBoll = null; // Lower BB value 60 var strBasisColor = null; // Basis color 61 var strCircleColor = null; // Circle Color 62 63 // Instantiations of studies (done once) 64 65 if (gMACD == null) { 66 gMACD = macd(MACD_FL,MACD_SL,MACD_SM); 67 gUpperBoll = upperBB(Boll_Length,Boll_STD,gMACD); 68 gLowerBoll = lowerBB(Boll_Length,Boll_STD,gMACD); 69 } 70 71 // Rounding required to enable proper white circle assessment 72 dblMACD = Math.round((gMACD.getValue(0))*10000)/10000; 73 dblMACD_1 = Math.round((gMACD.getValue(-1))*10000)/10000; 74 dblUpperBoll = Math.round((gUpperBoll.getValue(0))*10000)/10000; 75 dblLowerBoll = Math.round((gLowerBoll.getValue(0))*10000)/10000; C:\Program Files\eSignal\Formulas\DL_Formulas\DL_MACD_BB.efs --- File time: 10:55:42 PM eSignal Formula Script --- Printed on: 12/1/2007, 11:14:53 PM --- Page 2 76 77 // MACD plot 78 if (dblMACD > dblMACD_1) strCircleColor = "Color.green"; 79 else if (dblMACD == dblMACD_1) strCircleColor = "Color.white"; 80 else if (dblMACD < dblMACD_1) strCircleColor = "Color.red"; 81 82 drawShapeRelative(0, dblMACD, Shape.CIRCLE, null, eval (strCircleColor), Shape.ONTOP ); 83 84 // changes the color of the band based on the value of the MACD 85 if (dblMACD >= 0) strBasisColor = "Color.green"; else strBasisColor = "Color.red"; 86 87 drawLineRelative(-1,0,0,0, PS_SOLID, 2, eval (strBasisColor),fnGetTagID()); 88 addBand(0,PS_SOLID,2,eval(strBasisColor),"0line"); 89 90 return new Array (dblUpperBoll,dblLowerBoll); 91 92 } 93 function fnGetTagID() { 94 gTagID += 1; 95 return gTagID; 96 } C:\Program Files\eSignal\Formulas\DL_Formulas\DL_MACD_BB.efs --- File time: 10:55:42 PM