CanOz
Home runs feel good, but base hits pay bills!
- Joined
- 11 July 2006
- Posts
- 11,543
- Reactions
- 519
Dan was looking for ideas for scans a while back. I found an old Pull Back Scan that i got somewhere...
I then combined it visually with an ADX and Simple Momentum Indicators and presto, you have a nice little scan.
What i do is scan first, then transfer a portion to a watch-list.
Then eyeball them, but using the ADX and the momentum indicator. Then i look for patterns in stocks with strong trends.
Hope this helps anyone looking for a simple way to scan. Those with coding skills might want to scan for the whole thing at one time. I actually like eyeballing charts, its quite exciting to look through lots of charts with the view of finding opportunities.
CanOz
IT might be nice for others to post some scanning ideas here...
I then combined it visually with an ADX and Simple Momentum Indicators and presto, you have a nice little scan.
What i do is scan first, then transfer a portion to a watch-list.
Then eyeball them, but using the ADX and the momentum indicator. Then i look for patterns in stocks with strong trends.
Hope this helps anyone looking for a simple way to scan. Those with coding skills might want to scan for the whole thing at one time. I actually like eyeballing charts, its quite exciting to look through lots of charts with the view of finding opportunities.
CanOz
Code:
//======================= Variables ==================================================================================================================
// PullBack Parameters
DLL1 = Ref(H,-1) > Ref(HHV(H,20),-2) AND H < Ref(H,-1);
DLL2 = Ref(H,-2) > Ref(HHV(H,20),-3) AND H < Ref(H,-2);
DLL3 = Ref(H,-3) > Ref(HHV(H,20),-4) AND H < Ref(H,-3);
DLL4 = Ref(H,-4) > Ref(HHV(H,20),-5) AND H < Ref(H,-4);
DLL5 = Ref(H,-5) > Ref(HHV(H,20),-6) AND H < Ref(H,-5);
DLL6 = Ref(H,-6) > Ref(HHV(H,20),-7) AND H < Ref(H,-6);
DLL7 = Ref(H,-7) > Ref(HHV(H,20),-8) AND H < Ref(H,-7);
DLL8 = Ref(H,-8) > Ref(HHV(H,20),-9) AND H < Ref(H,-8);
DLL= H < Ref(HHV(H,20),-1);
DLS1 = Ref(L,-1) < Ref(LLV(L,20),-2) AND L > Ref(L,-1);
DLS2 = Ref(L,-2) < Ref(LLV(L,20),-3) AND L > Ref(L,-2);
DLS3 = Ref(L,-3) < Ref(LLV(L,20),-4) AND L > Ref(L,-3);
DLS4 = Ref(L,-4) < Ref(LLV(L,20),-5) AND L > Ref(L,-4);
DLS5 = Ref(L,-5) < Ref(LLV(L,20),-6) AND L > Ref(L,-5);
DLS6 = Ref(L,-6) < Ref(LLV(L,20),-7) AND L > Ref(L,-6);
DLS7 = Ref(L,-7) < Ref(LLV(L,20),-8) AND L > Ref(L,-7);
DLS8 = Ref(L,-8) < Ref(LLV(L,20),-9) AND L > Ref(L,-8);
DLS = L > Ref(LLV(L,20),-1);
// Price and Volume
PVFilter = (C>15) AND Ref(MA(V,50),-1)>100000;
// Dave Landry PullBack Scan
DLPBS = ((DLL AND (DLL1 OR DLL2 OR DLL3 OR DLL4 OR DLL5 OR DLL6 OR DLL7 OR DLL8)) OR (DLS AND (DLS1 OR DLS2 OR DLS3 OR DLS4 OR DLS5 OR DLS6 OR DLS7 OR DLS8))) AND PVFilter;
// Moving Average Proper Order
MAProperOrder = (MA(C,10) > EMA(C,20) AND EMA(C,20) > EMA(C,30)) OR (MA(C,10) < EMA(C,20) AND EMA(C,20) < EMA(C,30));
// How far the stock has moved in the past month (preferable at least 10 pts in the past 20 days)
TenTwentyFilter = HHV(H,20)-LLV(L,20);
// 50 Day Historical Volatility
FiftyDayHVFilter = round(StDev(log(C/Ref(C,-1)),50)*100*sqrt(256));
// 6/100 Historical Volatility
HVSixOneHundred = (StDev(log(C/Ref(C,-1)),6)*100*sqrt(256)) / (StDev(log(C/Ref(C,-1)),100)*100*sqrt(256));
//=================== End Variables =================================================================================================================
//=================== Columns =======================================================================================================================
NumColumns = 6;
Column0 = FullName();
Column0Name = "Ticker name";
Column1 = DLL AND (DLL1 OR DLL2 OR DLL3 OR DLL4 OR DLL5 OR DLL6 OR DLL7 OR DLL8);
Column1Name = "Buy Signal";
Column2 = DLS AND (DLS1 OR DLS2 OR DLS3 OR DLS4 OR DLS5 OR DLS6 OR DLS7 OR DLS8);
Column2Name = "Sell Signal";
Column3 = HVSixOneHundred;
Column3Name = "HV6/100 Value";
Column4 = FiftyDayHVFilter;
Column4Name ="HV50 Value";
Column5 = TenTwentyFilter;
Column5Name = "10/20 Value";
AddTextColumn( IndustryID(1), "Industry" );
AddTextColumn( MarketID(1), "Market" );
//==================== End Columns ===================================================================================================================
//==================== Filter and Buy/Sell criteria ==================================================================================================
// Filter based on 20 day hi/lo pullback, price and volume criteria.
Filter = DLPBS; // Delete this line and use the next line if you desire the moving averages to be scanned in "proper order".
//Filter = DLPBS AND MAProperOrder;
Buy = Column1;
Sell = Column2;
//==================== End Filter and Buy/Sell criteria =============================================================================================
//======================= Chart Layout ==============================================================================================================
// OHLC bar graph with headings
_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", colorYellow ), styleBar | ParamStyle("Style") | GetPriceStyle() );
_SECTION_END();
// 20 period linear regression line
x = Cum(1); //
lastx = LastValue( x ); Daysback = 20; aa = LastValue( LinRegIntercept( Close, Daysback) );
bb = LastValue( LinRegSlope( Close, Daysback ) );
y = Aa + bb * ( x - (Lastx - DaysBack) );
Plot( IIf( x >= (lastx - Daysback), y, -1e10 ), "LinReg", colorCustom11 );
PlotForeign(GetBaseIndex(),IndustryID(1),colorWhite,styleLine|styleLeftAxisScale);
// 10 period SMA
_SECTION_BEGIN("MA");
P = ParamField("Price field",-1);
Periods = Param("Periods",10 );
Plot( MA( P, Periods ), _DEFAULT_NAME(), ParamColor( "Color", colorBlue ), ParamStyle("Style") );
_SECTION_END();
// 20 period EMA
_SECTION_BEGIN("EMA");
P = ParamField("Price field",-1);
Periods = Param("Periods", 20 );
Plot( EMA( P, Periods ), _DEFAULT_NAME(), ParamColor( "Color", colorRed ), ParamStyle("Style") );
_SECTION_END();
// 30 period EMA
_SECTION_BEGIN("EMA1");
P = ParamField("Price field",-1);
Periods = Param("Periods", 30);
Plot( EMA( P, Periods ), _DEFAULT_NAME(), ParamColor( "Color", colorCustom12 ), ParamStyle("Style") );
_SECTION_END();
// Add the 10-20 filter, 50 Day HV and 6/100 Day HV as a different screen, just cut and paste each one to a separate Formula Editor Sceen and save them under
// Custom Indicators...then drop them into the main screen.
// 10-20 filter
// _SECTION_BEGIN("TenTwentyValue");
// TenTwentyValue = HHV(H,20)-LLV(L,20);
// Plot(TenTwentyValue,"10/20 Value",colorCustom11,styleLine);
// _SECTION_END();
// 50 day historical volotility
// _SECTION_BEGIN("HV50");
// HV50 = round(StDev(log(C/Ref(C,-1)),50)*100*sqrt(256));
// Plot(HV50,"HV50",colorBrightGreen,styleLine);
// _SECTION_END();
// 6/100 day historical volotility
// _SECTION_BEGIN("HVSixOneHundred");
// HVSixOneHundred = (StDev(log(C/Ref(C,-1)),6)*100*sqrt(256)) / (StDev(log(C/Ref(C,-1)),100)*100*sqrt(256));
// Plot(HVSixOneHundred,"HV 6/100",colorOrange,styleLine);
// _SECTION_END();
//======================= End Chart Layout ============================================================
IT might be nice for others to post some scanning ideas here...