Hi all,

I have solved my problem...not sure if it's the most efficient
solution but here's some code that does what I want it to do (sorry if
the formatting for posting in a forum is lousy, but it's late and I
don't feel like going through it all to make it pretty :) ):

SetOption("PriceBoundChecking",False);
PositionSize = 10000;

trades = fopen( "C:\\Documents and
Settings\\Administrator\\Desktop\\IEC\\TestTradesAmi.csv", "r" );

Buy = 0;
Short = 0;

if ( trades )
{
        count = 0;
        while ( ! feof( trades ) )
        {
                string = fgets( trades );
                if ( count != 0 )
                {
                        symbol = StrExtract(string, 0);
                        symdate = StrExtract(string, 2);
                        firstslashindex = StrFind(symdate, "/");
                        symmonth = StrToNum(StrLeft(symdate,firstslashindex - 
1));
                        secondslashindex = 
StrFind(StrRight(symdate,StrLen(symdate) -
firstslashindex),"/") + firstslashindex;
                        symyear = StrToNum(StrRight(symdate,4));
                        symday = 
StrToNum(StrMid(symdate,firstslashindex,secondslashindex -
firstslashindex - 1));
                        symlongshort = StrExtract(string,1);
                        symentryprice = StrToNum(StrExtract(string,3));
                        if(symbol == Name())
                        {
                                m = Month();
                                y = Year();
                                d = Day();
                                dt = DateTime();
                                for(i=0; i < BarCount; i++)
                                {
                                        Buy[i] = 0;
                                        Short[i] = 0;
                                        if(m[i] == symmonth AND d[i] == symday 
AND y[i] == symyear)
                                        { 
                                                if ( 
StrFind(DateTimeToStr(dt[i]),"9:30") )
                                                {
                                                        if 
(StrFind(symlongshort,"Long"))
                                                        {
                                                                Buy[i] = 1;
                                                                BuyPrice[i + 1] 
= symentryprice;
                                                        }
                                                        if 
(StrFind(symlongshort,"Short"))
                                                        {
                                                                Short[i] = 1;
                                                                ShortPrice[i + 
1] = symentryprice;
                                                        }
                                                }
                                        }
                                        else
                                        {
                                                Buy[i] = 0;
                                                Short[i] = 0;
                                        }
                                }
                        }
                }
                count++;
        }
        fclose(trades);
        fclose(symout);
}

timetohold = Optimize("Bars_To_Hold",1,1,25,1);

Sell = BarsSince(Buy) == timetohold;
Cover = BarsSince(Short) == timetohold;

--- In [email protected], "J. Biran" <[EMAIL PROTECTED]> wrote:
>
> 
> It seems other people already solved similar problems with which
> I am still struggling with.
> 
> How would I go about a simpler problem (just one symbol): 
> reading an external CSV file with trade(s) information (i.e
> date/buy(sell) entry time/buy(sell)price/exit time /exit price
> 1 line per trade) and plotting arrows on the proper price bar 
> at the given price?
> 
> 
> 
> Joseph Biran
> ____________________________________________
> 
> 
> -----Original Message-----
> From: [email protected] [mailto:[EMAIL PROTECTED] On
> Behalf Of dingo
> Sent: Tuesday, August 08, 2006 4:05 PM
> To: [email protected]
> Subject: RE: [amibroker] Re: Reading in trades from a CSV file
> 
> This may give you some ideas.
> 
> http://finance.groups.yahoo.com/group/amibroker/message/65181 
> 
> d
> 
> > -----Original Message-----
> > From: [email protected] 
> > [mailto:[EMAIL PROTECTED] On Behalf Of tycanadian2003
> > Sent: Tuesday, August 08, 2006 5:10 PM
> > To: [email protected]
> > Subject: [amibroker] Re: Reading in trades from a CSV file
> > 
> > Hi there,
> > 
> > Thanks for the reply, it does provide some insight for me.  I 
> > am familiar with the Buy/Sell/Short/Cover and 
> > BuyPrice/Shortprice...arrays, and you were correct in that 
> > the hard part seems to be making it remotely efficient :).  
> > Ideally I'd like to read every ticker, trade type 
> > (long/short), date, and entryprice into arrays within 
> > AmiBroker and then as the backtester iterates over each 
> > symbol, it would check these arrays for any occurrence of the 
> > symbol, and for each occurrence it finds it will look at the 
> > corresponding dates and append a "1" in the "Buy" array for 
> > that date as well as the proper BuyPrice.
> > 
> > Any further suggestions on how to accomplish this or make it 
> > faster are most welcome!
> > 
> > Thanks again for the reply.
> > 
> > --- In [email protected], "Metasan" <amibroker@> wrote:
> > >
> > > That can be implemented by writing code to modify 
> > Buy/Sell/Short/Cover 
> > > and BuyPrice/SellPrice/ShortPrice/CoverPrice
> > > arrays.
> > > 
> > > The difficult part is converting date to bar index number.
> > > The code below will be very very slow since you have to 
> > loop through 
> > > all bars for all trades in your file for all symbols, but may give
> 
> > > your some ideas:
> > > 
> > > // loop through every line of the file:
> > > // assume that ticker, month1, day1, year1, buyprice1 are 
> > the fields 
> > > from the file
> > > 
> > > if(ticker == Name())
> > > {
> > >   m = month();
> > >   y = year();
> > >   d = day();
> > >   for(i=0; i<BarCount; i++)
> > >   {
> > >      if(m[i] == month1 and d[i] == days and y[i] == year1)
> > >      { Buy[i] = 1; BuyPrice[i] = buyprice1; }
> > >   }
> > > }
> > > 
> > > --- In [email protected], "tycanadian2003" <tyrules@>
> > > wrote:
> > > >
> > > > Hi,
> > > > 
> > > > I'm trying to read in trades from a CSV file, whose format is :
> > > > 
> > > > TICKER,(LONG OR SHORT),DATE,ENTRY PRICE,EXIT PRICE
> > > > 
> > > > This part I can kind of do (I know how to read and write to
> > > files). 
> > > > However, I'd like to use this data in backtests for a few 
> > thousand 
> > > > symbols with intraday data.  My confusion comes when I'm 
> > trying to 
> > > > figure out how to read in all the data from the CSV file and
> then
> > > use
> > > > it to generate buy and sort signals in the backtester.  For
> > > example,
> > > > if a line in my CSV file is:
> > > > 
> > > > INTC,Long,08/08/2006,17.40,17.45
> > > > 
> > > > I want to be able to extract that information in my AFL code,
> and
> > > as
> > > > I'm backtesting through many symbols, when the backtester gets
> to 
> > > > INTC, I want it to have a BUY signal for INTC on 08/08/2006 with
> a
> > > buy
> > > > price of 17.40.  In case you're interested, I'm backtesting to
> try
> > > to
> > > > optimize the best time of day to exit my trades since I recently
> 
> > > > subscribed to an intraday data service.
> > > > 
> > > > Efficiency may also be an issue, but for now I'd just love for
> it
> > > to
> > > > work.  Can anyone help me get started?  I know how to 
> > open the file 
> > > > and grab the strings, but that's about it.
> > > > 
> > > > Thank you very much!
> > > > 
> > > > Tyler
> > > >
> > >
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > Please note that this group is for discussion between users only.
> > 
> > To get support from AmiBroker please send an e-mail directly 
> > to SUPPORT {at} amibroker.com
> > 
> > For other support material please check also:
> > http://www.amibroker.com/support.html
> > 
> >  
> > Yahoo! Groups Links
> > 
> > 
> > 
> >  
> > 
> > 
> > --
> > No virus found in this incoming message.
> > Checked by AVG Free Edition.
> > Version: 7.1.405 / Virus Database: 268.10.7/411 - Release 
> > Date: 8/7/2006
> >  
> > 
> 
> 
> 
> Please note that this group is for discussion between users only.
> 
> To get support from AmiBroker please send an e-mail directly to 
> SUPPORT {at} amibroker.com
> 
> For other support material please check also:
> http://www.amibroker.com/support.html
> 
>  
> Yahoo! Groups Links
>





Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

For other support material please check also:
http://www.amibroker.com/support.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:
    [EMAIL PROTECTED]

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



Reply via email to