Stock Portfolio Organizer

The ultimate porfolio management solution.

Shares, Margin, CFD's, Futures and Forex
EOD and Realtime
Dividends and Trust Distributions
And Much More ....
For Portfolio Manager Click Here

WiseTrader Toolbox

#1 Selling Amibroker Plugin featuring:

Advanced Adaptive Indicators
Advanced Pattern Exploration
Neural Networks
And Much More ....
Find Out More Here

VWAP Multi for Amibroker (AFL)

Rating:
5 / 5 (Votes 1)
Tags:
amibroker

1. Ctrl + left mouse to create lines
2. Ctrl + middle mouse button to delete lines

Screenshots

Indicator / Formula

Copy & Paste Friendly
_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

2. tgbssk

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)

Leave Comment

Please login here to leave a comment.

Back