Hello guys,
I use a simple Engulfing Pattern screener on a M15 chart on all Nasdaq stocks. Now I want to use a volume and price filter and the daily chart should have more than 250 candles.
The following filter is working perfect if I use the screener on a daily timeframe but I am not sure how to apply these filters in a M15 screener. Can somebody help me?
minCapital=10000000
minShares=100000
minPrice=10
conditionCapital=0
if close>minPrice and barindex>250 then
averageCapital=(summation[31](volume*close)-highest[31](volume*close))/30
averageShares=(summation[31](volume)-highest[31](volume))/30
conditionCapital=averageCapital>minCapital and averageShares>minShares
endif
I only want to see stocks which have an average volume of at least $10 million and 100k shares per day in the last 30 days.
I just searched the forum and found this. Would this be correct in my case?
minCapital=10000000
minShares=100000
minPrice=10
conditionCapital=0
timeframe(daily)
if close>minPrice and barindex>250 then
averageCapital=(summation[31](volume*close)-highest[31](volume*close))/30
averageShares=(summation[31](volume)-highest[31](volume))/30
conditionCapital=averageCapital>minCapital and averageShares>minShares
endif
timeframe(default)
if conditionCapital then......
The code is correct, but I fear it won’t work correctly because of the 256-bar limit with IG (even with PRT Premium, 1024 bars are not enough), as in a single day thare are 96 15-minute bars, which yields 24K bars when multiplied by 250 days.
Thank you, I will remove the barindex condition then.
Hello again,
I have another question regarding the same topic. I use an intraday screener and want to check very simple daily criteria but there must be something wrong with my code.
timeframe(daily)
uptrend=close[1]>ExponentialAverage[50](close)[1] and ExponentialAverage[50](close)[1]>ExponentialAverage[100](close)[1]
conditionCapital=(volume[3]+volume[2]+volume[1])/3>=300000 and close>10 and DHigh(1)-DLow(1)>1
filter=uptrend and conditionCapital
timeframe(default)
if filter then
As you can see I want the current price above the EMA50 and the EMA50>EMA100. This is my very simple trend definition. Then I want a minimum average volume of 300k shares in the last 3 days. Price must be >10 USD and the daily price range of yesterday must be > 1 USD.
When I start the screener it doesn’t find anything. Can anyone help me with this? Thank you!
JSParticipant
New
Hi @marie123
You say “I want the current price above the…” but you use “Close[1]” which is yesterday’s Close price…?
The same goes for EMA50 and EMA100, you also use yesterday’s values here…
Why do you use a second time frame (Default)…???
Don’t you mean just the screener below…
TimeFrame(Daily)
EMA50=ExponentialAverage[50](Close)
EMA100=ExponentialAverage[100](Close)
C1=Close>EMA50
C2=EMA50>EMA100
C3=(Volume+Volume[1]+Volume[2])/3 > 300000
C4=Close>10
C5=Range>1
Filter=C1 and C2 and C3 and C4 and C5
Screener[Filter]
Hello JS,
I am sorry, that was a misunderstanding. You are absolutely right. I want yesterday’s close price above yesterday’s EMA50 and yesterday’s EMA50 must be above yesterday’s EMA100. Additionally I want minimum 300k as the average volume of the last 3 days, yesterday’s close above 10 USD and yesterday’s price range must be > 1 USD.
These are only the criteria for the daily timeframe. If they are all met, my intraday M15 screener looks for engulfing patterns. Therefore I use the screener on the M15 timeframe but I need to be sure that the daily criteria are also met. I just don‘t know how exactly I refer to daily criteria in an M15 screener.
JSParticipant
New
Hi @marie123
Is this what you meant…
TimeFrame(Daily)
EMA50=ExponentialAverage[50](Close)
EMA100=ExponentialAverage[100](Close)
C1=Close[1]>EMA50[1]
C2=EMA50[1]>EMA100[1]
C3=(Volume[1]+Volume[2]+Volume[3])/3 > 300000
C4=Close[1]>10
C5=Range[1]>1
Filter=C1 and C2 and C3 and C4 and C5
TimeFrame(Default)
Bearish=Close[1]>Open[1] and Open>Close[1] and Close<Open[1]
Bullish=Close[1]<Open[1] and Open<Close[1] and Close>Open[1]
Screener[Filter and Bearish or Filter and Bullish]
This is exactly what I mean. Your coding style is so „elegant“, I definitely need to learn that style too.
Just one thing: I want to optimize the screener therefore the calculation for the M15 engulfing pattern must only be done if the daily criteria are met. Therefore I used the syntax „if filter then“.
That has the following reason: In the future I won‘t only scan for an engulfing pattern on the M15 but I want to screen for more complex structures like double tops or double bottoms. And it‘s unnecessary work to screen for a complex pattern if the (simple) daily criteria are not fulfilled.
JSParticipant
New
When you use the condition “filter” in the “screener[filter…]” then only the stocks where these conditions are true are selected (here on a daily basis)…
So, the screener does already what you want…
Then I will use it exactly as you coded it.
Thank you very much for your help!