// following is DHL code for StdErrBnds and StdErrOsc _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", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() ); _SECTION_END(); SetChartOptions(0,chartShowDates); PositionSize = 3000; SetTradeDelays(1,1,1,1); SetOption("InitialEquity", 100000 ); Equity(1); EnableTextOutput(False); // to optimize per symbol, // out the 'hurdle by ticker' group ticker = Name(); if ( ticker == "LRCX" ) { UpperStdErrOscHurdle = 71; LowerStdErrOscHurdle = 29; } else if ( ticker == "HD" OR ticker == "DBRN" OR ticker == "IDTI" OR ticker == "AMD" OR ticker == "COGT" ) { UpperStdErrOscHurdle = 72; LowerStdErrOscHurdle = 28; } else if ( ticker == "EXPD" OR ticker == "AMKR" OR ticker == "ARRS" ) { UpperStdErrOscHurdle = 73; LowerStdErrOscHurdle = 27; } else if ( ticker == "EBAY" OR ticker == "ENER" OR ticker == "SMSI" OR ticker == "CNET" OR ticker == "EEM" ) { UpperStdErrOscHurdle = 74; LowerStdErrOscHurdle = 26; } else if ( ticker == "FPFC" OR ticker == "ATHR" OR ticker == "SAY" OR ticker == "STLD" OR ticker == "CSGS" OR ticker == "ENDP" OR ticker == "MXIM" OR ticker == "HLIT" ) { UpperStdErrOscHurdle = 75; LowerStdErrOscHurdle = 25; } else if ( ticker == "CHRW" OR ticker == "ILMN" OR ticker == "FNFG" ) { UpperStdErrOscHurdle = 76; LowerStdErrOscHurdle = 24; } else if ( ticker == "SHEN" OR ticker == "KLAC" ) { UpperStdErrOscHurdle = 77; LowerStdErrOscHurdle = 23; } else if ( ticker == "QID" OR ticker == "QLD" ) { UpperStdErrOscHurdle = 78; LowerStdErrOscHurdle = 22; } else if ( ticker == "CTBI" OR ticker == "PSPT" ) { UpperStdErrOscHurdle = 79; LowerStdErrOscHurdle = 21; } else if ( ticker == "SBUX" OR ticker == "WOR" OR ticker == "NFLX" OR ticker == "QQQQ" OR ticker == "ARXX" OR ticker == "IWM" OR ticker == "DXD" OR ticker == "DDM" ) { UpperStdErrOscHurdle = 80; LowerStdErrOscHurdle = 20; } else if ( ticker == "SUBK" OR ticker == "WASH" OR ticker == "GILD" OR ticker == "LIFC" OR ticker == "PLLL" OR ticker == "MZZ" OR ticker == "MVV" ) { UpperStdErrOscHurdle = 81; LowerStdErrOscHurdle = 19; } else if ( ticker == "PLFE" OR ticker == "AOB" ) { UpperStdErrOscHurdle = 82; LowerStdErrOscHurdle = 18; } else if ( ticker == "CHS" OR ticker == "SIGM" OR ticker == "SDS" OR ticker == "SSO" ) { UpperStdErrOscHurdle = 83; LowerStdErrOscHurdle = 17; } else if ( ticker == "SASR" OR ticker == "AKS" OR ticker == "SCHW" ) { UpperStdErrOscHurdle = 84; LowerStdErrOscHurdle = 16; } else if ( ticker == "TONE" OR ticker == "NETL" OR ticker == "TTWO" OR ticker == "AEIS" ) { UpperStdErrOscHurdle = 85; LowerStdErrOscHurdle = 15; } else if ( ticker == "WCI" OR ticker == "GTI" ) { UpperStdErrOscHurdle = 86; LowerStdErrOscHurdle = 14; } else if ( ticker == "GOL" OR ticker == "MRVL" OR ticker == "AFFX" OR ticker == "JOYG" OR ticker == "RCII" OR ticker == "ENTG" ) { UpperStdErrOscHurdle = 87; LowerStdErrOscHurdle = 13; } else if ( ticker == "SFNC" OR ticker == "PEIX" OR ticker == "SLAB" OR ticker == "URBN" ) { UpperStdErrOscHurdle = 88; LowerStdErrOscHurdle = 12; } else if ( ticker == "AQNT" ) { UpperStdErrOscHurdle = 90; LowerStdErrOscHurdle = 10; } else if ( ticker == "AUY" ) { UpperStdErrOscHurdle = 94; LowerStdErrOscHurdle = 6; } else if ( ticker == "ELN" OR ticker == "ISIS" ) { UpperStdErrOscHurdle = 95; LowerStdErrOscHurdle = 5; } else { UpperStdErrOscHurdle = 90; LowerStdErrOscHurdle = 10; } function SteBand( array, periods, upper ) { Lr = LinearReg( array, periods ); se = StdErr( array, periods ); return LR + IIf( upper, 1, -1 ) * 2 * se; } Periods = 8; //Periods = Optimize("Periods",8,6,8,1); SmoothingPeriods = 3; //SmoothingPeriods = Optimize("SmoothingPeriods",3,1,5,1); UpperStdErrBand = MA(SteBand( C, Periods, True ),SmoothingPeriods); LowerStdErrBand = MA(SteBand( C, Periods, False ),SmoothingPeriods); K1 = 2; //K1 = Optimize("K1",2,1.5,2.5,.2); K2 = 4; //K2 = 2 * K1; //K2 = Optimize("K2",4,2,5,.1); StdErrOsc = (C+K1*StdErr(C,Periods)-MA(C,3))/(K2*(StdErr(C,Periods)))*100; //UpperStdErrOscHurdle = 90; //UpperStdErrOscHurdle = Optimize("UpperStdErrOscHurdle",90,71,95,1); //LowerStdErrOscHurdle = Optimize("LowerStdErrOscHurdle",10,5,25,1); //LowerStdErrOscHurdle = 100 - UpperStdErrOscHurdle; //TradeWithTrend = 34; //TradeWithTrend = Optimize("TradeWithTrend",34,20,50,2); Buy = StdErrOsc <= LowerStdErrOscHurdle ;//AND MA(C,34) > Ref(MA(C,34),-1); Sell = C >= UpperStdErrBand OR StdErrOsc >= UpperStdErrOscHurdle; Short = StdErrOsc >= UpperStdErrOscHurdle ;//AND MA(C,34) < Ref(MA(C,34),-1); Cover = C <= LowerStdErrBand OR StdErrOsc <= LowerStdErrOscHurdle; //ApplyStop( stopTypeLoss, stopModePercent, Optimize( "max. loss stop level", 13, 2, 30, 1 ), 2, False, 0 ); MaxLossStop = 10; //MaxLossStop = Optimize("MaxLossStop",6,1,15,1); ApplyStop(0,1,MaxLossStop,1,1); //MaxTimeStop = 11 ; //MaxTimeStop = Optimize("MaxTimeStop",11,1,45,1) ; //ApplyStop(3,1,MaxTimeStop,1,1) ; Filter = Buy OR Sell OR Short OR Cover; Buy = ExRem( Buy, Sell ); Sell = ExRem( Sell, Buy ); Cover= ExRem( Cover, Short ); Short = ExRem( Short , Cover); Title = Name () + " " + Date() + " \\c05O " + WriteVal(O,2.2) + " \\c14H " + WriteVal(H,2.2) + " \\c14L " + WriteVal(L,2.2) + " \\c11C " + WriteVal(C,2.2) + " (" + WriteVal(ROC(Close,1),2.2) + "%) \\c25Volume "+WriteVal(V,1) +" \\c14 UpperStdErrBnd " + WriteVal(UpperStdErrBand,2.2) + " \\c14 LowerStdErrBnd " + WriteVal(LowerStdErrBand,2.2) + " \\c14 UpperSEOHurdle= " + WriteVal(UpperStdErrOscHurdle,2) + " \\c14 LowerSEOHurdle= " + WriteVal(LowerStdErrOscHurdle,2); Plot(C,"",colorGreen,64); PlotShapes( IIf( Buy,shapeUpTriangle, shapeNone ), colorGreen,0,L,-50); PlotShapes( IIf( Sell,shapeHollowDownTriangle, shapeNone ), colorRed,0,H,-50); PlotShapes( IIf( Cover,shapeHollowUpTriangle, shapeNone ), colorRed,0,H,-50); PlotShapes( IIf( Short,shapeDownTriangle, shapeNone ), colorGreen,0,L,-50); //AddColumn(IIf(Buy,LowerStdErrOscHurdle,0),"BotHurd",1); AddColumn(3000/C,"#shares",1); AddColumn(IIf(Buy,StdErrOsc,0),"BUY",1); AddColumn(IIf(Sell,StdErrOsc,0),"SELL",1); //AddColumn(IIf(Short,UpperStdErrOscHurdle,0),"TopHurd",1); AddColumn(IIf(Short,StdErrOsc,0),"SHORT",1); AddColumn(IIf(Cover,StdErrOsc,0),"COVER",1); Plot(Close, "C", colorGreen, styleCandle ); Plot( UpperStdErrBand, "Upper SE Band ", colorGreen, styleLine + styleThick ); //Plot( MidStdErrBand, "Mid SE Band ", colorBlack , styleLine ); Plot( LowerStdErrBand, "Lower SE Band ", colorRed, styleLine + styleThick ); //Plot(StdErrOsc,"StdErrOsc",colorWhite,4|styleOwnScale); GraphXSpace = 10;