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

[amibroker] Need script to perform F5 Refresh



PureBytes Links

Trading Reference Links

Ok, thanks. Must've missed that in the first post. I was assuming 
otherwise for some reason, and 10 mil as initial equity (bigger than 
average used in backtests) made me curious... I'm not doubting it. 
Just wanted to confirm it.

Jitu

--- In amibroker@xxxxxxxxxxxxxxx, "dingo" <dingo@xxxx> wrote:
> follow the original request - was for actual trades but it can be 
used for
> anything. 
>  
> d
> 
>   _____  
> 
> From: jtelang [mailto:jtelang@x...] 
> Sent: Saturday, January 24, 2004 10:45 PM
> To: amibroker@xxxxxxxxxxxxxxx
> Subject: [amibroker] Re: Enhancement Request - "Playback" Function
> 
> 
> Nigel,
> 
> Are you trying to analyze real-life trades or trades generated by 
> another software in this exercise? I'm curious...
> 
> Thanks.
> 
> Jitu
> 
> --- In amibroker@xxxxxxxxxxxxxxx, Nigel Rowe <rho@xxxx> wrote:
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> > 
> > Actually Dale,
> >       I did know how, I was just too bloody lazy to do it!  But 
it 
> always worked on 
> > multiple tickers, just run it on a watchlist with *at least* all 
> the tickers 
> > mentioned in the file.  Doesn't matter if there are others, just 
> slows it 
> > down a bit.
> > 
> > In fairness it was only intended as an example for other people 
to 
> extend 
> > (like your DateToDateNum function).
> > 
> > Hovever I have:
> > * tidied up your latest mod to the code
> > * added position sizing
> > * put the main body in a function
> > * added 'local' declarations, so the functions can be generally 
> used without 
> > worrying about clobbering globals
> > * added SetOption calls for the required settings
> > 
> > I did, however, restrain myself from 'fixing' the inside-out date 
> format and 
> > the hungarian notation in your DateToDateNum function! :-)
> > 
> > The latest version is both below *AND* attached as an attachment, 
> so that 
> > those of you who get individual emails don't have to worry about 
> Yahoo's line 
> > wrapping etc.
> > 
> >       Nigel
> > 
> > On Sun, 25 Jan 2004 13:14, dingo wrote:
> > > I know you asked for it a while back - a number of people have 
> asked for it
> > > over the last several years. I just saw what Nigel had done and 
> it piqued
> > > my curiosity.
> > >
> > > The position size is left as and exercise for the student.  
> (Until I or
> > > someone else can figure out how to implement it.  I strongly 
> suspect that's
> > > why Nigel decided not to finish it.  8-)  ).
> > >
> > > As to just the "current stock" that was to make it easy to run 
> the example.
> > >
> > > It "should" be able to work on multple tickers, etc.
> > >
> > > Looking for suggestions from anyone!!!
> > >
> > > d
> > >
> > 
> > // Inspired by a request for a 'playback' feature from Don Upton,
> > //
> > // initial code by Nigel Rowe,
> > // with contributions by Ruddy Turnstone Trading, LLC  (dingo)
> > //
> > //
> > // Input file is comma seperated text.
> > // Fields are:
> > //      0.      Symbol        -- without quotes
> > //      1.        Long Or Short -- L or S, without quotes
> > //      2.      Number of shares
> > //      3.        Entry date    -- in mm/dd/yyyy format.  ie xmas 
day 
> 2003 is 12/25/2003
> > //      4.      Entry price
> > //      5.      Exit date     -- mm/dd/yyyy  format, or blank for 
no 
> exit
> > //      6.      Exit Price
> > 
> >  
> > function DateToDateNum(sMMDDYYYY) // date in format mm/dd/yyyy
> > {
> >  
> > /*-------------------------------------------------------------
> >   This function will accept a string in the MM/DD/YYY format
> >   and convert it into Amibroker's datenum.
> >  
> >   nDateNum = 10000 * (year - 1900) + 100 * month + day
> >  
> >   It assumes that mm dd and yyyy are reasonable. It does check
> >   for the presence of 2 "/" characters and if not there
> >   will return a 0.
> > - -------------------------------------------------------------*/
> >        local nDateNum, sWrk, nPosn, nYr, nMth, nDay;
> > 
> >       nDateNum = 0;
> >           sWrk = sMMDDYYYY;
> >           nPosn = StrFind(sWrk, "/");
> >           if (nPosn > 0) {
> >              nMth = StrToNum(StrLeft(sWrk, nPosn-1));
> >               sWrk = StrRight(sWrk, StrLen(sWrk) - nPosn);
> >               nPosn = StrFind(sWrk, "/");
> >               if (nPosn > 0) {
> >                         nDay = StrToNum(StrLeft(sWrk, nPosn-1));
> >                         sWrk = StrRight(sWrk, StrLen(sWrk) - 
nPosn);
> >                         nYr = StrToNum(sWrk);
> >                         nDateNum = 10000 * (nYr - 1900) + (100 * 
> nMth) + nDay;
> >             }
> >       }
> >           return nDateNum;
> > }
> >  
> >  
> > 
> > function DateToBar(dn) 
> > {
> >       return LastValue(ValueWhen(DateNum()==dn, BarIndex()));
> > }
> >  
> >  
> >  
> >  
> > function playback(filename) 
> > { 
> >       local f, Line, sym;
> >       local LorS, numShrs;
> >       local entryDate, entryPrice, exitDate, exitPrice;
> >       local bar;
> > 
> >       global Buy, Sell, BuyPrice, SellPrice;
> >       global Short, Cover, ShortPrice, CoverPrice;
> >       global PositionSize;
> > 
> >       f = fopen(filename, "r");
> >       while( f && (! feof(f))) {
> >             Line = fgets(f);
> >             sym = StrExtract(Line, 0);
> >             if( sym == Name() ) {
> >                   LorS = StrExtract(Line, 1);
> >                   numShrs = StrToNum(StrExtract(Line,2));
> >                   entryDate = DateToDateNum(StrExtract(Line,3));
> >                   entryPrice = StrToNum(StrExtract(Line,4));
> >                   exitDate = DateToDateNum(StrExtract(Line,5));
> >                   exitPrice = StrToNum(StrExtract(Line,6));
> > 
> >                   bar = DateToBar(entryDate);
> > 
> >                   // The extra (entryPrice/2) is to avoid 
> rounding errors.
> >                   PositionSize[bar] = (numShrs*entryPrice) + 
> (entryPrice/2);
> >  
> >                   if (LorS == "L") {
> >                         Buy[bar] = True;
> >                         BuyPrice[bar] = entryPrice;
> >                               if( exitdate ) {
> >                                      bar = DateToBar(exitdate);
> >                                      Sell[bar] = True;
> >                                      SellPrice[bar] = exitPrice;
> >                               }
> >                   } else {
> >                                  Short[bar] = True;
> >                           ShortPrice[bar] = entryPrice;
> >                           if( exitDate ) {
> >                                     bar = DateToBar(exitDate);
> >                                      Cover[bar] = True;
> >                                      CoverPrice[bar] = exitPrice;
> >                           }
> >                     }
> >                 }
> >       }
> >       if(f) fclose(f);
> > }
> >  
> > 
> > SetFormulaName("Playback from file");
> >  
> > // Enforce required settings
> > SetOption("InitialEquity", 10000000);      
> > SetOption("MaxOpenPositions", 10000);
> > SetOption("MinShares", 1);
> > SetOption("AllowPositionShrinking", False);
> > SetOption("FuturesMode", False);
> > SetTradeDelays(0,0,0,0);
> > ApplyStop(stopTypeLoss,        stopModeDisable, 0, 0);
> > ApplyStop(stopTypeTrailing,stopModeDisable, 0, 0);
> > ApplyStop(stopTypeProfit,        stopModeDisable, 0, 0);
> > ApplyStop(stopTypeNBar,    stopModeDisable, 0, 0);
> > 
> > 
> > // NB!! you will have to manually set Positions and 
> Periodicity !!!!!
> > //
> > //The following SetOption are NOT valid, mentioned here for 
> completeness
> > //SetOption("Positions", "Long and Short");
> > //Setoption("Periodicity", "Daily");
> > 
> > Buy = False;
> > Sell = False;
> > BuyPrice = Close;
> > SellPrice = Close;
> > Short = False;
> > Cover = False;
> > ShortPrice = Close;
> > CoverPrice = Close;
> > PositionSize = 0;
> >  
> > // and the next line does all the work!
> > playback("playback.txt"); 
> > -----BEGIN PGP SIGNATURE-----
> > Version: GnuPG v1.2.2 (GNU/Linux)
> > 
> > iD8DBQFAEzjABbmcM2pfckkRAkjMAKCV9NBW9/0g2zHkwvoYnO123ADCsACfbe1P
> > htBgUifFn5zE8aoCggQ4nl0=
> > =qVyg
> > -----END PGP SIGNATURE-----
> 
> 
> 
> 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 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/> .


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/