PureBytes Links
Trading Reference Links
|
I have the same problem : some (not all) arrows appear one days then
desappear next day, how can we fix it ?
Can someone also help me to make code for finding pivots with
automatic analysis ?
Thanks
--- In amibroker@xxxxxxxxxxxxxxx, "Stephane Carrasset"
<nenapacwanfr@xxxx> wrote:
> nice code, but some arrows look in the future, I have visually
tried
> it with the simulator.exe and some arrows appears and disappears
>
> stephane
> >
> > Thanks
> >
> > ----- Original Message -----
> > From: "Gordon" <amibroker@xxxx>
> > To: <amibroker@xxxxxxxxxxxxxxx>
> > Sent: Monday, December 08, 2003 1:26 PM
> > Subject: [amibroker] Code share - finding pivots
> >
> >
> > > I've been the beneficiary of many examples of code sharing, and
so
> > > I'm gald to have something to share back (for better or
worse...).
> > > First, important up-front credit: Clyde Lee was kind enough to
> > > respond to a post in his swing forum about finding pivots. The
> code
> > > was in EL, but he also provided an english language description
of
> > > his algorithm. Clyde's algorithm was very elegant, I thought,
and
> he
> > > was certainly generous to share it. I translated it into AFL,
and
> the
> > > result, I believe, is a very useful start to writing effective
> pivot
> > > identification code. This can then be used for automated fib
> > > projections, etc., or any way you please.
> > >
> > > The code uses for-loops. Yes, I know AFL is array based, and
the
> next
> > > step will be to come up with a version that is more true to
AFL's
> > > nature. Also, adding min. retracement percentanges, min. no. of
> days
> > > between swings are all options to enhance the quality of the
> pivots
> > > discovered.
> > >
> > > One last note -- if you haven't used the param() function in
your
> > > indicator code and then Ctrl-R in your chart viewing -- you're
> > > missing a great AB feature! I was until just recently.
> > >
> > > /* **********************************
> > > Code to automatically identify pivots
> > > ********************************** */
> > >
> > > // -- what will be our lookback range for the hh and ll?
> > > 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<120; 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);
> > >
> > >
> > >
> > >
> > >
> > > Send BUG REPORTS to bugs@xxxx
> > > Send SUGGESTIONS to suggest@xxxx
> > > -----------------------------------------
> > > Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
> > > (Web page: http://groups.yahoo.com/group/amiquote/messages/)
> > > --------------------------------------------
> > > Check group FAQ at:
> > http://groups.yahoo.com/group/amibroker/files/groupfaq.html
> > >
> > > Your use of Yahoo! Groups is subject to
> http://docs.yahoo.com/info/terms/
> > >
> > >
> > >
------------------------ Yahoo! Groups Sponsor ---------------------~-->
Buy Ink Cartridges or Refill Kits for your HP, Epson, Canon or Lexmark
Printer at MyInks.com. Free s/h on orders $50 or more to the US & Canada.
http://www.c1tracking.com/l.asp?cid=5511
http://us.click.yahoo.com/mOAaAA/3exGAA/qnsNAA/GHeqlB/TM
---------------------------------------------------------------------~->
Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
|