Limit entry system and testing platform

Hello, I am relatively new to amibroker. I have just recently make an attempt to code both trading system and testing platform. I would greatly appreciate any help from experience coder who has already familiar with amibroker and obviously I would welcome any positive and supportive comments and effort .

Kind Regards,

Tom

//A reversal trading system concept based modified 2 days Connor's RSI coupled with pattern candle limit entry and exits
//The codes belong to @link https://forum.amibroker.com
//EOD System but can be tailored to any timeframe. Please do your own research and adjust it to your comfort risk level
//An example system only and I dont hold responsible for anything
//First attempt code by Thomas Ng



_SECTION_BEGIN("Xtreme");

//Trading System Settings

leverage = 2;
SetTradeDelays( 1, 1, 1, 1 );
SetOption( "InitialEquity", 10000);
SetOption("MinShares",1);
SetOption("CommissionMode",2);
SetOption("CommissionAmount",50);
SetOption("AccountMargin",100/leverage);
SetOption("FuturesMode", False); 
SetOption("UseCurBarEquityForPosSizing", True);
SetOption( "AllowPositionShrinking", True);
SetOption("UseCustomBacktestProc", True );
SetOption( HoldMinDays, 4 )
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, 300 ))));

LEPrice=Min(CLOSE,LE Condition);
LXPrice=Close;
SEPrice=Max(CLOSE,SE Condition);
SXPrice=Close;

// Indicator Functions

OBOS=RSI(C,2);


// Buy AND Sell Rules

LE Rules= Sum(C<Ref(C,-1),4)==4 AND OBOS<5
LE Signal= Ref(LE Rules,-1);
LE Limit Price= Value When(LE Signal,L)-1.5*ATR(14);
LE Condition= Hold(LE,3) AND L<LE Limit Price;
LX Signal= Ref(H,-3);
ApplyStop( stopTypeNBar, stopModeBars, 3);

SE Rules= Sum(C>Ref(C,-1),4)==4 AND OBOS>90
SE Signal = Ref(SE Rules,-1);
SE Limit Price= Value When(SE Signal,H)+0.35*ATR(5);
SE Condition= Hold(SE,3) AND H>SE Limit Price;
SX Signal= Ref(L,-2);
ApplyStop( stopTypeNBar, stopModeBars, 2);

LE = ExRem( LE Price, LX);
LX = ExRem( LX, LE Price);
SE = ExRem( SE Price, SX);
SX = ExRem( SX, SE Price);

//Define stoploss and targets

Initial stop LX Price= LEPrice-3.2*ATR(10);
ApplyStop( stopTypeTrailing, stopModePoint, amount, 1);

Initial stop SX Price= SEPrice+3.2*ATR(10);
ApplyStop( stopTypeTrailing, stopModePercent, amount, 1);


//Debug

printf("\nLE Rules: " + LE Rules);
printf("\nSE Rules: " + SE Rules);
printf("\nSX Rules: " + SX Rules);
printf("\nLX Rules: " + LX Rules);
printf("\nLEPrice : " + LEPrice );
printf("\nSEPrice : " + SEPrice );
printf("\nLXPrice : " + LXPrice );
printf("\nSXPrice : " + SXPrice );
printf("\nLE Condition : "+ LE Condition);
printf("\nSE Condition : "+ SE Condition);
printf("\nInitial stop LE Price : "+Initial stop LE Price);
printf("\nInitial stop SE Price : "+Initial stop SE Price);

Plot( C, "Close", ParamColor("Color", colorDefault ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );


/* Plot Buy and Sell Signal Arrows */

PlotShapes(IIf(LE, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(LE, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);
PlotShapes(IIf(LE, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45);

PlotShapes(IIf(SX, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(SX, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);
PlotShapes(IIf(SX, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45);
PlotShapes(IIf(LX, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(LX, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);
PlotShapes(IIf(LX, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);
PlotShapes(IIf(SE, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(SE, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);
PlotShapes(IIf(SE, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);

_SECTION_END();  type or paste code here


Testing platform

//A reversal trading system concept based modified 2 days Connor's RSI coupled with pattern candle limit entry and exits
//The codes belong to @link https://forum.amibroker.com
//EOD System but can be tailored to any timeframe. Please do your own research and adjust it to your comfort risk level
//An example system only and I dont hold responsible for anything
//First attempt code by Thomas Ng

_SECTION_BEGIN("Xtreme");

//Trading System Settings

leverage = 2;
SetTradeDelays( 1, 1, 1, 1 );
SetOption( "InitialEquity", 10000);
SetOption("MinShares",1);
SetOption("CommissionMode",2);
SetOption("CommissionAmount",50);
SetOption("AccountMargin",100/leverage);
SetOption("FuturesMode", False);
SetOption("UseCurBarEquityForPosSizing", True);
SetOption( "AllowPositionShrinking", True);
SetOption("UseCustomBacktestProc", True );
SetOption( HoldMinDays, 4 )
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, 300 ))));

LEPrice=Min(CLOSE,LE Condition);
LXPrice=Close;
SEPrice=Max(CLOSE,SE Condition);
SXPrice=Close;

// Indicator Functions

OBOS=RSI(C,2);

// Buy AND Sell Rules

LE Rules= Sum(C<Ref(C,-1),4)==4 AND OBOS<5
LE Signal= Ref(LE Rules,-1);
LE Limit Price= Value When(LE Signal,L)-1.5*ATR(14);
LE Condition= Hold(LE,3) AND L<LE Limit Price;
LX Signal= Ref(H,-3);
ApplyStop( stopTypeNBar, stopModeBars, 3);

SE Rules= Sum(C>Ref(C,-1),4)==4 AND OBOS>90
SE Signal = Ref(SE Rules,-1);
SE Limit Price= Value When(SE Signal,H)+0.35*ATR(5);
SE Condition= Hold(SE,3) AND H>SE Limit Price;
SX Signal= Ref(L,-2);
ApplyStop( stopTypeNBar, stopModeBars, 2);

LE = ExRem( LE Price, LX);
LX = ExRem( LX, LE Price);
SE = ExRem( SE Price, SX);
SX = ExRem( SX, SE Price);

//Define stoploss and targets

Initial stop LX Price= LEPrice-3.2*ATR(10);
ApplyStop( stopTypeTrailing, stopModePoint, amount, 1);

Initial stop SX Price= SEPrice+3.2*ATR(10);
ApplyStop( stopTypeTrailing, stopModePercent, amount, 1);

// Position Sizing
RiskPerShare = 3.2 * ATR( 10 );
ApplyStop( stopTypeLoss, stopModePoint, RiskPerShare, True );
// risk 3% of entire equity on single trade
PositionRisk = 3;
// position size calculation
PctSize = PositionRisk * BuyPrice / RiskPerShare;
SetPositionSize( PctSize, spsPercentOfEquity )

//Debug

printf("\nLE Rules: " + LE Rules);
printf("\nSE Rules: " + SE Rules);
printf("\nSX Rules: " + SX Rules);
printf("\nLX Rules: " + LX Rules);
printf("\nLEPrice : " + LEPrice );
printf("\nSEPrice : " + SEPrice );
printf("\nLXPrice : " + LXPrice );
printf("\nSXPrice : " + SXPrice );
printf("\nLE Condition : "+ LE Condition);
printf("\nSE Condition : "+ SE Condition);
printf("\nInitial stop LE Price : "+Initial stop LE Price);
printf("\nInitial stop SE Price : "+Initial stop SE Price);

Plot( C, "Close", ParamColor("Color", colorDefault ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );

/* Plot Buy and Sell Signal Arrows */

PlotShapes(IIf(LE, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(LE, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);
PlotShapes(IIf(LE, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45);

PlotShapes(IIf(SX, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(SX, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);
PlotShapes(IIf(SX, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45);
PlotShapes(IIf(LX, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(LX, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);
PlotShapes(IIf(LX, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);
PlotShapes(IIf(SE, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(SE, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);
PlotShapes(IIf(SE, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);

_SECTION_END();

When posting the formula, please make sure that you use Code Tags (using </> code button) as explained here: How to use this site.

Using code button

Code tags are required so formulas can be properly displayed and copied without errors.

This topic was automatically closed 100 days after the last reply. New replies are no longer allowed.