This code snippet demonstrates how to implement a screener using both the Stochastic Oscillator and MACD (Moving Average Convergence Divergence) indicators across multiple timeframes (weekly, daily, 4-hour, and 1-hour) in the ProBuilder language. The screener evaluates whether both indicators are moving upwards, downwards, or are neutral, and assigns a specific code for each scenario and timeframe.
// Constants (can be used throughout TF's with the same name)
Stoc1 = 4 //4
Stoc2 = 4 //4
Stoc3 = 4 //4
Macd1 = 12 //12
Macd2 = 26 //26
Macd3 = 9 //9
// Variables for each timeframe: W = weekly, D = Daily, 4 = 4-hour, 1 = 1-hour
// Weekly Timeframe
TIMEFRAME(Weekly)
StocKW = Stochastic[Stoc1,Stoc2](close)
StocDW = Average[Stoc3](StocKW)
StocUPW = StocKW > StocDW
StocDNW = StocKW < StocDW
MacdValW = MACD[Macd1,Macd2,Macd3](close)
MacdUPW = MacdValW > MacdValW[1]
MacdDNW = MacdValW < MacdValW[1]
IF StocUPW AND MacdUPW THEN
xW = 1000
ELSIF StocDNW AND MacdDNW THEN
xW = 2000
ELSE
xW = 9000
ENDIF
// Daily Timeframe
TIMEFRAME(Daily)
StocKD = Stochastic[Stoc1,Stoc2](close)
StocDD = Average[Stoc3](StocKD)
StocUPD = StocKD > StocDD
StocDND = StocKD < StocDD
MacdValD = MACD[Macd1,Macd2,Macd3](close)
MacdUPD = MacdValD > MacdValD[1]
MacdDND = MacdValD < MacdValD[1]
IF StocUPD AND MacdUPD THEN
xD = 100
ELSIF StocDND AND MacdDND THEN
xD = 200
ELSE
xD = 900
ENDIF
// 4-hour Timeframe
TIMEFRAME(4 hours)
StocK4 = Stochastic[Stoc1,Stoc2](close)
StocD4 = Average[Stoc3](StocK4)
StocUP4 = StocK4 > StocD4
StocDN4 = StocK4 < StocD4
MacdVal4 = MACD[Macd1,Macd2,Macd3](close)
MacdUP4 = MacdVal4 > MacdVal4[1]
MacdDN4 = MacdVal4 < MacdVal4[1]
IF StocUP4 AND MacdUP4 THEN
x4 = 10
ELSIF StocDN4 AND MacdDN4 THEN
x4 = 20
ELSE
x4 = 90
ENDIF
// 1-hour Timeframe
TIMEFRAME(1 hour)
StocK1 = Stochastic[Stoc1,Stoc2](close)
StocD1 = Average[Stoc3](StocK1)
StocUP1 = StocK1 > StocD1
StocDN1 = StocK1 < StocD1
MacdVal1 = MACD[Macd1,Macd2,Macd3](close)
MacdUP1 = MacdVal1 > MacdVal1[1]
MacdDN1 = MacdVal1 < MacdVal1[1]
IF StocUP1 AND MacdUP1 THEN
x1 = 1
ELSIF StocDN1 AND MacdDN1 THEN
x1 = 2
ELSE
x1 = 9
ENDIF
// Combine results from all timeframes
TIMEFRAME(DEFAULT)
Result = xW + xD + x4 + x1
IF Result = 9999 THEN
Result = 0
ENDIF
SCREENER[Result] (Result AS "wd41")
Explanation of the Code:
Check out this related content for more information:
https://www.prorealcode.com/topic/multi-timeframe-screener-needed/#post-85538
Visit Link