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

Shenba Kumar Pivots for Amibroker (AFL)
kum01049
about 15 years ago
Amibroker (AFL)

Rating:
3 / 5 (Votes 2)
Tags:
amibroker, pivots

Identifies Automatic Pivot points with entry and exit arrows.

Screenshots

Similar Indicators / Formulas

Pivots and prices
Submitted by kaiji about 15 years ago
Pivots
Submitted by kkumar almost 13 years ago
Pivots And Prices And Swing Volume
Submitted by esnataraj almost 15 years ago
Camarilla Pivots
Submitted by novicetraders almost 15 years ago
Pivot Trading All-In-One
Submitted by kirthi1987 almost 15 years ago
Daily, Weekly and Monthly Pivots
Submitted by sam_u6 almost 15 years ago

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
_SECTION_BEGIN("ShenbaKumar  pivots");
/* **********************************
Code to automatically identify pivots
By Kumaresan Selvaraj
 ********************************** */
// -- what will be our lookback range for the hh and ll?
farback = Param("How Far back to go", 100, 50, 5000, 10);
nBars = Param("Number of bars", 12, 5, 40);
// -- Title.
 
Title = Name() + " (" + StrLeft(FullName(), 15) + ") O: " + Open + ", H: "
+ High + ", L: " + Low + ", C: " + Close;
// -- Plot basic candle chart
PlotOHLC(Open, High, Low, Close,
"BIdx = " + BarIndex() +
"\n" + "O = " + O + "\n" + "H = " + H + "\n" + "L = " + L
 + "\n" + "C ", colorBlack, styleCandle);
  
GraphXSpace = 7;
// -- Create 0-initialized arrays the size of barcount
aHPivs = H - H;
aLPivs = L - L;
// -- More for future use, not necessary for basic plotting
aHPivHighs = H - H;
aLPivLows = L - L;
aHPivIdxs = H - H;
aLPivIdxs = L - L;
nHPivs = 0;
nLPivs = 0;
lastHPIdx = 0;
lastLPIdx = 0;
lastHPH = 0;
lastLPL = 0;
curPivBarIdx = 0;
// -- looking back from the current bar, how many bars
// back were the hhv and llv values of the previous
// n bars, etc.?
aHHVBars = HHVBars(H, nBars);
aLLVBars = LLVBars(L, nBars);
aHHV = HHV(H, nBars);
aLLV = LLV(L, nBars);
// -- Would like to set this up so pivots are calculated back from
// last visible bar to make it easy to "go back" and see the pivots
// this code would find. However, the first instance of
// _Trace output will show a value of 0
aVisBars = Status("barvisible");
nLastVisBar = LastValue(Highest(IIf(aVisBars, BarIndex(), 0)));
_TRACE("Last visible bar: " + nLastVisBar);
// -- Initialize value of curTrend
curBar = (BarCount - 1);
curTrend = "";
 
if (aLLVBars[curBar] < aHHVBars[curBar])
{
  curTrend = "D";
}
else
{
  curTrend = "U";
}
// -- Loop through bars. Search for
// entirely array-based approach
// in future version
for (i = 0; i < farback; i++)
{
  curBar = (BarCount - 1) - i;
  // -- Have we identified a pivot? If trend is down...
  if (aLLVBars[curBar] < aHHVBars[curBar])
  {
    // ... and had been up, this is a trend change
    if (curTrend == "U")
    {
      curTrend = "D";
      // -- Capture pivot information
      curPivBarIdx = curBar - aLLVBars[curBar];
      aLPivs[curPivBarIdx] = 1;
      aLPivLows[nLPivs] = L[curPivBarIdx];
      aLPivIdxs[nLPivs] = curPivBarIdx;
      nLPivs++;
    }
    // -- or current trend is up
  }
  else
  {
    if (curTrend == "D")
    {
      curTrend = "U";
      curPivBarIdx = curBar - aHHVBars[curBar];
      aHPivs[curPivBarIdx] = 1;
      aHPivHighs[nHPivs] = H[curPivBarIdx];
      aHPivIdxs[nHPivs] = curPivBarIdx;
      nHPivs++;
    }
    // -- If curTrend is up...else...
  }
  // -- loop through bars
}
// -- Basic attempt to add a pivot this logic may have missed
// -- OK, now I want to look at last two pivots. If the most
// recent low pivot is after the last high, I could
// still have a high pivot that I didn't catch
// -- Start at last bar
curBar = (BarCount - 1);
candIdx = 0;
candPrc = 0;
lastLPIdx = aLPivIdxs[0];
lastLPL = aLPivLows[0];
lastHPIdx = aHPivIdxs[0];
lastHPH = aHPivHighs[0];
 
if (lastLPIdx > lastHPIdx)
{
  // -- Bar and price info for candidate pivot
  candIdx = curBar - aHHVBars[curBar];
  candPrc = aHHV[curBar];
  if (
  lastHPH < candPrc AND
  candIdx > lastLPIdx AND
  candIdx < curBar)
  {
    // -- OK, we'll add this as a pivot...
    aHPivs[candIdx] = 1;
    // ...and then rearrange elements in the
    // pivot information arrays
    for (j = 0; j < nHPivs; j++)
    {
      aHPivHighs[nHPivs - j] = aHPivHighs[nHPivs -
      (j + 1)];
      aHPivIdxs[nHPivs - j] = aHPivIdxs[nHPivs - (j + 1)];
    }
    aHPivHighs[0] = candPrc;
    aHPivIdxs[0] = candIdx;
    nHPivs++;
  }
}
else
{
  // -- Bar and price info for candidate pivot
  candIdx = curBar - aLLVBars[curBar];
  candPrc = aLLV[curBar];
  if (lastLPL > candPrc AND candIdx > lastHPIdx AND candIdx < curBar)
  {
    // -- OK, we'll add this as a pivot...
    aLPivs[candIdx] = 1;
    // ...and then rearrange elements in the
    // pivot information arrays
    for (j = 0; j < nLPivs; j++)
    {
      aLPivLows[nLPivs - j] = aLPivLows[nLPivs - (j + 1)];
      aLPivIdxs[nLPivs - j] = aLPivIdxs[nLPivs - (j + 1)];
    }
    aLPivLows[0] = candPrc;
    aLPivIdxs[0] = candIdx;
    nLPivs++;
  }
}
// -- Dump inventory of high pivots for debugging
/*
for (k=0; k<nHPivs; k++) {
_TRACE("High pivot no. " + k
+ " at barindex: " + aHPivIdxs[k] + ", "
+ WriteVal(ValueWhen(BarIndex()==aHPivIdxs[k],
DateTime(), 1), formatDateTime)
+ ", " + aHPivHighs[k]);
}
 */
// -- OK, let's plot the pivots using arrows
PlotShapes(IIf(aHPivs == 1, shapeDownArrow, shapeNone), colorRed, 0, High, Offset =  - 15);
PlotShapes(IIf(aLPivs == 1, shapeUpArrow, shapeNone), colorGreen, 0, Low, Offset =  - 15);
_SECTION_END();

3 comments

1. walid

becurful it looks to future

2. worldastro

bye sell signal is comming too late

3. abhijeet_f

fantastic sir.. thanks so much

Leave Comment

Please login here to leave a comment.

Back