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}}";

0 comments

Leave Comment

Please login here to leave a comment.

Back