Stock Portfolio Organizer
The ultimate porfolio management solution.
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
VWAP Multi for Amibroker (AFL)
1. Ctrl + left mouse to create lines
2. Ctrl + middle mouse button to delete lines
Screenshots
Indicator / Formula
_SECTION_BEGIN("Price"); SetChartOptions(0,chartShowArrows|chartShowDates); _N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) )); Plot( C, "Close", ParamColor("Color", colorDefault ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() ); _SECTION_END(); _SECTION_BEGIN("VWAP MULTI"); rightstrength = Param( "Right Strength", 5, 2, 50, 1 ); leftstrength = Param( "Left Strength", 5, 2, 50, 1 ); fact = Param( "Chart Time Frame Factor", 1, 1, 10, 1 ); nbars = Param( "nbars", 50, 0, 500, 0.1 ); ww = Param( "width", 5, 0, 10, 1 ); dn = DateTime(); sd = SelectedValue( dn ); start = dn == sd; //start = DateNum() == 1081031; // Midas example start point stidx = LastValue( ValueWhen( start, BarIndex() ) ); bi = BarIndex(); fvb = FirstVisibleValue( bi ); lvb = LastVisibleValue( bi ); rightStrength = rightStrength * fact; leftStrength = leftStrength * fact; pk = H == HHV( H, leftstrength ) AND Ref( HHV( H, rightstrength ), rightstrength ) < H; tr = L == LLV( L, leftstrength ) AND Ref( LLV( L, rightstrength ), rightstrength ) > L; if( tr[stidx] ) { mp = L; } else if( pk[stidx] ) { mp = H; } else { mp = ( H + L ) / 2; } function NewBarJustArrived() { // function by T. Janeczko vname = "lbe" + GetChartID(); prev = Nz( StaticVarGet( vname ) ); curr = Status( "lastbarend" ); StaticVarSet( vname, curr ); return curr != prev; } /// VWAP-Multi-Storage AFL /// by fxshrat /// it uses CTRL + mouse button click toi set lines (read instructions in chart title /// code updates lines on new incoming price data. /// @link http://forum.amibroker.com/t/multiple-anchored-vwap/4739/10 /// modified from GUI version /// @link http://forum.amibroker.com/t/multiple-anchored-vwap/4739/4 dt = DateTime(); sdt = SelectedValue(dt); newbar = NewBarJustArrived(); gcmb = GetCursorMouseButtons(); lmb = gcmb == 9; mmb = gcmb == 12; CTRL = GetAsyncKeyState(17) < 0; start = dt == sdt; num = cumpvol = Cum( mp * V ) - ValueWhen( Ref( start, 1 ), Cum( mp * V ) ); denom = Cum( V ) - ValueWhen( Ref( start, 1 ), Cum( V ) ); vwap = IIf( BarsSince(start) > 0, num / Max(1, denom), mp ); nm = Name(); vwapstr = nm + "VWAP"; cntstr = nm + "VWAP_cnt"; dnstr = nm + "VWAP_DN"; if( CTRL && lmb ) { staticget = Nz( StaticVarGet( cntstr ) ); //Say( "Store V.W.A.P."+(staticget+1) ); StaticVarSet( cntstr, staticget+1, True ); StaticVarSet( vwapstr + staticget, vwap, True ); StaticVarSet(dnstr + staticget, sdt, True ); } if( CTRL && mmb ) { //Say( "Reset VWAPs" ); StaticVarRemove( vwapstr + "*" ); StaticVarRemove( dnstr + "*" ); StaticVarRemove( cntstr ); } // Output SetChartOptions( 0, chartShowDates | chartWrapTitle ); //Plot( C, Date() + " - Close", colorYellow, styleBar ); Plot( vwap, "VWAP" , colorOrange, styleThick ); for( i = 0; i < Nz(StaticVarGet( cntstr )); i++ ) { if( newbar ) { //Say( "This is new bar!" ); staticsd = StaticVarGet( dnstr + i ); staticstart = dt == staticsd; staticnum = CumPV - ValueWhen( staticstart, CumPV ); staticdenom = CV - ValueWhen( staticstart, CV ); static_vwap = IIf( BarsSince( staticstart ) > 0, staticnum / Max(1, staticdenom), mp ); StaticVarSet( vwapstr + i, static_vwap, True ); } Plot( StaticVarGet(vwapstr + i ), "VWAP" + (i+1), colorYellow, styleThick ); } if( Nz( LastValue(StaticVarGet( vwapstr + "0" ) )) == 0) Title = EncodeColor(colorRed) + "1. Ctrl + left mouse to create lines\n2. Ctrl + Middle mouse button to delete lines\n{{VALUES}}";
1 comments
Leave Comment
Please login here to leave a comment.
Back
This is good….
I was trying without mouse. Like aVWAP(13,isFixed) * i.e. simply start Plotting the aVWAP From nBars before current candle and when new bar(s) added there will be 2 options with *isFixed parameter (1) either shift the aVWAP(13,isFixed=False) from left side to right side with additions of new bars with Fixed value of parameter and skip the old point OR (2) keep the aVWAP as it is but it will be aVWAP of (13+New_Added_Bars,isFixed=True)