Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 4

// Downloaded From https://www.WiseStockTrader.

com
SetTradeDelays( 1, 1, 1, 1 ); //set trade delays at 1 bar open
RoundLotSize = 40; // Define Round Lot Size of the Trading Instrument
SetPositionSize( 500, 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", 2 ); //Define Margin Requirement
SetOption( "AccountMargin", 2 ); //Define Account Margin

function ParamOptimize( pname, defaultval, minv, maxv, step )


{
return Optimize( pname,
Param( pname, defaultval, minv, maxv, step ),
minv, maxv, step );
}

_SECTION_BEGIN( "Price" );
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 ) ) ));
Plot( C, "Close", colorCustom11, styleNoTitle | GetPriceStyle() );
_SECTION_END();

//////////////////////// DAY
SEPERATOR /////////////////////////////
//--Define all params
_SECTION_BEGIN( "RBO System Parameters" );
EntryBufferPct = ParamOptimize( "Entry Buffer %", 0, 0, 15, 0.1 );
SLPct = ParamOptimize( "SL %", 3, 0.25, 5, 0.25 );
TargetPct = ParamOptimize( "Target %", 5, 0, 100, 0.25 );
MaxTarget = 100;
TargetPct = IIf( TargetPct == 0, MaxTarget, TargetPct );
_SECTION_END();

_SECTION_BEGIN( "RBO System Signals & Time" );


n = 1; //ParamOptimize("Number of B/S to Generate in a Day",1,1,1,1);
ST = ParamOptimize( "Entry Start Time", 0915, 0915, 1445, 1 );
ET = ParamOptimize( "Entry End Time", 1430, 1010, 1530, 1 );
FTime = ParamOptimize( "Exit for the Day @", 1505, 1445, 1530, 1 );
tn = TimeNum();
TimeOK = tn >= ( ST * 100 ) AND tn <= ( ET * 100 );
FT = tn >= ( FTime * 100 );
_SECTION_END();

_SECTION_BEGIN( "RBO System" );


//--New Day & Time. End Day & Time . End Day & Time is null till end of day 1
NewDay = ( Day() != Ref( Day(), -1 ) ) OR BarIndex() == 0;
printf( "\n NewDay : " + NewDay );
EndDay = ( Day() != Ref( Day(), 1 ) );
printf( "\n EndDay : " + EndDay );
FirstBarTime = ValueWhen( NewDay, TimeNum(), 1 );
EndTime = ValueWhen( EndDay, TimeNum(), 1 );
SquareOffTime = EndTime;

Day1 = TimeFrameGetPrice( "O", inDaily ); // current day open

//Calculate ORB and Sl for 5Min RBO


HighestOfDay = HighestSince( NewDay, H, 1 );
LowestOfDay = LowestSince( NewDay, L, 1 );
ORBH = ValueWhen( NewDay, HighestOfDay , 1 ) * ( 1 + ( EntryBufferPct / 100 ) );
ORBL = ValueWhen( NewDay, LowestOfDay , 1 ) * ( 1 - ( EntryBufferPct / 100 ) );

//--Find Buy, Short, Sell & Cover Signals


BarsSinceNewDay = BarsSince( NewDay );
BuySignal = ( H >= ORBH );
printf( "\nBuySignal : " + BuySignal );
ShortSignal = ( L <= ORBL );
printf( "\nShortSignal : " + ShortSignal );
BarsSinceLastBuySignal = ( BarsSince( Ref( BuySignal, -1 ) ) + 1 );
BarsSinceLastShortSignal = ( BarsSince( Ref( ShortSignal, -1 ) ) + 1 );
BarsSinceLastEntrySignal = Min( BarsSinceLastBuySignal, BarsSinceLastShortSignal );
BothEntrySignalsNull = IsNull( BarsSinceLastBuySignal ) AND
IsNull( BarsSinceLastShortSignal ); //true for start of Day 1
Daych = Day() != Ref( Day(), -1 );

B1 = ( O >= ORBH ) AND( C >= ORBH ) AND TimeOK;


S1 = ( O <= ORBL ) AND( C <= ORBL ) AND TimeOK;

Buy = B1; // AND B2;


Short = S1;// AND S2;

Buy = Buy AND Sum( Buy, BarsSince( newday ) + 1 ) <= N ;


Short = Short AND Sum( Short, BarsSince( newday ) + 1 ) <= N ;

BuyPrice = IIf( Buy, Max( ORBH, O ), Null );


ShortPrice = IIf( Short, Min( ORBL, Open ), Null );

ORBHSL = ValueWhen( BuyPrice, BuyPrice ) * ( 1 - ( SLPct / 100 ) );


ORBLSL = ValueWhen( ShortPrice, ShortPrice ) * ( 1 + ( SLPct / 100 ) );
ORBHTarget = ValueWhen( BuyPrice, BuyPrice ) * ( 1 + ( TargetPct / 100 ) );
ORBLTarget = ValueWhen( ShortPrice, ShortPrice ) * ( 1 - ( TargetPct / 100 ) );

Sell = FT OR L <= ORBHSL OR H >= ORBHTarget OR( ( TimeNum() > SquareOffTime - 1 )


AND( BarsSinceNewDay > BarsSinceLastBuySignal ) );
Cover = FT OR H >= ORBLSL OR L <= ORBLTarget OR( ( TimeNum() > SquareOffTime - 1 )
AND( BarsSinceNewDay > BarsSinceLastShortSignal ) );

Buy = ExRem( Buy, Short OR daych OR Sell );


Short = ExRem( Short, Buy OR daych OR Cover );

SellPrice = IIf( Sell, IIf( H >= ORBHTarget, ORBHTarget, Max( ORBHSL, L ) ),


Null );
CoverPrice = IIf( Cover, IIf( L <= ORBLTarget, ORBLTarget, Min( ORBLSL, H ) ), Null
);

//--Handle if ORB broken both sides on same bar


//--And remove duplicate Short & Cover signals, since ExRem did not work as needed
when Buy & Short on same bar
orbBothSides = IIf( Buy AND Short, 1, 0 );
Buy = IIf( orbBothSides AND C <= O, 0, Buy );
Short = IIf( orbBothSides AND C > O, 0, Short );
Sell = IIf( orbBothSides AND C > O AND( L <= ORBHSL ), 1, Sell );
Sell = IIf( ( BarsSince( Buy ) < ( BarsSince( Ref( Sell, -1 ) ) + 1 ) )
OR( BarsSince( Buy ) AND IsNull( BarsSince( Ref( Sell, -1 ) ) ) ), Sell, 0 );
Cover = IIf( orbBothSides AND C <= O AND( H >= ORBLSL ), 1, Cover );
Cover = IIf( ( BarsSince( Short ) < ( BarsSince( Ref( Cover, -1 ) ) + 1 ) )
OR( BarsSince( Short ) AND IsNull( BarsSince( Ref( Cover, -1 ) ) ) ), Cover, 0 );

dist = 3.5 * ATR( 10 );


dist1 = 2.5 * ATR( 10 );

for( i = 0; i < BarCount; i++ )


{
if( Buy[i] )
{
PlotText( "" + C[ i ], i, C[ i ] - dist[i], colorWhite, colorBlue );
}

if( Short[i] )
{
PlotText( "" + C[ i ], i, C[ i ] + dist1[i], colorRed, colorYellow );
}
}

dist = -2 * ATR( 10 );
dist1 = -5.5 * ATR( 10 );

for( i = 0; i < BarCount; i++ )


{
if( Sell[i] )
{
PlotText( "" + C[ i ], i, C[ i ] - dist[i], colorCustom11, colorBlack );
}

if( Cover[i] )
{
PlotText( "" + C[ i ], i, C[ i ] + dist1[i], colorYellow, colorBlack );
}
}

Plot( ORBH, "", colorBlue, styleDots );


Plot( ORBL, "", colorRed, styleDots );
PlotOHLC( ORBL, ORBH, ORBL, ORBH, "", colorGrey40, styleCloud );

/* Plot Buy and Short 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( 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
);

PlotShapes( IIf( Cover, shapeSmallUpTriangle, shapeNone ), colorYellow, 0, L,


Offset = -40 );
PlotShapes( IIf( Sell, shapeSmallDownTriangle, shapeNone ), colorWhite, 0, H,
Offset = -40 );
_SECTION_END();

//////////////////////// DAY
SEPERATOR /////////////////////////////
_SECTION_BEGIN( "Day Seperator, EOD, Current Price" );
nday = IIf( Day() != Ref( Day(), -1 ), 1, 0 );
Plot( nday, "", 3, styleHistogram | styleDashed | styleNoLabel | styleOwnScale, 0,
1 );
_SECTION_END();

////////////////////PLOT NAME STRATEGY NAME, PRICE, FULL NAME ETC ON


CHART//////////////////
_SECTION_BEGIN( "Get Strategy Name on Chart" );
x = 1;
y = 1;

GfxGradientRect( 1, 1, 1400, 35, colorGrey50, colorDarkGrey );


GfxSetBkMode( 0 );

GfxSelectFont( "Comic Sans MS", 10, 500, False );


GfxSetTextColor( colorYellow );
GfxTextOut( Interval( 2 ), x + 25, y + 20 );

GfxSelectFont( "Tahoma", 10, 1200, False );


GfxSetTextColor( colorWhite );
GfxTextOut( "RBO With TGT & SL", x + 90, y + 20 );

GfxSelectFont( "Arial", 11, 50, False );


GfxSetTextColor( colorWhite );
GfxTextOut( Date(), x + 325, y + 20 );

GfxSelectFont( "Tahoma", 13, 750, False );


GfxSetTextColor( colorGold );
GfxTextOut( Name(), x + 485, y + 18 );

GfxSelectFont( "Tahoma", 13, 750, False );


GfxSetTextColor( colorLavender );
GfxTextOut( FullName(), x + 675, y + 18 );

GfxSelectFont( "Comic Sans MS", 16, 525, False );


GfxSetTextColor( colorYellow );
GfxTextOut( " " + C, x + 925, y + 10 );

YC = TimeFrameGetPrice( "C", inDaily, -1 );


DD = Prec( C - YC, 2 );
xx = Prec( ( DD / YC ) * 100, 2 );
PercH = C > YC;
PercL = C < YC;

GfxSelectFont( "Comic Sans MS", 10, 525, False );


GfxSetTextColor( colorYellow );
GfxTextOut( "" + DD + " (" + xx + "%)", x + 925, y + 38 );

_SECTION_END();

You might also like