Hello
As I want to use position sizing based on volatility estimated by ATR() and current equity, I utilize custom backtest procedure. Unfortunately, all my trials to transfer the value of ATR() array into cbt's part of the code fails no matter if using Foreign(...), AddToComposite(...) or StaticVarSet(...) and StaticVarGet(...) afterwards funtions.
These are the most important parts of the code:
//entry signals and setting stoploss level//
for(i=b+1;i<BarCount;i++)//b is a parameter used to compose signal breakout channel
{
Buy[i]=False;
Sell[i]=False;
stop[i]=stop[i-1];
if(long==False AND H[i]>maks[i])//long is a flag indicating opening long position, maks is the upper limit of the channel
{
Buy[i]=True; long=True;
if(C[i-1]<=maks[i] AND O[i]>maks[i])
BuyPrice[i]=O[i]+spread;
else BuyPrice[i]=maks[i]+spread;
stop[i]=maks[i]+spread-e*wtr[i];//wtr is my version of ATR(), e is a wtr multiplier
AddToComposite(wtr,"wtr","C",64);//or StaticVarSet("stop",stop[i]);
}
Afterwards there are exit and stoploss parts which I will omit and here comes CBT part:
SetCustomBacktestProc("");
if (Status("action")==actionPortfolio)
{
bo=GetBacktesterObject();
bo.PreProcess();
for(i=0;i<BarCount;i++)
{
for(sig=bo.GetFirstSignal(i);sig;sig=bo.GetNextSignal(i))
{
wtr2=Foreign("wtr","C");//or wtr2=StaticVarGet("stop");
position=1000*floor((f/100*bo.Equity)/(e*wtr2)/1000);//f is a parameter indicating what fraction of equity should be used
sig.PosSize=position;
}
bo.ProcessTradeSignals(i);
}
bo.PostProcess();
}
No matter what I choose backtest produce report with no trades - as the "position"=sig.PosSize is equal to zero...I was trying to nest Foreign(...) ans StaticVarGet(...) functions in different parts of CBT code, however without success.
Please help if you have any hints about the reasons of my problems.
Tomasz
PS I use version 5.20 of Ami
__._,_.___
**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
TO GET TECHNICAL SUPPORT send an e-mail directly to
SUPPORT {at} amibroker.com
TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
__,_._,___
|