DALE ! IDENTIFYING CUP FORMATIONS EARLY ! Author: Giorgos E. Siligardos, TASC April 2011 ! Coded by: Richard Denning 2/5/11 ! www.TradersEdgeSystems.com ! INPUTS: parameter is 2.0. semiLen is 20. ! ABBREVIATIONS: C is [close]. OSD is offSetToDate(month(),day(),year()). PD is {position days}. ! PATTERN RECOGNITION FUNCTIONS: FilC is ln(C). FilC1 is valresult(FilC,1). SemiCupPeriod is scanany(C > ^C * parameter,200) then OSD. Ptop is highresult(FilC,^semiCupPeriod). Pbot is lowresult(FilC,^semiCupPeriod). boxHeight is Abs(Ptop - Pbot) / 5. boxLength is floor(^semiCupPeriod/5). B0os is ^semiCupPeriod-1. B5os is 0. B1os is 4*boxLength-1. B2os is 3*boxLength-1. B3os is 2*boxLength-1. B4os is boxLength-1. L2 is Pbot + 2*boxHeight. L3 is Pbot + 3*boxHeight. sumDX1plus is sum(max(FilC - FilC1,0),2*boxLength). sumDX1minus is sum(max(FilC1 - FilC,0),2*boxLength). DX1 is (abs(sumDX1plus - sumDX1minus) / (sumDX1plus + sumDX1minus + 0.0000000001)) * 100. DX1_B2os is valresult(DX1,B2os). sumDX2plus is sum(max(FilC - FilC1,0),3*boxLength). sumDX2minus is sum(max(FilC1 - FilC,0),3*boxLength). DX2 is (abs(sumDX2plus - sumDX2minus) / (sumDX2plus + sumDX2minus + 0.0000000001)) * 100. Yellow1 is iff((countof(FilC > L3,B2os+1,0) = 0),1,0). Yellow2 is iff((countof(FilC > L2,B4os+1,0) = 0),1,0). ! SYSTEM RULES: ! Note rule LE is the semi-cup identification rule LE if hasdatafor(220)>=200 and ^semiCupPeriod >= 20 and DX1_B2os > 25 and DX2 < 25 and Yellow1 = 1 and Yellow2 = 1. ! ENTRY RULE WITH MARKET TIMING TREND FILTER: sma200 is simpleavg(C,200). LEmkt if LE and TickerRule("SPX",countof(C>sma200,2)=2) . !EXITS USE BUILT-IN EXITS: ! TRAILING STOP SET TO 75 ! PROFIT PROTECT SET TO PROTECT 100% OVER 15% ! EXIT FOR "LEmkt" ENTRY RULE (ALSO USE BUILT-IN EXITS ABOVE): LX1 if TickerRule("SPX",countof(C= 366. List if 1. !AIQ RELATIVE STRENGTH REPORTS !Parameters supplied by AIQ for weights were 40%, 20%, 20%, 20%. Define length 32. Q3 is length/4. Q2 is (length - Q3) / 3. Q1 is (length - Q2 - Q3) / 2. Q0 is length - Q1 - Q2 - Q3. ROCq3 is (val([close],Q2,(Q1+Q0)) - val([open],Q3,(Q2+Q1+Q0))) / val([open],Q3,(Q2+Q1+Q0)) * 100. ROCq2 is (val([close],Q1,Q0) - val([open],Q2,(Q1+Q0))) / val([open],Q2,(Q1+Q0)) * 100. ROCq1 is (val([close],Q0,0) - val([open],Q1,Q0)) / val([open],Q1,Q0) * 100. ROCq0 is ([close] - val([open],Q0,0)) / val([open],Q0,0) * 100. RS_AIQ is ROCq0 * 0.40 + ROCq1 * 0.20 + ROCq2 * 0.20 + ROCq3 * 0.20. Rule Libraryÿÿ CCodeViewListÿÿ CReportViewÐSymbolÀ<¡CÀO¡FilCÀO ¡parameterÀO¡SemiCupPeriodÀ`AEOðè>(ŒJ¿@0BLE€ÐSymbolÀ<¡CÀO¡FilCÀO ¡parameterÀO¡SemiCupPeriodÀ`AEOðè>(ŒJ¿@0Burus1000ÿÿÿÿÿÿ CBackTestPropertyLELXPPL² SemiCup LESPXPNAS100 UUUUUÐã@«ªªª,Ðã@ÿÿÿÿÀñà@@Ðã@00:00