This is got to be a very simple task but unfortunately AmiBroker told
me
that I would have to write Backtester Interface code for this. I'm
sure
this has been done a million times. Anyone have sample code?
I'm using EOD
data to trade one stock at a time from a basket of
stocks. The problem is
that a selling of a stock can occur on the
same day as a buy of *another*
stock. Of course the problem is that
the sell trade can occur after the buy
trade.
--- In amibroker@xxxxxxxxxps.com,
"Andy" <senft@xxx> wrote:
>
> How do I fix the below code so
it doesn't buy a different stock on a
> sell day?
>
>
--------------------------------------------------------
>
// Backtester Options
> SetOption("MaxOpenPositions", 1
);
> SetOption("AllowSameBarExit", False);
>
> //
Optimization numbers
> BuyPeriod =
Optimize("BuyPeriod",16,10,20,2);
> BuyFactor =
Optimize("BuyFactor",1.2,0.5,1.5,.1);
> SellPeriod =
Optimize("SellPeriod",20,10,20,2);
> SellFactor =
Optimize("SellFactor",0.8,0.5,1.5,.1);
>
> // ATR
formulas
> TodaysBuyTarget = High - BuyFactor *
ATR(BuyPeriod);
> YesterdaysBuyTarget = Ref(High,-1) - BuyFactor *
Ref(ATR(BuyPeriod),-1);
> YesterdaysSellTarget =
Ref(Low,-1) + SellFactor *
Ref(ATR(SellPeriod),-1);
>
>
// Buy/Sell signals and prices
> Buy = YesterdaysBuyTarget >
Low;
> BuyPrice = IIf(YesterdaysBuyTarget > Open, Open,
YesterdaysBuyTarget);
> Sell = YesterdaysSellTarget <
High;
> SellPrice = IIf(YesterdaysSellTarget < Open,
Open,
YesterdaysSellTarget);
> Buy = ExRem(Buy,Sell);
> Sell = ExRem(Sell,Buy);
>