Our readers asked for an easy-to-use AFL (AmiBroker Formula Language) for USD-INR Currency Trading, and we’ve got you covered. This strategy, ideal for day trading, relies on a triple Exponential Moving Average (EMA) crossover. It works like a charm for trading USD-INR, consistently bringing in profits. Check out the backtest report for all the details.
For learning AFL coding and creating your own trading systems, click here.
USD-INR Currency Trading Strategy: AFL Overview
Parameters | Value |
Indicators Used | EMA 3, EMA 21, EMA 46 |
Buy Condition | EMA Period 3 is greater than EMA period 21, and EMA period 21 is greater than EMA period 46. |
Sell Condition | EMA Period 3 is less than EMA period 21, and EMA period 21 is less than EMA period 46 |
Stop Loss | 0.5% |
Targets | No fixed target, Stop and reverse when AFL gives an opposite signal |
Position Size | 80% of Trading Capital |
Initial Equity | 100,000 |
Brokerage | 50 per order |
Margin | 2.5% (for USD-INR Currency futures) |
AFL Code
//------------------------------------------------------
//
// Formula Name: USD-INR Trading Startegy
// Website: zerobrokerageclub.com
//------------------------------------------------------
_SECTION_BEGIN("USD-INR Trading Startegy");
SetTradeDelays( 1, 1, 1, 1 );
SetOption( "InitialEquity", 100000);
SetOption("FuturesMode" ,True);
SetOption("MinShares",1);
SetOption("CommissionMode",2);
SetOption("CommissionAmount",50);
SetOption("AccountMargin",10);
SetOption("RefreshWhenCompleted",True);
SetPositionSize( 80, spsPercentOfEquity );
SetOption( "AllowPositionShrinking", True );
BuyPrice=Open;
SellPrice=Open;
ShortPrice=Open;
CoverPrice=Open;
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
EMAPeriod1=3;
EMAPeriod2=21;
EMAPeriod3=46;
Buy = EMA(C, EMAPeriod1) > EMA(C, EMAPeriod2) AND EMA(C, EMAPeriod2) < EMA(C, EMAPeriod3);
Sell = EMA(C, EMAPeriod1) < EMA(C, EMAPeriod2) AND EMA(C, EMAPeriod2) > EMA(C, EMAPeriod3);
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
Short = Sell;
Cover = Buy;
StopLoss=0.5;
ApplyStop(Type=0,Mode=1,Amount=StopLoss);
Plot( Close, "Price", colorWhite, styleCandle );
Plot(ema( C, EMAPeriod1 ),"3EMA",colorWhite);
Plot(ema( C, EMAPeriod2 ),"21EMA",colorBlue);
Plot(ema( C, EMAPeriod3 ),"46EMA",colorRed);
/* Plot Buy and Sell Signal Arrows */
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);
PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45);
PlotShapes(IIf(Cover, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(Cover, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);
PlotShapes(IIf(Cover, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45);
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);
PlotShapes(IIf(Sell, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);
PlotShapes(IIf(Short, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(Short, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);
PlotShapes(IIf(Short, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);
_SECTION_END();
AFL Screenshot
Backtest Report
Parameter | Value |
USD-INR Currency Futures | |
Initial Capital | 100,000 |
Final Capital | 896,807.50 |
Backtest Period | 07-07-2015 to 03-03-2016 |
Timeframe | 10 minutes |
Net Profit % | 796.81% |
Annual Return % | 2672.58% |
Number of Trades | 111 |
Winning Trade % | 39.64% |
Average Holding Period | 64 periods |
Max Consecutive Losses | 8 |
Max System % Drawdown | -44.49% |
Max Trade % Drawdown | -28.39% |
Download the detailed backtest report here.
Please note that you can expect even better results if you allow compounding of your returns.
Equity Curve
Additional Amibroker Settings for Backtesting
Go to Symbol –> Information and specify the lot size and margin requirement. The below screenshot shows a lot size of 1000 and a margin requirement of 2.5% for USD-INR: