ChopStockTrader 5 posts msg #103926 - Ignore ChopStockTrader |
12/21/2011 9:44:13 PM
I am trying to write a daily point range screen along the lines of...
set{ Range , high - low}
add column Range
if price is between 5 and 19.99 show stock with Range above 1
if price is between 20 and 39.99 show stock with Range above 1.5
if price is between 40 and 59.99 show stock with Range above 2
if price is between 60 and 79.99 show stock with Range above 3
if price is between 80 and 99.99 show stock with Range above 4
if price is above 100 show stock with Range above 5
and shares outstanding is below 250
exchange is nasdaq
volume above 500000
of course the logic doesnt work on this because as soon as you write the 2nd if statement all stocks are eliminated. I could write 6 different screens with each if statement, but I was trying to come up with a screen where this would all display on one screen.
Thanks
Chop
|
four 5,087 posts msg #103927 - Ignore four modified |
12/21/2011 10:17:40 PM
|
ChopStockTrader 5 posts msg #103935 - Ignore ChopStockTrader |
12/22/2011 8:52:26 AM
/*Using first :if price is between 5 and 19.99 show stock with Range above 1*/
/*CLOSE BETWEEN 5 AND 19.99 THEN 1 OTHERWISE 0 */
add column separator
SET{X, COUNT(CLOSE BETWEEN 5 AND 19.99,1)}
ADD COLUMN X
/* DAY POINT RANGE > 1 THEN 1 OTHERWISE 0 */
SET{XX, COUNT(day point range > 1,1) }
ADD COLUMN XX
SET{z, X + XX}
ADD COLUMN z
add column separator
/*Using second: if price is between 20 and 39.99 show stock with Range above 1.5*/
/* CLOSE BETWEEN 20 AND 39.99 THEN 1 OTHERWISE 0 */
SET{X1, COUNT(CLOSE BETWEEN 20 AND 39.99,1)}
ADD COLUMN X1
/* DAY POINT RANGE > 1.5 THEN 1 OTHERWISE 0 */
SET{XX1, COUNT(day point range > 1.5,1) }
ADD COLUMN XX1
SET{z1, X1 + XX1}
ADD COLUMN z1
add column separator
/*Using third: if price is between 40 and 59.99 show stock with Range above 2*/
/* CLOSE BETWEEN 40 AND 59.99 THEN 1 OTHERWISE 0 */
SET{X2, COUNT(CLOSE BETWEEN 40 AND 59.99,1)}
ADD COLUMN X2
/* DAY POINT RANGE > 2 THEN 1 OTHERWISE 0 */
SET{XX2, COUNT(day point range > 2,1) }
ADD COLUMN XX2
SET{z2, X2 + XX2}
ADD COLUMN z2
add column separator
/*Using fourth: if price is between 60 and 79.99 show stock with Range above 3*/
/* CLOSE BETWEEN 60 AND 79.99 THEN 1 OTHERWISE 0 */
SET{X3, COUNT(CLOSE BETWEEN 60 AND 79.99,1)}
ADD COLUMN X3
/* DAY POINT RANGE > 3 THEN 1 OTHERWISE 0 */
SET{XX3, COUNT(day point range > 3,1) }
ADD COLUMN XX3
SET{z3, X3 + XX3}
ADD COLUMN z3
add column separator
/*Using fifth: if price is between 80 and 99.99 show stock with Range above 4*/
/* CLOSE BETWEEN 80 AND 99.99 THEN 1 OTHERWISE 0 */
SET{X4, COUNT(CLOSE BETWEEN 80 AND 99.99,1)}
ADD COLUMN X4
/* DAY POINT RANGE > 4 THEN 1 OTHERWISE 0 */
SET{XX4, COUNT(day point range > 4,1) }
ADD COLUMN XX4
SET{z4, X4 + XX4}
ADD COLUMN z4
add column separator
/*Using fsixth: if price is above 100 show stock with Range above 5*/
/* CLOSE ABOVE 100 THEN 1 OTHERWISE 0 */
SET{X5, COUNT(CLOSE ABOVE 100,1)}
ADD COLUMN X5
/* DAY POINT RANGE > 5 THEN 1 OTHERWISE 0 */
SET{XX5, COUNT(day point range > 5,1) }
ADD COLUMN XX5
SET{z5, X5 + XX5}
ADD COLUMN z5
add column separator
ADD COLUMN SHARES OUTSTANDING
ADD COLUMN DAY POINT RANGE
shares outstanding is below 250
exchange is nasdaq
volume above 500000
Thanks Four...its a start. I like to find pre-market action on recent rangers, not just gaps and something like this becomes really useful. I got a few too many hits to scan (in the 60s) in the morning so I will have to refine the ranges a bit.
I am assuming there is a way to only display stocks where the z's = 2.
-Chop
|
JinNJ46 22 posts msg #103941 - Ignore JinNJ46 |
12/22/2011 10:36:57 AM
A filter like this is very more easily accomdated in Excel and or Access. I've found that sometimes it's best to give up with SF limitations and use it when it's strengths can be exploited. Another reason is the lack of "on demand" filtering and/or backtesting. Everyone would like to "hit the refresh key" and have all the filters run, data scrubbed, and entry candidates clearly presented with supporting analysis.
SF filters can feed Excel/VBA/Access analysis and vice versa. This is the best approach sometimes especailly with EOD analysis.
|
four 5,087 posts msg #103958 - Ignore four modified |
12/22/2011 4:26:25 PM
I am assuming there is a way to only display stocks where the z's = 2.
-Chop
---------------------------------------------
use...
z equals 2
|
JinNJ46 22 posts msg #103987 - Ignore JinNJ46 modified |
12/24/2011 10:15:46 AM
Hi,
Tried to simplify things. Spot check shows it works but you never know with my code! Only checked the first 3 price ranges. Many thanks and Happy Holidays to all!
Fetcher[
set {Range, high - low}
set {NetChange, close is above close 1 day ago}
set {PBa, count( price is between 5 and 19.99,1)} /PB - Price Bucket*/
set {PBb, count( price is between 20 and 39.99, 1)}
set {PBc, count( price is between 40 and 59.99, 1)}
set {HLa, count(Range is above 1, 1)} /* HL - High, Low requirements */
set {HLb, count(Range is above 1.5, 1)}
set {HLc, count(Range is above 2, 1)}
set {Canda, PBa + HLa} /* Are both conditions met */
set {Candb, PBb + HLb}
set {Candc, PBc + HLc}
set {Conda, count(Canda is equal to 2, 1)} /* Test both conditions to be true */
set {Condb, count(Candb is equal to 2, 1)}
set {Condc, count(Candc is equal to 2, 1)}
set {Condd, Conda + Condb} /* Boolean OR logic; only one can be true becasue of the mutual exclusity of the Price Buckets */
set {GotALiveOne!, Condd + Condc}
show where NetChange is above 0
and GotALiveOne! is equal to 1
and shares outstanding is below 250
and exchange is nasdaq
volume above 500000
add column Range
]
|