You are on page 1of 9

//SwingTradingSetupExplorer//

//////////////////////////

////Trend Qualifiers////

////////////////////////

//GPR//

LB = 100;

PositivePeriods = IIf(ROC(C,1) > 0,ROC(C,1),0);

NegativePeriods = IIf(ROC(C,1) < 0,ROC(C,1),0);

GPR1 = Sum(Positiveperiods,LB);

GPR2 = abs(Sum(Negativeperiods,LB));

GPR = (GPR1 / GPR2);

//Return/Drawdown//

LB = 100;

LBH = H > Ref(HHV(H,LB),-1);

HighV = ValueWhen(LBH,H);

MDD = ((Ref(HighV,-1) - L) / HighV) * 100;

LBMdd = HighestSince(LBH,MDD,1);

MDD2 = HHV(LBMdd,LB);

LBRMdd = ROC(C,LB) / MDD2;

Periods = 100;

//EfficiencyRatio//

er = (C - Ref(C,-Periods)) /(Sum(abs(C-Ref(C,-1)),Periods));

ERMA = MA(ER,63);
ERMASlopeUp = ERMA > Ref(ERMA,-1);

//////////////////////////

//SwingTradingSetups///

/////////////////////////

//Open to Close Range//

DR = ((C - O) / O )*100;

DRSD = StDev(DR,100);

MeanDR = MA(DR,100);

//Oversold Day followed by Pattern//

SetupOSIB = Ref(DR < (meandr - drsd*1.5),-1) AND (((L > Ref(L,-1)

AND H < Ref(H,-1)) OR (O < Ref(L,-1) AND C > Ref(C,-1))

OR (O > Ref(L,-1) AND L < Ref(L,-1) AND C > Ref(C,-1) )));

//Bottom Ten Day Range//

wrp = -100 * ( HHV( H, 10 ) - C )/( HHV( H, 10 ) - LLV( L, 10 ) );

setupBTDR = Ref(wrp,-1) <= -80 AND C > O AND C > Ref(H,-1);

//New High Gap Down//

setupNHGD = BarsSince(C > Ref(HHV(H,63),-1)) < 10 AND H < Ref(L,-1);

//DownDays//

DD = L < Ref(L,-1) AND C < O;

ddn1 = 3;
//CNLDDBuyRules//

CNLDD = Sum(dd,ddn1) == ddn1;

//MASnapBackPR//

periods = 252;

MAused = 6;

Snap = (MA(C,maused) - C);

PercentSnap = Snap/MA(C,maused)*100;

SnapBackPR = PercentRank(PercentSnap,periods);

//MASnapBackPRBuyRules//

MASnapBackPR = SnapBackPR >= 90;

//IBS//

IBS = (Close - Low) / valuewhen( (High - Low) != 0, High - Low ) * 100;

//CumIBSBuyRules//

CumLowIBS = Sum(ibs,2) < 10

AND C < MA(C,5);

//NHPB Param//

NewHighs = C > Ref(HHV(H,100),-1);

Pullback = Sum(dd,2) == 2;

DD = L < Ref(L,-1) AND C < O;


NewHighs = C > Ref(HHV(H,100),-1);

Pullback = Sum(dd,2) == 2;

//NHPB Setup//

NHPB = BarsSince(newhighs) <= 10

AND Pullback

AND C < (ValueWhen(newhighs,H) - ATR(5)) ;

//RSI Twist Param//

TimeFrameSet(inWeekly);

weeklyRSI = RSI(2);

TimeFrameRestore();

weeklyRSI = TimeFrameExpand(weeklyRSI,inWeekly,expandlast);

WeeklyRSILevel = 15;

//Daily+Weekly RSI BuyRules//

DayWeekRSI = Cross(5,RSI(2))

AND weeklyRSI < 15

AND ROC(C,100) > 0;

MRSetupFP = ref(CNLDD OR MASNAPBACKPR OR CUMLOWIBS OR NHPB OR DAYWEEKRSI,-1) AND


(((L > Ref(L,-1)

AND H < Ref(H,-1)) OR (O < Ref(L,-1) AND C > Ref(C,-1))

OR (O > Ref(L,-1) AND L < Ref(L,-1) AND C > Ref(C,-1) )));

///////////////////////////////

//ExplorerColumnsOutput///

//////////////////////////////
//ROCLB//

LB = 100;

//IndexStrength//

Index = Foreign("$SPX","C");

IndexROC = ROC(Index,LB);

Energy = Foreign("$SPXE","C");

Materials = Foreign("$SPXM","C");

Industrials = Foreign("$SPXI","C");

ConsDiscretionary = Foreign("$SPXD","C");

ConsStaples = Foreign("$SPXS","C");

HealthCare = Foreign("$SPXA","C");

Financials = Foreign("$SPXF","C");

InfoTech = Foreign("$SPXT","C");

Telecom = Foreign("$SPXL","C");

Utilities = Foreign("$SPXU","C");

//SectorStrength//

EnergyStrong = ROC(energy,lb) > IndexROC ;

MaterialsStrong = ROC(materials,lb) > IndexROC ;

IndustrialsStrong = ROC(industrials,lb) > IndexROC ;

ConsDiscretionaryStrong = ROC(ConsDiscretionary,lb) > IndexROC ;

ConsStaplesStrong = ROC(ConsStaples,lb) > IndexROC ;

HealthCareStrong = ROC(HealthCare,lb) > IndexROC ;

FinancialsStrong = ROC(Financials,lb) > IndexROC ;


InfoTechStrong = ROC(InfoTech,lb) > IndexROC ;

TeleComStrong = ROC(TeleCom,lb) > IndexROC ;

UtilitiesStrong = ROC(Utilities,lb) > IndexROC ;

StrongSector =
IIf(InGics("10"),EnergyStrong,IIf(InGics("15"),MaterialsStrong,IIf(InGics("20"),IndustrialsStrong,

IIf(InGics("25"),ConsDiscretionaryStrong,IIf(InGics("30"),ConsStaplesStrong,IIf(InGics("35"),HealthCar
eStrong,

IIf(InGics("40") OR
InIcb("8000"),FinancialsStrong,IIf(InGics("45"),InfoTechStrong,IIf(InGics("50"),TelecomStrong,

IIf(InGics("55"),UtilitiesStrong,0))))))))));

AddTextColumn(SectorID(1),"Sector",1.2,colorDefault,IIf(strongsector,colorLime,colorDefault));

STSetupE =

WriteIf(setupOSIB,"OSIB",

WriteIf(setupBTDR,"BTDR",

WriteIf(setupNHGD,"NHGD",

WriteIf(mrsetupFP,"MRSFP",

WriteIf(ref(setupOSIB,-1) AND H < Ref(H,-1),"OSIB-1",

WriteIf(Ref(setupBTDR,-1) AND H < Ref(H,-1),"BTDR-1",

WriteIf(Ref(setupNHGD,-1) AND H < Ref(H,-1),"NHGD-1",

WriteIf(Ref(mrsetupFP,-1) AND H < Ref(H,-1),"MRSFP-1",""))))))));

PrevPat = WriteIf(Ref(CNLDD,-1),"PrevCNLDD",

WriteIf(Ref(MASnapBAckPR,-1),"PrevMASnapBackPR",

WriteIf(Ref(CumLowIBS,-1),"PrevCumLowIBS",
WriteIf(Ref(NHPB,-1),"PrevNHPB",

WriteIf(Ref(DayWeekRSI,-1),"PrevDayWeekRSI","")))));

ERMASU = WriteIf(ERMAslopeUp,"YES","NO");

AddColumn(LBRMDD,"Return/DD",1.2,colorDefault,IIf(LBRMDD > 1,colorLime,colorDefault));

//AddColumn(GPR,"GPR",1.2,colorDefault,IIf(GPR > 1,colorLime,colorDefault));

//
AddTextColumn(ERMASU,"ERMASlopeUp",1.2,colorDefault,IIf(ERMASlopeUp,colorLime,colorDefault
));

Disc = MRSetupFP OR setuposib OR setupbtdr OR setupnhgd

OR (ref(setupOSIB,-1) AND H < Ref(H,-1))

OR (Ref(setupBTDR,-1) AND H < Ref(H,-1))

OR (Ref(setupNHGD,-1) AND H < Ref(H,-1))

OR (Ref(mrsetupFP,-1) AND H < Ref(H,-1));

Col = IIf(Disc,colorLime,colordefault);

AddTextColumn(STSetupE,"Setup",1.2,colorDefault,col);

AddTextColumn(PrevPat,"PrevMRPattern",1.2);

P = 504;//Param("Param",21,1,252,1);

ATRP = ATR(21)/c * 100;

VeryVolatile = ATRP >= (MA(ATRP,p) + 3*StDev(ATRP,p));


Volatile = ATRP >= (MA(ATRP,p) + 1*StDev(ATRP,p)) AND ATRP < (MA(ATRP,p) + 3*StDev(ATRP,p));

normal = ATRP < (MA(ATRP,p) + 1*StDev(ATRP,p)) AND ATRP > (MA(ATRP,p) - 1*StDev(ATRP,p));

Quiet = ATRP <= (MA(ATRP,p) - 1*StDev(ATRP,p));

T2 = WriteIf(VeryVolatile," VeryVolatile",WriteIf(Volatile," Volatile",WriteIf(Normal,"


Normal",WriteIf(Quiet," Quiet",""))));

AddTextColumn(T2,"Volatility",1.2,colorDefault,IIf(veryvolatile,colorRed,IIf(volatile,colorPink,IIf(nor
mal,colorgreen,colorlightBlue))));

//ApproxRRR//

//TenDayHL//

TDH = HHV(H,10);

TDL = LLV(L,10);

//Aprox RiskReward Long//

IPTL = TDH - (0.25 * ATR(5)); ;

EntryL = H + Ref((MA(H-L,10)) * 0.03,-1);

ISLL = LLV(L,5) - Ref((MA(H-L,10))*0.03,-1);

ISLL = Min(ISLL,EntryL-(ATR(5)*1.10));

PossGL = IPTL - EntryL;

PossLL = EntryL - ISLL;

ARRL = PossGL/PossLL;

AddColumn(IIf(Disc,EntryL,0),"EntryStop",1.2,colorDefault,col);

AddColumn(IIf(Disc,ISLL,0),"Initial-StopLoss",1.2,colorDefault,col);
AddColumn(IIf(Disc,TDH,0),"InitialPT",1.2,colorDefault,col);

AddColumn(IIf(Disc,ARRL,0),"R:R",1.2,colorDefault,IIf(ARRL < 1,colorRed,colorGreen));

//PositionSizing//

Ex = ValueWhen(Disc,entryL)*100;

ex2 = round(Ex);

ex3 = ex2/100;

Ex4 = ValueWhen(Disc,ISLL)*100;

ex5 = round(Ex4);

ex6 = ex5/100;

//Change Values in Paramaters//

AccountValue = Param("Account Value",40000,1,10000000,1);

PercRiskPT = param("% Risk Per Trade",0.25,0.25,3,0.25);

RiskPTP = PercRiskPT/100;

RiskPTD = AccountValue * RiskPTP;

MaxSize = 0.3 * AccountValue;

AddColumn(floor(RiskPTD/(ex3 - ex6)),"NumSharesToBuy $"+RiskPTD+" Risk Per Trade");

rsPTcon = floor(Min(floor(RiskPTD/(ex3 - ex6)),MaxSize/entryL));

AddColumn(rsptcon,"NumSharesifMax30%Equity",1.2);

outlay = floor(rsptcon) * entryL;

AddColumn(outlay,"outlay",1.2);

Filter = 1;

You might also like