Stock Portfolio Organizer
The ultimate porfolio management solution.
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
Augubhai's ORB system v1.1 for Amibroker (AFL)
Simple Opening Range Breakout formula. Go long/short on touch of high/low of the opening range. Exit end of day.
Screenshots
Similar Indicators / Formulas
Indicator / Formula
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | function ParamOptimize( pname, defaultval, minv, maxv, step ) { return Optimize ( pname, Param ( pname, defaultval, minv, maxv, step ), minv, maxv, step ); } _SECTION_BEGIN ( "Augubhai's ORB System v1.1" ); //--Intraday time frame TimeFrameSet ( in5Minute ); //If reseting, check formula for TimeFrameInMinutes TimeFrameInMinutes = 5; //--Define all params EntryBufferPct = ParamOptimize( "Entry Buffer %" , 0, 0, 2, 0.1); SLPct = ParamOptimize( "SL %" , 1.4, 0.1, 10, 0.1); TargetPct = ParamOptimize( "Target %" , 0, 0, 20, 0.5); MaxTarget = 100; TargetPct = IIf (TargetPct == 0, MaxTarget, TargetPct); EntryTimeStart = ParamOptimize( "Entry Time Start (Minutes)" , 5, 5, 120, 5); EntryBarStart = floor (EntryTimeStart/TimeFrameInMinutes) - 1; EntryTimeEnd = ParamOptimize( "Entry Time End (Minutes)" , 25, 10, 180, 5); EntryBarEnd = floor (EntryTimeEnd/TimeFrameInMinutes) - 1; EntryBarEnd = IIf (EntryBarEnd < EntryBarStart, EntryBarStart, EntryBarEnd); //--Plot Price Candle Chart 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" , colorBlack , styleNoTitle | GetPriceStyle () ); //--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; //--Calculate ORB, and SL HighestOfDay = HighestSince (NewDay, H ,1); LowestOfDay = LowestSince (NewDay, L ,1); BarsSinceNewDay = BarsSince (NewDay); ORBH = ValueWhen (BarsSinceNewDay<=EntryBarStart,HighestOfDay ,1) * (1 + (EntryBufferPct/100)); ORBL = ValueWhen (BarsSinceNewDay<=EntryBarStart,LowestOfDay ,1) * (1 - (EntryBufferPct/100)); ORBHSL = ORBH * (1-(SLPct/100)); //ORBHSL = ORBL; ORBLSL = ORBL * (1+(SLPct/100)); //ORBLSL = ORBH; ORBHTarget = ORBH * (1+(TargetPct/100)); ORBLTarget = ORBL * (1-(TargetPct/100)); //--Find Buy, Sell, Short & Cover Signals BuySignal = ( H >= ORBH) AND (BarsSinceNewDay > EntryBarStart); printf ( "\nBuySignal : " + BuySignal ); ShortSignal = ( L <= ORBL) AND (BarsSinceNewDay > EntryBarStart) ; 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 printf ( "\n\nBarsSinceNewDay : " + BarsSinceNewDay ); printf ( "\n BarsSinceLastEntrySignal : " + BarsSinceLastEntrySignal); Buy = ( H >= ORBH) AND (BarsSinceNewDay > EntryBarStart) AND (BarsSinceNewDay <= EntryBarEnd) AND ((BarsSinceNewDay < BarsSinceLastEntrySignal) OR BothEntrySignalsNull ); Sell = ( L <= ORBHSL) OR ( H >= ORBHTarget) OR ( TimeNum () > SquareOffTime-1) AND (BarsSinceNewDay > BarsSinceLastBuySignal); Short = ( L <= ORBL) AND (BarsSinceNewDay > EntryBarStart) AND (BarsSinceNewDay <= EntryBarEnd) AND ((BarsSinceNewDay < BarsSinceLastEntrySignal) OR BothEntrySignalsNull ); Cover = ( H >= ORBLSL) OR ( L <= ORBLTarget) OR ( TimeNum () > SquareOffTime-1) AND (BarsSinceNewDay > BarsSinceLastShortSignal); printf ( "\nBuy : " + Buy ); printf ( "\nSell : " + Sell ); printf ( "\nShort : " + Short ); printf ( "\nCover : " + Cover ); //--Handle if ORB broken both sides on same bar //--And remove duplicate Sell & Cover signals, since ExRem did not work as needed when Buy & Sell 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); printf ( "\n\norbBothSides : " + orbBothSides); printf ( "\nBuy : " + Buy ); printf ( "\nSell : " + Sell ); printf ( "\nShort : " + Short ); printf ( "\nCover : " + Cover ); //--Special Condition for 18 & 19 May 2009 for the Indian Market Buy = IIf ( DateNum ()==1090518 OR ( DateNum ()==1090519 AND NewDay),0, Buy ); Sell = IIf ( DateNum ()==1090518 OR ( DateNum ()==1090519 AND NewDay),0, Sell ); Short = IIf ( DateNum ()==1090518 OR ( DateNum ()==1090519 AND NewDay),0, Short ); Cover = IIf ( DateNum ()==1090518 OR ( DateNum ()==1090519 AND NewDay),0, Cover ); //--Set prices BuyPrice = IIf ( Buy , ORBH, Null ); SellPrice = IIf ( Sell , IIf ( H >= ORBHTarget, ORBHTarget, Max (ORBHSL, L )), Null ); ShortPrice = IIf ( Short , ORBL, Null ); CoverPrice = IIf ( Cover , IIf ( L <= ORBLTarget, ORBLTarget, Min (ORBLSL, H )), Null ); //--Plot ORB, and SL Plot (ORBHSL, "" , colorRed , styleDashed ); Plot (ORBLSL, "" , colorRed , styleDashed ); Plot ( IIf (TargetPct == MaxTarget, Null , ORBHTarget), "" , colorGreen , styleDashed ); Plot ( IIf (TargetPct == MaxTarget, Null , ORBLTarget), "" , colorGreen , styleDashed ); PlotOHLC ( ORBL, ORBH, ORBL, ORBH, "" , colorYellow , styleCloud ); //--Plot Signals shape1 = Buy * shapeUpArrow + Sell * shapeDownArrow ; PlotShapes ( shape1, IIf ( Buy , colorGreen , colorGreen ), 0, IIf ( Buy , Low , High ) ); shape2 = Cover * shapeUpArrow + Short * shapeDownArrow ; PlotShapes ( shape2, IIf ( Cover , colorRed , colorRed ), 0, IIf ( Cover , Low , High ) ); GraphXSpace = 5; //--Restore time frame TimeFrameRestore (); _SECTION_END (); |
0 comments
Leave Comment
Please login here to leave a comment.
Back