For a Non Programmers it is really challenging to understand how to backtest future scripts in Amibroker. To solve this issue i had created a simple backtesting template where most of your backtesting settings are eliminated and its quite easier to understand too.
Backtesting Template
1)Download Backtesting Template for Amibroker
2)Unzip to local folder and copy backtest.afl to c:/program files/amibroker/formulas/include folder
3)Now add #include <backtest.afl>
at the beginning of your trading system afl.
4)Goto New Analysis->Select your trading system to be backtested for futures mode and select the script to be backtested.
4)Goto Backtester Settings and Select the Positions – Long/Short and Select the required Periodicity as shown below and Press the Backtest Button.
Backtesting Template Explained
In this case we taken nifty futures as an example with an Initial Capital of 2 Lakhs and the goal is to trade a trading system with fixed shares 100 shares i.e 2 lots of Nifty every time. Rs100 of fixed Brokerage cost(Brokerage+Slippage+Transaction Cost) included in every leg of transaction.
SetTradeDelays( 1, 1, 1, 1 ); //set trade delays at 1 bar open
RoundLotSize = 50; // Define Round Lot Size of the Trading Instrument
SetPositionSize ( 100,spsShares); // Define Fixed Trading Size
SetOption( “InitialEquity”, 200000 );
SetOption( “MinShares”, 1 );
SetOption( “MinPosValue”, 1 ); // Enable Futures Mode
SetOption( “FuturesMode”, True );
SetOption( “AllowPositionShrinking”, True );
SetOption( “ActivateStopsImmediately”, False );
SetOption( “ReverseSignalForcesExit”, False );
SetOption( “AllowSameBarExit”, False );
SetOption( “CommissionMode”, 2 ); // Fixed Brokerage Commissions (Per Trade)
SetOption( “CommissionAmount”, 100 ); // Rs 100/Leg Commisions
SetOption( “InterestRate”, 0 );
SetOption( “MarginRequirement”, 10 ); //Define Margin Requirement
SetOption(“AccountMargin”, 10 ); //Define Account Margin
SetTradeDelays – SetTradeDelays allows you to control trade delay. For example if your trade occurs at the end of the candle and if you want to execute your Buy/Sell/Long/Short orders then you can settradedelays(1,1,1,1) and generally settradedelays(0,0,0,0) represents no delay in execution.
Setpositionsize – This function defines how many number of shares you want to trade every time. Can be varied according to your trading style.
InitialEquity – Represents the Initial Capital Required for Backtesting Future data. And it can be varied according to your trading style and capital requirement to be backtested.
RoundLotSize – Roundlotsize is where you have to define your lot size and in case of nifty it is 50. You have to vary it according to the instrument you are willing to backtest.
CommissionMode – You can set the commissionmode depends upon how your broker charges you. Set it according to your type of broker or brokerage plan you adopted. Shown the values to be setted for different style of brokerage commissions.
0 – use portfolio manager commission table
1 – percent of trade
2 – Rs per trade
3 – Rs per share/contract
CommissionAmount – The amount to be charged for one leg of transaction and once again it depends upon your brokerage plan.
MarginRequirement – This represents your broker margin to be placed for nifty futures and could vary from broker to broker. Nominally for Nifty the brokerage margin comes around 10%.
Related Readings and Observations
The post Backtesting Template for Testing Future Scripts in Amibroker appeared first on Marketcalls.