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

VORACL System (VSA+Volume Profile+VWAP) for Amibroker (AFL)

Rating:
3 / 5 (Votes 4)
Tags:
intraday, vsa, vwap, Volume Profile, amibroker

VORACL System – By DeanMarketProfile

This AFL is prepared by combining codes from different freely available non copyright indicators.
This AFL combines 3 powerful indicators to create a system which helps you trade the markets on very short time frame to longer investment horizon time frames.
I sincerely hope this indicator helps you understand the VSA signals as well as use the Auction Market Theory Principles to take low risk high reward trades.

Regards
Dean

Screenshots

Indicator / Formula

Copy & Paste Friendly
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
_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("Universal VSA 2");
// Volume Calculations //
av=MA(V,30); //avg vol
uhv=IIf(V>2*av,1,Null); //very high vol
hV=IIf(V>1.1*av AND V<2*av,1,Null); //high volume
Lv=IIf(V>0.5*aV AND V<0.9*av,1,Null); //low volume
ulv=IIf(V<0.5*av,1,Null); //ultra low vol
 
// Range Calculations //
r=H-L; //daily range
Hb=(H+L)/2; //Half Back
ar=EMA(r,30); //avg range
uwrb=IIf(r>2*ar,1,Null); // ultra wide range bar
wrb=IIf(r>1.33*ar AND r<2*ar,1,Null); //wide range bar
nrb=IIf(r>0.67*ar AND r<1.33*ar,1,Null); //nrmal range bar
srb=IIf(r<0.67*ar,1,Null); //small range bar
usrb=IIf(r<0.5*ar,1,Null); // ultra small range bar
PlotOHLC(Null,H,L,C,"Price",IIf(C>Ref(C,-1),colorBlue,IIf(C==Ref(C,-1),colorBlack,colorRed)),styleBar+styleThick);
 
// Diamond Trending System
wm=WMA(C,40);
Plot(wm,"WMA",IIf(wm>Ref(wm,-1),colorSkyblue,colorLightOrange),styleDots+styleThick+styleNoLine);
 
// Close Position //
u3=IIf(C>(H-r/3),1,Null); // Upper 3rd
m3=IIf(C<(H-r/3) AND C>(L+r/3),1,Null); // Middle 3rd
L3=IIf(C<(L+r/3),1,Null); // Lower 3rd
 
// Trend //
h5d=IIf(H>Ref(HHV(H,5),-1),1,Null); // 5 day high
h20d=IIf(H>Ref(HHV(H,20),-1),1,Null); // 20 day high
h50d=IIf(H>Ref(HHV(H,50),-1),1,Null); // 50 day high
h100d=IIf(H>Ref(HHV(H,100),-1),1,Null); // 100 day high
l5d=IIf(L<Ref(LLV(L,5),-1),1,Null); // 5 day low
l20d=IIf(L<Ref(LLV(L,20),-1),1,Null); // 20 day low
l50d=IIf(L<Ref(LLV(L,50),-1),1,Null); // 50 day low
l100d=IIf(L<Ref(LLV(L,100),-1),1,Null); // 100 day low
 
//SOS//
//Stopping Volume
sos1=C<Ref(C,-1) AND ((V>Ref(HHV(V,3),-1) AND l20d) OR uhv) AND (uwrb OR wrb) AND (m3 OR u3);
//Selling Climax
sos2=C<Ref(C,-1) AND ((hv AND l20d) OR uhv) AND (uwrb OR wrb) AND (m3 OR u3) ;
//Demand Overcoming Supply
sos3=C<Ref(C,-1) AND (m3 OR u3) AND (nrb OR srb) AND (l20d OR uhv);
//Bag Holding
sos4=C<Ref(C,-1) AND uhv AND H<Ref(L,-1) AND (nrb OR srb OR usrb) AND l100d;
//Shake Out
sos5=(uwrb OR wrb OR r>ar) AND u3 AND l5d;
//No Supply
sos6=C<Ref(C,-1) AND ((r<Ref(r,-1)AND r<Ref(r,-2)) OR srb OR usrb) AND (V<Ref(V,-1) AND V<Ref(V,-2));
//Professional Buying
sos7=C<Ref(C,-1) AND L3 AND (uhv OR ((Hv OR V>Ref(HHV(V,5),-1)) AND L5d)) AND Ref(C,1)>C;
//Trap Dn Move
sos8=L<Ref(L,-1) AND C>Ref(H,-1) AND (hv OR uhv OR V>Ref(HHV(V,5),-1));
 
//SOS Plotting//
//Stopping Volume
PlotShapes(IIf(sos1,shapeSmallUpTriangle,Null),IIf(Ref(C,1)>C,colorGreen,colorPaleGreen),0,Low);
//Selling Climax
PlotShapes(IIf(sos2,shapeSmallUpTriangle,Null),IIf(Ref(C,1)>C,colorGreen,colorPaleGreen),0,Low);
//Demand Overcoming Supply
PlotShapes(IIf(sos3,shapeSmallUpTriangle,Null),IIf(Ref(C,1)>C,colorGreen,colorPaleGreen),0,Low);
//Bag Holding
PlotShapes(IIf(sos4,shapeSmallUpTriangle,Null),IIf(Ref(C,1)>C,colorGreen,colorPaleGreen),0,Low);
//Shake Out
PlotShapes(IIf(sos5,shapeUpArrow,Null),IIf(Ref(C,1)>C,colorGreen,colorPaleGreen),0,Low);
//No Supply
PlotShapes(IIf(sos6,shapeSmallCircle,Null),IIf(Ref(C,1)>C,colorGreen,colorPaleGreen),0,Low);
//Professional Buying
PlotShapes(IIf(sos7,shapeUpArrow,Null),IIf(Ref(C,1)>C,colorGreen,colorPaleGreen),0,Low);
//Trap Dn Move
PlotShapes(IIf(sos8,shapeSmallUpTriangle,Null),IIf(Ref(C,1)>C,colorGreen,colorPaleGreen),0,Low);
 
//SOW//
//Supply Coming In
sow1=C>Ref(C,-1) AND ((V>Ref(HHV(V,3),-1) AND h20d) OR uhv) AND (uwrb OR wrb) AND (m3 OR l3);
//Buying Climax
sow2=C>Ref(C,-1) AND ((hv AND h20d) OR uhv) AND (uwrb OR wrb) AND (l3 OR m3);
//Supply Overcoming Demand
sow3=C>Ref(C,-1) AND (m3 OR l3) AND (nrb OR srb) AND (h20d OR uhv);
//End Of Rising Market
sow4=C>Ref(C,-1) AND uhv AND (nrb OR srb OR usrb) AND h100d;
//Upthrust
sow5=(uwrb OR wrb OR r>ar) AND l3 AND h5d;
//No Demand
sow6=C>Ref(C,-1) AND ((r<Ref(r,-1)AND r<Ref(r,-2)) OR srb OR usrb) AND (V<Ref(V,-1) AND V<Ref(V,-2));
//Professional Selling
sow7=C>Ref(C,-1) AND u3 AND (uhv OR ((hv OR V>Ref(HHV(V,5),-1)) AND H5d)) AND Ref(C,1)<C;
//Trap Up Move
sow8=H>Ref(H,-1) AND C<Ref(L,-1) AND (hv OR uhv OR V>Ref(HHV(V,5),-1));
 
//SOW Plotting//
//Supply Coming In
PlotShapes(IIf(sow1,shapeSmallDownTriangle,Null),IIf(Ref(C,1)<C,colorRed,colorPink),0,High);
//Buying Climax
PlotShapes(IIf(sow2,shapeSmallDownTriangle,Null),IIf(Ref(C,1)<C,colorRed,colorPink),0,High);
//Supply Overcoming Demand
PlotShapes(IIf(sow3,shapeSmallDownTriangle,Null),IIf(Ref(C,1)<C,colorRed,colorPink),0,High);
//End Of Rising Market
PlotShapes(IIf(sow4,shapeSmallDownTriangle,Null),IIf(Ref(C,1)<C,colorRed,colorPink),0,High);
//Upthrust
PlotShapes(IIf(sow5,shapeDownArrow,Null),IIf(Ref(C,1)<C,colorRed,colorPink),0,High);
//No Demand
PlotShapes(IIf(sow6,shapeSmallCircle,Null),IIf(Ref(C,1)<C,colorRed,colorPink),0,High,12);
//Professional Selling
//PlotShapes(IIf(sow7,shapeDownArrow,Null),IIf(Ref(C,1)<C,colorRed,colorPink),0,High);
//Trap Up Move
PlotShapes(IIf(sow8,shapeSmallDownTriangle,Null),IIf(Ref(C,1)<C,colorRed,colorPink),0,High);
 
//TITLE
if( Status("action") == actionIndicator )
(
Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} High %g, Low %g, Close %g ", H, L, C )+ "\n"+
//Title = Name()+"  "+Interval()+" "+Date()+"  "+"High "+High+"  "+"Low "+Low+"  "+"Close "+Close +
EncodeColor(colorGreen)+
WriteIf (sos1, "Stopping Volume  "+"\n","")+
WriteIf (sos2, "Selling Climax  "+"\n","")+
WriteIf (sos3, "Demand Overcoming Supply  "+"\n","")+
WriteIf (sos4, "Bag Holding  "+"\n","")+
WriteIf (sos5, "Shakeout  "+"\n","")+
WriteIf (sos6, "No Supply  "+"\n","")+
WriteIf (sos7, "Professional Buying  "+"\n","")+
WriteIf (sos8, "Trap Down Move  "+"\n","")+
EncodeColor(colorRed)+
WriteIf (sow1, "Supply Coming In  "+"\n","")+
WriteIf (sow2, "Buying Climax  "+"\n","")+
WriteIf (sow3, "Supply Overcoming Demand  "+"\n","")+
WriteIf (sow4, "End OF Rising Market  "+"\n","")+
WriteIf (sow5, "Upthrust  "+"\n","")+
WriteIf (sow6, "No Demand  "+"\n","")+
WriteIf (sow7, "Professional Selling  "+"\n","")+
WriteIf (sow8, "Trap Up Move  "+"\n","")
);
 
//Commentary
if( Status("action") == actionCommentary )
(
printf ( "VOLUME PRICE ANALYSIS" +"\n"+"\n"));
 
WriteIf (sos1, "Stopping Volume 
 
BG: Downtrend.
 
FF: Shakeouts AND Tests AND Test Of Demand area On Low Volume AND narrow spreads.
 
UNF: High Volume up bars closing off the highs, Upthrusts, No Demand" +"\n"+"\n","")+
WriteIf (sos2, "Selling Climax 
 
BG: Downtrend.
 
FF: Shakeouts AND Tests AND Test Of DEMAnd area On Low Volume AND narrow spreads.
 
UNF: High Volume up bars closing off the highs, Upthrusts, No Demand" +"\n"+"\n","")+
WriteIf (sos3, "Demand Overcoming Supply 
 
BG: Downtrend.
 
FF: Volume is High expect shakeouts. Tests AND Test Of Demand area On Low Volume AND narrow spreads. Volume is Low expect Higher prices, failure to rise indicate MArket NOT ready to go up yet.
 
UNF: High Volume up bars closing off the highs, Upthrusts, No Demand" +"\n"+"\n","")+
WriteIf (sos4, "Bag Holding 
 
BG: Downtrend.
 
FF: Prices should rise immediately. Shakeouts AND Tests AND Test Of Demand area On Low Volume AND narrow spreads.
 
UNF: High Volume up bars closing off the highs, Upthrusts, No Demand" +"\n"+"\n","")+
WriteIf (sos5, "Shakeout 
 
BG: SOS, Selling Climax, Stopping Volume.
 
FF: Tests AND Test Of Demand area On Low Volume AND narrow spreads. Markets starts to move sideways AND whipsaws it may be building cause for next up move.
 
UNF: High Volume up bars closing off the highs, Upthrusts, No Demand" +"\n"+"\n","")+
WriteIf (sos6, "No Supply 
 
BG: SOS. Minor sign Of weakness in an uptrend. Weakness in the BG reduces its effectiveness.
 
FF: Next bar should be up. Small shakeout is Very bullish. The shakeout Can also be On two bars.
 
UNF: High Volume wide spread down bar."+"\n"+"\n","")+
WriteIf (sos7, "Professional Buying 
 
BG: Downtrend.
 
FF: Shakeouts AND Tests AND Test Of DEMAnd area On Low Volume AND narrow spreads.
 
UNF: High Volume up bars closing off the highs, Upthrusts, No Demand" +"\n"+"\n","")+
WriteIf (sos8, "Trap Down Move 
 
BG: Downtrend.
 
FF: Prices should rise immediately.
 
UNF: High Volume up bars closing off the highs, Upthrusts, No Demand" +"\n"+"\n","")+
////////////////////////////////////////////////////////////////////////////////////
WriteIf (sow1, "Supply Coming In
 
BG: After rising prices possible start Of distribution. Old top in BG possible absorption Volume.
 
FF: Upthrusts, no demand bars, High Volume up bars closing off the highs OR on narrow spreads.
 
UNF: High vol down bars closing off the lows, may need further testing. Prices move abv this area of supply, may come back to test it later, a Low Volume test would be bullish."+"\n"+"\n","")+
WriteIf (sow2, "Buying Climax  
 
BG: Uptrend.
 
FF: Upthrusts, no demand bars, High Volume up bars closing off the highs OR on narrow spreads.
 
UNF: Low Volume down bars OR High Volume down bars closing off the lows suggest, market is NOT ready to fall. High Volume up bars pushing through the old highs represent absorption Volume."+"\n"+"\n","")+
WriteIf (sow3, "Supply Overcoming Demand
 
BG: After rising market it is a start Of distribution. There is an Old top in BG then possible Absorption Volume.
 
FF: Upthrusts, no demand bars, High Volume up bars closing off the highs OR on narrow spreads.
 
UNF: High vol down bars closing off the lows, may need further testing. "+"\n"+"\n","")+
WriteIf (sow4, "End Of Rising Market
 
BG: Substantial up move.
 
FF: Test of this bar on narrow spreads AND Low Volume is further SOW.
 
UNF: No Supply bars OR dn bars on High Volume closing off the lows show sign of strength, needs testing. The weakness will NOT suddenly disappear. "+"\n"+"\n","")+
WriteIf (sow5, "Upthrust 
 
BG: Weakness in BG is a must, can be High Volume up bars closing in the middle OR no demand bars. There is strength in the background this may be tested OR may be False upthrusts.
 
FF: Expect lower prices. No demand adds to weakness. if we get a test dn AND we have weakness in the BG this may well fail.
 
UNF: No supply bar suggest lack of selling pressure. Dn bars on High Volume closing off the lows show sign of strength, needs testing. "+"\n"+"\n","")+
WriteIf (sow6, "No Demand  
 
BG: Weakness in the background OR minor SOS in a down trend. Strength in BG weakens its effect.
 
FF: Next bar should be down. Small upthrust is Very bullish. The upthrust Can also be On two bars.
 
UNF: High Volume wide spread up bar."+"\n"+"\n","")+
WriteIf (sow7, "Professional Selling    
 
BG: Uptrend.
 
FF: Upthrusts, no demand bars, High Volume up bars closing off the highs OR on narrow spreads.
 
UNF: Low Volume down bars OR High Volume down bars closing off the lows suggest, market is NOT ready to fall. No supply suggest lack of selling pressure."+"\n"+"\n","")+
WriteIf (sow8, "Trap Up Move   
 
BG: Uptrend.
 
FF: Prices should fall immediately.
 
UNF: High Volume down bars closing off the lows, Shakeouts, No Supply" +"\n"+"\n","")
;
 
// Buy Sell Overlay //
mystartbar = SelectedValue(BarIndex()); 
 
mystartbartime = LastValue(ValueWhen(mystartbar == BarIndex(), TimeNum(),1));
InitialValue = ValueWhen(mystartbar == BarIndex(), H , 1 ) ;
InitialValue1 = ValueWhen(mystartbar == BarIndex(), L , 1 ) ;
InitialValue2 = ValueWhen(mystartbar == BarIndex(), TimeFrameGetPrice("H",inDaily,0) , 1 ) ;
InitialValue3 = ValueWhen(mystartbar == BarIndex(), TimeFrameGetPrice("L",inDaily,0) , 1 ) ;
InitialValue4 = ValueWhen(mystartbar == BarIndex(), (TimeFrameGetPrice("H",inDaily,0)+TimeFrameGetPrice("L",inDaily,0))*0.5 , 1 ) ;
InitialValue5 = ValueWhen(mystartbar == BarIndex(), L-20 , 1 ) ;
InitialValue6 = ValueWhen(mystartbar == BarIndex(), H - 10 , 1 ) ;
InitialValue7 = ValueWhen(mystartbar == BarIndex(), L + 10 , 1 ) ;
Temp = IIf(BarIndex() >= mystartbar, InitialValue, Null) ;
Temp1 = IIf(BarIndex() >= mystartbar, InitialValue1, Null) ;
Temp2 = IIf(BarIndex() >= mystartbar, InitialValue2, Null) ;
Temp3 = IIf(BarIndex() >= mystartbar, InitialValue3, Null) ;
Temp4 = IIf(BarIndex() >= mystartbar, InitialValue4, Null) ;
Temp5 = IIf(BarIndex() >= mystartbar, InitialValue5, Null) ;
Temp6 = IIf(BarIndex() >= mystartbar, InitialValue6, Null) ;
Temp7 = IIf(BarIndex() >= mystartbar, InitialValue7, Null) ;
Plot(Temp, "H", colorGreen,styleThick);
Plot(Temp1, "L", colorRed,styleThick);
/*Plot(Temp2, "", colorBrown,styleDashed);
Plot(Temp3, "", colorBrown,styleDashed);
Plot(Temp4, "", colorBrown,styleDashed);
Plot(Temp5, "", colorBrown,styleDashed);
Plot(Temp6, "", colorBlue,styleDashed);
Plot(Temp7, "", colorBlue,styleDashed);*/
_SECTION_END();
 
_SECTION_BEGIN("VAP");
segments = IIf( Interval() < inDaily, Day(), Month() );
segments = segments != Ref( segments , -1 );
 
PlotVAPOverlayA( segments , Param("Lines", 300, 100, 1000, 1 ), Param("Width", 80, 1, 100, 1 ), ParamColor("Color", colorGold ), ParamToggle("Side", "Left|Right" ) | 2 * ParamToggle("Style", "Fill|Lines", 0) | 4*ParamToggle("Z-order", "On top|Behind", 1 ) );
Plot(segments, "", colorLightGrey, styleHistogram | styleOwnScale );
_SECTION_END();
 
_SECTION_BEGIN("VWAP");
/*
The VWAP for a stock is calculated by adding the dollars traded for every
transaction in that stock ("price" x "number of
      shares traded") and dividing the total shares traded. A VWAP is computed
from the Open of the market to the market Close, AND is
      calculated by Volume weighting all transactions during this time period
*/
 
Bars_so_far_today = 1 + BarsSince( Day() != Ref(Day(), -1));
bars_this_month = 1 + BarsSince( Month() != Ref(Month(), -1));
StartBar = ValueWhen(TimeNum() == 093000, BarIndex());
TodayVolume = Sum(V,Bars_so_far_today);
MonthVolume = Sum(V,bars_this_month);
VWAP_M = Sum (C * V, bars_this_month  ) / MonthVolume;
 
IIf (BarIndex() >= StartBar, VWAP = Sum (C * V, Bars_so_far_today  ) / TodayVolume,0);
Plot (VWAP,"VWAP",colorBrown, styleThick,Null,Null,Null,1);
//Plot (VWAP_M,"VWAP_M",colorGreen, styleLine,Null,Null,Null,1);
 
_SECTION_END();
 
_SECTION_BEGIN("Close Daily");
Plot(TimeFrameGetPrice("O",inDaily),"",colorGreen,styleThick,Null,Null,0,1);
Plot((TimeFrameGetPrice("H",inDaily)+TimeFrameGetPrice("L",inDaily))*0.5,"",colorGold,styleThick,Null,Null,0,1);
Plot(TimeFrameGetPrice("C",inDaily),"",colorRed,styleThick,Null,Null,0,1);
//Plot(Ref(LastValue(TimeFrameGetPrice("C",inDaily)),-50),"",colorIndigo,styleThick,Null,Null,50,1);
//Plot(Ref(LastValue(TimeFrameGetPrice("L",inDaily)),-50),"",colorIndigo,styleThick,Null,Null,50,1);
Plot(Ref(LastValue(TimeFrameGetPrice("C",inDaily)),-50),"",colorRed,styleThick+styleDashed,Null,Null,50,1);
//PlotShapes(IIf(Day()!=Ref(Day(),-1),shapeSmallSquare,Null),colorGreen,0,TimeFrameGetPrice("O",inDaily),0);
//PlotShapes(IIf(Day()!=Ref(Day(),-1),shapeSmallSquare,Null),colorRed,0,TimeFrameGetPrice("C",inDaily),0);
_SECTION_END();
 
_SECTION_BEGIN("Watermark");
GfxSetOverlayMode(1);
GfxSelectFont("Tahoma", Status("pxheight")/20 );
GfxSetTextAlign( 6 );// center alignment
GfxSetTextColor( ColorRGB( 200, 200, 200 ) );
GfxSetBkMode(1); // transparent
GfxTextOut( "#DeanMarketProfile", Status("pxwidth")/1.25, Status("pxheight")/16);
GfxTextOut( "getthattradingedge.in", Status("pxwidth")/1.25, Status("pxheight")/8);
_SECTION_END();

3 comments

1. SADAI

Good Effort.Keep it up

2. superwolf

tks

3. jaser1438

Thank you
Why is the search not working?

Leave Comment

Please login here to leave a comment.

Back