Escolar Documentos
Profissional Documentos
Cultura Documentos
/*
This is an attempt to provide a basic trading system AFL. The system is purely i
maginary AND NOT provided as one that would make money. This is just to provide
a guide to learners on the common components of writing AFL. When you copy/paste
ensure the existing continuous lines have not been wrapped. This wrapping can c
reate error signals when you try to use the code. Click on the check afl
button in the editor before trying to apply or scan.
I have used slash-asterisk /* */ /* for my comments to get around the problem
of wrapping, which could happen if you used double slash //
I hope this helps the beginners in creating AFL code
*/
/*firstly some basics common*/
SetBarsRequired(10000,10000); /* this ensures that the charts include all bars
AND NOT just those on screen */
SetFormulaName("Sample System"); /*name it for backtest report identification
*/
SetTradeDelays( 1, 1, 1, 1 ); /* delay entry/exit by one bar */
SetOption( "initialequity", 100000 ); /* starting capital */
PositionSize = -10; /* trade size will be 10% of available equty */
SetOption( "MaxOpenPositions", 6 ); /* I don't want to comit more than 60% of
Equity at any one time */
SetOption( "PriceBoundChecking", 1 ); /* trade only within the chart bar's
price range */
SetOption( "CommissionMode", 2 ); /* set commissions AND costs as $ per trade
*/
SetOption( "CommissionAmount", 32.95 ); /* commissions AND cost */
SetOption( "UsePrevBarEquityForPosSizing", 1 ); /*set the use of last bars
equity for trade size*/
PositionScore = 100/C; /*Set the order for which stock trades when get mulitple
signals in one bar in backtesting */
//Trade system
/*
Buy when exp mov avg crosses and the high is highest for 50 bars
Sell when exp mov avg crosses back
Cross is first variable moves to above the second variable
*/
LongPer = Param("Long Period", 50, 30, 100, 5 ); /* select periods with
parameter window */
ShortPer = Param("Short Period", 5, 3, 10, 1 );
LongMA = EMA( C, LongPer );
ShortMA = EMA( C, ShortPer );
LastHigh = HHV( H, LongPer );
Buy = Cross( ShortMA, LongMA ) AND H > Ref( LastHigh, -1 );
/* ref,-1 is used for the high to have todays high greater than the previous 50
bar high.
To just use H==LastHigh couold mean a previous high was equal to current
high */
Sell = Cross( LongMA, ShortMA );
/* exrem is one method to remove surplus strade signals*/
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);