Stock Portfolio Organizer
The ultimate porfolio management solution.
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
Weight + Volume + Move-Adjusted Moving Average for eSignal (EFS)
This is a moving average adjusted by both volume and size of a move. All credit to the original author.
You can read more about it here
Indicator / Formula
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | /********************************************************* By Alexis C. Montenegro © September 2006 Use and/or modify this code freely. If you redistribute it please include this and/or any other comment blocks and a description of any changes you make. **********************************************************/ var fpArray = new Array(); function preMain() { setPriceStudy( true ); setStudyTitle( "WEVOMO" ); setCursorLabelName( "WEVOMO" ,0); setDefaultBarFgColor(Color.blue,0); setPlotType(PLOTTYPE_LINE,0); setDefaultBarThickness(1,0); var x=0; fpArray[x] = new FunctionParameter( "Type" , FunctionParameter.STRING); with (fpArray[x++]){ addOption( "MOMA" ); addOption( "VOMA" ); addOption( "VOMOMA" ); addOption( "WEVOMO" ); setDefault( "WEVOMO" ); } fpArray[x] = new FunctionParameter( "Length" , FunctionParameter.NUMBER); with (fpArray[x++]){ setLowerLimit(1); setDefault(10); } fpArray[x] = new FunctionParameter( "Source" , FunctionParameter.STRING); with (fpArray[x++]){ addOption( "open" ); addOption( "high" ); addOption( "low" ); addOption( "close" ); addOption( "hl2" ); addOption( "hlc3" ); addOption( "ohlc4" ); setDefault( "close" ); } fpArray[x] = new FunctionParameter( "Symbol" , FunctionParameter.STRING); with (fpArray[x++]){ setDefault(); } fpArray[x] = new FunctionParameter( "Interval" , FunctionParameter.STRING); with (fpArray[x++]){ setDefault(); } fpArray[x] = new FunctionParameter( "Params" , FunctionParameter.BOOLEAN); with (fpArray[x++]){ setName( "Show Parameters" ); setDefault( false ); } } var bInit = false ; var xWEVOMO = null ; function main(Type,Length,Source,Symbol,Interval,Params){ if (bInit == false ){ if (Symbol == null ) Symbol = getSymbol(); if (Interval == null ) Interval = getInterval(); var vSymbol = Symbol+ "," +Interval; xWEVOMO = getSeries(efsInternal( "calcAvg" ,Type,Length,eval(Source)(sym(vSymbol)))); setShowTitleParameters(eval(Params)); bInit = true ; } return xWEVOMO; } var xVol = null ; var xAvg = null ; function calcAvg(type,length,source){ if (getCurrentBarCount()<=length+1) return ; if (xVol== null ) xVol = volume(); if (xAvg== null ) xAvg = wma(length,source); var SumVol = 0; var Value1 = 0; var MOMA = 0; var VOMA = 0; for ( var i=0; i<length; i++){ SumVol += xVol.getValue(-i); Value1 += Math.abs(source.getValue(-i)-source.getValue(-(i+1))); } if (SumVol<=0 || Value1<=0) return ; for ( var i=0; i<length; i++){ MOMA += source.getValue(-i)*(Math.abs(source.getValue(-i)-source.getValue(-(i+1)))/Value1); VOMA += source.getValue(-i)*(xVol.getValue(-i)/SumVol); } var WEMA = xAvg.getValue(0); if (MOMA== null ||VOMA== null ||WEMA== null ) return ; if (type== "WEVOMO" ){ var ret = (WEMA+VOMA+MOMA)/3; } else if (type== "VOMOMA" ){ var ret = (VOMA+MOMA)/2; } else if (type== "VOMA" ){ var ret = VOMA; } else if (type== "MOMA" ){ var ret = MOMA; } return ret; } |
1 comments
Leave Comment
Please login here to leave a comment.
Back
Not working.