Hello,
You are completely missing the point and mix up
things.
First: the timestamp - if you backtest on EOD data, the time
component does not matter (should be ignored),
because the EOD bar timestamp depends on data source
delivering data.
If you use true EOD data, it will be without time component at
all. If you are using compressed intraday data it will use timestamp that is
either beginning or end
of interval based on Preferences
Tools->Preferences->Intraday "Timestamp ... shows:".
Anyway, the time component does not matter if you backest EOD
system and solely depends
on how data source time stamps bars, and has no indication
when trade happened.
Second: position sizing - you are using FUTURES mode. In
futures mode when you defined
MarginDeposit, entry price does not matter ! Why? Because
in FUTURES mode you just pay
MARGIN DEPOSIT (i.e. $2500) in your case, regardless of
current price.
Since you also defined position size of ONE contract, the
position sizing DOES NOT depend
on Equity at all, since it will be JUST ONE
contract.
MarginDeposit
= 2500; // $2500 is required to enter that trade, price of actual
contract does NOT matter
in futures mode
SetPositionSize(1,
spsShares); // here
you say to enter ONE contract.
So simply $2500 is taken from your account and you
have 1 futures contract
open pos, regardless of account equity and any
other conditions.
The price used TO ENTER this position was CORRECT
OPEN price:
"The prices on 11/3/2008 are as follows: Open = 1.2840"
1.2840
So everything operates as it should
The EXIT was on 11/4/2008 (not 11/3) therefore data from 11/3
are irrelevant for the exit.
The OPEN price for 11/4/2008 apparently is 1.2574 so the exit
is at that price. Again as it should be.
Best regards, Tomasz
Janeczko amibroker.com
----- Original Message -----
Sent: Thursday, January 22, 2009 1:13
AM
Subject: [amibroker] Re: How to force
Backtester to Calculate Position Size on Open Price?
Here is an explicit example.
In addition to OPEN being
set in the reserved variables below, OPEN is also set for all trade prices in
AA settings:
//
----------------------------------------------------------------------- //
BACKTESTER
SETTINGS //
-----------------------------------------------------------------------
SetBarsRequired(10000,
0); SetOption("AllowPositionShrinking",
False); SetOption("AllowSameBarExit", True);
SetOption("CommissionAmount", 3.00); SetOption("CommissionMode", 3);
SetOption("FuturesMode", 1);
SetOption("InitialEquity", 100000);
SetOption("InterestRate",0); SetOption("MaxOpenPositions", 1); SetOption("MinPosValue", 0); SetOption("MinShares", 1); SetOption("PriceBoundChecking", False
);
SetOption("ReverseSignalForcesExit",
False); SetOption("UsePrevBarEquityForPosSizing",
False );
SetTradeDelays(0,
0, 0, 0); SetPositionSize(1, spsShares); TickSize = 0.0001; // The
minimum price move of symbol for Forex PointValue = 100000; RoundLotSize =
1; MarginDeposit = 2500; BuyPrice = SellPrice = ShortPrice = CoverPrice = Open;
//
----------------------------------------------------------------------- //
SIMPLE
TRADING SYSTEM //
-----------------------------------------------------------------------
fast = Optimize( "fast",
3, 5, 10, 1 ); slow = Optimize( "slow", 6, 10, 15, 1 );
Buy = Cross( MACD( fast, slow ), Signal( fast, slow )
); Sell =
Cross( Signal( fast, slow ), MACD( fast, slow )
);
Short =
Sell; Cover = Buy;
Backtesting the above on
EUR.USD for 11/01/2008 - 12/01/2008 gives the following result ( I will
just paste the first line):
Ticker
Trade
Date
Price EURUSD Short
11/3/2008
23:59
1.284
Ex.
date
Ex. Price %
chg
Profit 11/4/2008 23:59 1.2575
-2.06% 3326.11
%
Profit Contracts
Position value
Cum. Profit 105.81%
1
3143.5
3326.11
# bars Profit/bar
MAE MFE Scale
In/Out 2 1663.06
-0.47%
2.45% 0/0
The prices on 11/3/2008 are as
follows:
Open = 1.2840 Low =
1.2525 High = 1.2900 Close = 1.2574
If you reverse the Position
Value, based on 40:1 leverage, you find that it was calculated on a price of
1.2574, which is the CLOSE:
$3,143.50 * 40 / 100000 = 1.2574
--- In
amibroker@xxxxxxxxxxxxxxx, "ozzyapeman" <zoopfree@xxx>
wrote: > > I should note that for Entry prices, the backtester is
correctly using > OPEN prices and for ApplyStop, it is correctly exiting
at the right > price point between LOW and HIGH. > > It is
only for the position values that the backtester is using CLOSE > prices
to calculate, even though CLOSE is nowhere in my AA settings or > AFL
reserved variables or SetOptions. > > > --- In
amibroker@xxxxxxxxxxxxxxx, "ozzyapeman" zoopfree@ wrote: > > >
> Tomasz, > > > > Thanks for the reply, but I *did* read
the manual and *did* set the > > buyprice reserved variables, etc.
(all to OPEN), and yet the > > backtester is still using CLOSE for
position value calculations. > > > > Hence I posted the
question. > > > > So either this is a bug or there is some
other setting which is > > overriding both my AA settings and
reserved variable settings. I can't > > seem to find any such setting
error, so at this point I am thinking > > it's a bug. > >
> > Is it? > > > > > > > >
--- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@>
wrote: > > > > > > Hello, > > > >
> > When everything fails consult..... the manual: > > >
> > > http://www.amibroker.com/guide/h_backtest.html > >
> > > > Quote > > > > > >
"Controlling trade price > > > > > > AmiBroker now
provides 4 new reserved variables for specifying the > > price at
which buy, sell, short and cover orders are executed. > > > These
arrays have the following names: buyprice, sellprice, > > shortprice
and coverprice. > > > > > > The main application of
these variables is controlling trade price: > > > > >
> BuyPrice = IIF( dayofweek() == 1, HIGH, CLOSE ); > > > // on
monday buy at high, otherwise buy on close > > > > >
> So you can write the following to simulate real stop-orders: > >
> > > > BuyStop = ... the formula for buy stop level; >
> > SellStop = ... the formula for sell stop level; > > >
> > > // if anytime during the day prices rise above buystop
level > > (high>buystop) > > > // the buy order takes
place (at buystop or low whichever is higher) > > > Buy = Cross(
High, BuyStop ); > > > > > > // if anytime during the
day prices fall below sellprice level ( low > > < sellstop
) > > > // the sell order takes place (at sellstop or high
whichever is lower) > > > Sell = Cross( SellPrice,
SellStop); > > > > > > BuyPrice = max( BuyStop, Low
); // make sure buy price not less > than Low > > >
SellPrice = min( SellStop, High ); // make sure sell price not > >
greater than High > > > > > > Please note that
AmiBroker presets buyprice, sellprice, shortprice > > and coverprice
array variables with the values defined in system > > > test
settings window (shown below), so you can but don't need to > >
define them in your formula. If you don't define them AmiBroker > >
> works as in the old versions. > > > > > > During
back-testing AmiBroker will check if the values you assigned > > to
buyprice, sellprice, shortprice, coverprice fit into high-low > >
> range of given bar. If not, AmiBroker will adjust it to high
price > > (if price array value is higher than high) or to the low
price > > > (if price array value is lower than low)" >
> > > > > Best regards, > > > Tomasz
Janeczko > > > amibroker.com > > > ----- Original
Message ----- > > > From: "ozzyapeman" <zoopfree@> >
> > To: amibroker@xxxxxxxxxxxxxxx > > > Sent: Wednesday,
January 21, 2009 10:46 PM > > > Subject: [amibroker] Re: How to
force Backtester to Calculate > > Position Size on Open
Price? > > > > > > > > > > and here
are all my other options set in the AFL. > > > > > >
> > I can't see how any of them would force the backtester to use
Close > > > > prices, but maybe one option does? > >
> > > > > > > > > > SetBarsRequired(
10000, 0 ); > > > > SetOption( "AccountMargin", 100 ); >
> > > SetOption( "ActivateStopsImmediately", True ); > >
> > SetOption( "AllowPositionShrinking", False ); > > > >
SetOption( "AllowSameBarExit", True ); > > > > SetOption(
"CommissionAmount", 3.00 ); > > > > SetOption(
"CommissionMode", 2 ); > > > > SetOption( "FuturesMode", 1
); > > > > SetOption( "InitialEquity", 100000 ); > >
> > SetOption( "InterestRate", 0 ); > > > > SetOption(
"MaxOpenPositions", 1 ); > > > > SetOption( "MinPosValue", 0
); > > > > SetOption( "MinShares", 1 ); > > > >
SetOption( "PriceBoundChecking", True ); > > > > SetOption(
"ReverseSignalForcesExit", False ); > > > > SetOption(
"UsePrevBarEquityForPosSizing", False ); > > > >
SetTradeDelays( 0, 0, 0, 0 ); > > > > SetPositionSize( 1,
spsShares ); > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > --- In amibroker@xxxxxxxxxxxxxxx, "ozzyapeman"
<zoopfree@> wrote: > > > >> > > > >>
Buyprices set in AFL formula are all Open: > > > >> >
> > >> BuyPrice = Open; > > > >> ShortPrice =
Open; > > > >> SellPrice = Open; > > > >>
CoverPrice = Open; > > > >> > > > >> very
wierd... > > > >> > > > >> > >
> >> --- In amibroker@xxxxxxxxxxxxxxx, "Anthony Faragasso"
<ajf1111@> > > wrote: > > > >> > >
> > >> > Is there anywhere in your code formula that you may
be > specifying a > > > >> different
buyprice....because I believe the formula overrides the > > >
>> settings in the preference window.. > > > >>
> > > > >> > Anthony > > > >>
> > > > >> > > > > >> > -----
Original Message ----- > > > >> > From:
ozzyapeman > > > >> > To:
amibroker@xxxxxxxxxxxxxxx > > > >> > Sent: Wednesday,
January 21, 2009 3:41 PM > > > >> > Subject: [amibroker]
Re: How to force Backtester to Calculate > > > >> Position
Size on Open Price? > > > >> > > > > >>
> > > > >> > I've always had the trade settings set to
buyprice Open. > > > >> > > > > >> >
Unfortunately, the backtester insists on using the Close, and I > >
> > can't > > > >> > figure out why that
is. > > > >> > > > > >> > --- In
amibroker@xxxxxxxxxxxxxxx, "gonzagags" <gonzagags@> >
wrote: > > > >> > > > > > >> >
> Try in settings- trades, set in long trades buyprice in >
open.. > > > >> > > > > > >> >
> > > > >> > > --- In amibroker@xxxxxxxxxxxxxxx,
"ozzyapeman" <zoopfree@> > > wrote: > > > >>
> > > > > > >> > > > Hello, even though I
have set Buyprice = Open; I noticed > > > > that the >
> > >> > > > backtester report is displaying position
sizes based on the > > > >> Close of > > >
>> > > > the bar. On some trades this makes a huge
difference. > > > >> > > > > > >
>> > > > I am backtesting Forex. And I imagine that when
trading > > on the > > > >> Open, > > >
>> > > a > > > >> > > > broker like IB
will use the dynamic price of the Open to > > > >>
calculate > > > >> > > the > > > >>
> > > exchange rate and position size, since the Close price
is > > > > not yet > > > >> > > >
known at the time of the trade. > > > >> > >
> > > > >> > > > So how do I force the
backtester to mimic the above, and > > > > calculate >
> > >> > > > position sizes based on Opens? Or is this
not even an > option? > > > >> > > > >
> > >> > > > I looked up Setoption in the reference
guide, and don't > seem > > > >> to see > >
> >> > > an > > > >> > > >
appropriate setting to switch. > > > >> > >
> > > > >> > > > Any input appreciated. >
> > >> > > > > > > >> > > >
> > >> > > > > >> > > > >
>> > > > > >> > > > > >>
> > > > >> > > > > >> > >
> > >> > > > > > > >
------------------------------------------------------------------------------ >
> > >> > > > > >> > > > >
>> > > > > >> > No virus found in this incoming
message. > > > >> > Checked by AVG -
http://www.avg.com > > > >> > Version: 8.0.176 / Virus
Database: 270.10.10/1906 - Release > Date: > > > >>
1/21/2009 7:07 AM > > > >> > > > >
>> > > > > > > > > > > >
> > > > > ------------------------------------ > >
> > > > > > **** IMPORTANT **** > > > >
This group is for the discussion between users only. > > > >
This is *NOT* technical support channel. > > > > > >
> > ********************* > > > > TO GET TECHNICAL
SUPPORT from AmiBroker please send an e-mail > > directly to >
> > > SUPPORT {at} amibroker.com > > > >
********************* > > > > > > > > For NEW
RELEASE ANNOUNCEMENTS and other news always check DEVLOG: > > >
> http://www.amibroker.com/devlog/ > > > > > > >
> For other support material please check also: > > > >
http://www.amibroker.com/support.html > > > > > > >
> ********************************* > > > > Yahoo! Groups
Links > > > > > > > > > > >
> > > > > > >
__._,_.___
**** IMPORTANT ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
*********************
TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com
*********************
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
For other support material please check also:
http://www.amibroker.com/support.html
*********************************
__,_._,___
|