[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [amibroker] Re: Help with my modified MACD indicator



PureBytes Links

Trading Reference Links

dingo,
It is nice to have the exact formula, when possible of course.
It is fast, accurate and, the most important, it gives very 
interesting side effects. The Cross(Ti3a,Ti3b) prediction is one of 
them. 
Dimitris Tsokakis
--- In amibroker@xxxxxxxxxxxxxxx, "dingo" <dingo@xxxx> wrote:
> Here's a general purpose routine provided by Fred Tonetti that you 
can adapt
> to suit your needs.
>  
> d
>  
> >>Is there any way this can be accomplished...
> >>
> >>the question is...What price must the security close at for a 
> >>crossover the next day?
> >>
> >>TIA
> 
> 
> 
> 
>   _____  
> 
> From: Fred [mailto:ftonetti@x...] 
> Sent: Friday, January 30, 2004 12:41 PM
> To: amibroker@xxxxxxxxxxxxxxx
> Subject: [amibroker] Re: Search Routine for Crossover Point -- EMA 
Version
> 
> 
> Is there any reason to limit this to an xMA when this can easily be 
> done for any built in AB indicator or any custom AFL "indicator" 
that 
> one cares to write ?
> 
> //      *********************************************** 
> //
> //      An all purpose routine to find the price 
> //            necessary to move an indicator to a GOAL.
> //
> //      This should work for virtually any indicator,
> //            built in or otherwise.  It's demonstrated 
> //            here using RSI & BBand's ...
> //
> //      Note:      It will appear to use future quotes
> //                        because of the down shifting of the
> //                        price array, but obviously it can't
> //                        "know" tomorrows price.  There's 
> //                        probably a way to rectify this but 
> //                        I was more concerned with the rest 
> //                        of the process.
> //
> //      The maximum iterations have arbitrarily been 
> //            set to 200 which is undoubtedly overkill 
> //            as I've yet to see anything take 200 even
> //            when tolerance was set to 0 on datastreams 
> //            with very high prices.
> //
> //      For real usage the saving of i in j and the
> //            accuracy calculation can be tossed as they 
> //            were only put in for demonstration purposes 
> //
> //      ***********************************************
> //
> //      This Routine requires the following things
> //
> //      P0            = A price array or synthetic
> //
> //      Goal      = The goal value of the indicator
> //
> //      Acc            = An accuracy level for the calculations
> //
> //                    Set this to the order of magnitude 
> //                    that you want.  For example if you want 
> //                    accuracy in calculated price to within 
> //                    0.01 then set it 0.01.  It can even 
> //                    be set to 0 which will force AB to 
> //                    calculate until it can't find any 
> //                    further improvements (Usually between
> //                    150-170 iterations) but this is semi
> //                    useless as improvements relative to 
> //                    price granularity have long since 
> //                    been gone by.
> //
> //                    The lower you set it the longer it 
> //                    will take but it's pretty quick 
> //                    (Usually between 15-30 iterations) 
> //                    unless you set it at 0.
> //                              
> //      ***********************************************
> //
> //      Note:      Some goals are virtually unattainable on
> //                  the next bar, especially on the downside
> //                  as they would require a negative price
> //                  which is what this routine will show if
> //                  that is what is required.
> //
> //      ***********************************************
> 
> P0   = C;
> 
> Acc  = 0.0001;
> 
> LVBI = LastValue(BarIndex());
> Mult = 1;
> 
> //      ***********************************************
> //      Shift Price up by n orders of magnitude to make 
> //            it >= 1.  This is useful to increase 
> //            accuracy on very low priced datastreams 
> //            such as the JY.
> //      ***********************************************
> for (i = 0; i < 10; i++)
> { 
>       if (P0[LVBI] >= 1) 
>             i = 99; 
>       else 
>             Mult = Mult * 10; 
> } 
> // ***********************************************
> 
> P1   = Ref(P0, 1) * Mult;
> UpDn = 100 * P1[LVBI];
> 
> for (i = 0; i < 200; i++)
> {
> 
> //      An example for finding price associated with the next bars 
> BBandTop
> //
> //
>       **************************************************************
> ***************
> //      Put whatever indicator you want to goal seek here based on 
P1
> //
>       **************************************************************
> ***************
>       Calc = P1;
> //
>       **************************************************************
> ***************
> //      Put whatever you want for the goal here ...
> //
> //      The reason for putting it in the loop is because sometimes 
> the goal is price 
> //            oriented and will need to be recalculated on each 
> iteration.
> //
>       **************************************************************
> ***************
>       Goal = LastValue(BBandBot(P1, 14, 2));
> //
>       **************************************************************
> ***************
> 
> 
> 
> //      An example for finding price associated with the next bars 
> RSI value of 65
> //
> //
>       **************************************************************
> ***************
> //      Put whatever indicator you want to goal seek here based on 
P1
> //
>       **************************************************************
> ***************
> //      Calc = RSIa(P1, 14);
> //
>       **************************************************************
> ***************
> //      Put whatever you want for the goal here ...
> //
> //      The reason for putting it in the loop is because sometimes 
> the goal is price 
> //            oriented and will need to be recalculated on each 
> iteration.
> //
>       **************************************************************
> ***************
> //      Goal = 65;
> //
>       **************************************************************
> ***************
> 
>       if (Calc[LVBI] < Goal)
>             P1[LVBI] = P1[LVBI] + UpDn;
>       else
>             P1[LVBI] = P1[LVBI] - UpDn;
>       UpDn = UpDn / 2;
>       if (UpDn <= Acc)
>       {
>             j = i;
>             i = 99999;
>       }
> }
> 
> Accuracy = 100 * (abs(Goal - Calc) / Goal);
> 
> Filter = BarIndex() == LVBI;
> 
> AddColumn(Mult,                              
>       "Multiplier",   1.0);
> AddColumn(Calc[LVBI - 1] / Mult,      "Curr Ind Val", 1.9);
> AddColumn(Goal / Mult,                        "Goal Ind Val", 1.9);
> AddColumn(Calc[LVBI] / Mult,            "Calc Ind Val", 1.9);
> AddColumn(j,                                    
>       "Iterations",   1.0);
> AddColumn(Accuracy,                           "Accuray (%)",  1.9);
> AddColumn(Ref(P1, -1) / Mult,            "Todays Price", 1.9);
> AddColumn(P1 / Mult,                              "Goal 
> Price",   1.9);
> 
> 
> 
> 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 
> 
> 
> 
> Yahoo! Groups Sponsor	
> 
> ADVERTISEMENT
>  
> 
<http://rd.yahoo.com/SIG=12cr5290c/M=268585.4464812.5643763.1261774/D=
egroup
> 
web/S=1705632198:HM/EXP=1075570907/A=1950447/R=0/*http://ashnin.com/cl
k/mury
> utaitakenattogyo?YH=4464812&yhad=1950447> click here	
>  
> <http://us.adserver.yahoo.com/l?
M=268585.4464812.5643763.1261774/D=egroupmai
> l/S=:HM/A=1950447/rand=928413924> 	
> 
>   _____  
> 
> Yahoo! Groups Links
> 
> 
> *	To visit your group on the web, go to:
> http://groups.yahoo.com/group/amibroker/
>   
> 
> *	To unsubscribe from this group, send an email to:
> amibroker-unsubscribe@xxxxxxxxxxxxxxx
> <mailto:amibroker-unsubscribe@xxxxxxxxxxxxxxx?subject=Unsubscribe> 
>   
> 
> *	Your use of Yahoo! Groups is subject to the Yahoo! Terms of 
Service
> <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 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
     http://groups.yahoo.com/group/amibroker/

<*> To unsubscribe from this group, send an email to:
     amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
     http://docs.yahoo.com/info/terms/