PureBytes Links
Trading Reference Links
|
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 amibroker@xxxxxxxxxxxxxxx, "J. Biran" <jbiran@xxx> 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: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx] On
> Behalf Of dingo
> Sent: Tuesday, August 08, 2006 4:05 PM
> To: amibroker@xxxxxxxxxxxxxxx
> 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: amibroker@xxxxxxxxxxxxxxx
> > [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf Of tycanadian2003
> > Sent: Tuesday, August 08, 2006 5:10 PM
> > To: amibroker@xxxxxxxxxxxxxxx
> > 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 amibroker@xxxxxxxxxxxxxxx, "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 amibroker@xxxxxxxxxxxxxxx, "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
>
|