//PRC_Genesis Matrix | indicator
//10.09.2018
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
//converted from MT4 indi
// --- settings
//TVI_Settings
TVIr=12
TVIs=12
TVIu=5
//CCI_Settings
CCIPeriod=20
//T3_Settings
T3Period=8
//GannHiLo_Settings
GannHiLoPeriod=10
// --- end of settings
// Set histogram positions
//IDXTVI=0.25
//IDXCCI=0.0
//IDXT3=-0.25
//IDXGHL=-0.5
//TVI (Ticks Volume Indicator)
Mypoint=pointsize
UpTicks=(Volume+(Close-Open)/MyPoint)/2
DownTicks=Volume-UpTicks
EMAUpTicks=average[TVIr,1](UpTicks)
EMADownTicks=average[TVIr,1](DownTicks)
DEMAUpTicks=average[TVIs,1](EMAUpTicks)
DEMADownTicks=average[TVIs,1](EMADownTicks)
TVIcalculate=100.0*(DEMAUpTicks-DEMADownTicks)/(DEMAUpTicks+DEMADownTicks)
TVI=average[TVIu,1](TVIcalculate)
//ProcessTVI
xTVI =0
if TVI>=TVI[1] then
//drawtext("■",barindex,IDXTVI,dialog,bold,20) coloured(0,90,255)
xTVI = 1
else
//drawtext("■",barindex,IDXTVI,dialog,bold,20) coloured(255,0,0)
xTVI = -1
endif
xCCI = 0
//CCI (Commodity Channel Index)
dSig=CCI[CCIPeriod](typicalPrice)
//ProcessCCI
if dSig>0 then
//drawtext("■",barindex,IDXCCI,dialog,bold,20) coloured(0,90,255)
xCCI = 1
else
//drawtext("■",barindex,IDXCCI,dialog,bold,20) coloured(255,0,0)
xCCI = -1
endif
//T3
e1 = ExponentialAverage[T3Period](close)
e2 = ExponentialAverage[T3Period](e1)
e3 = ExponentialAverage[T3Period](e2)
e4 = ExponentialAverage[T3Period](e3)
e5 = ExponentialAverage[T3Period](e4)
e6 = ExponentialAverage[T3Period](e5)
b = 0.618
b2 = (b * b)
b3 = (b * b * b)
c1 = -b3
c2 = (3 * b2) + (3 * b3)
c3 = (-6 * b2) - (3 * b) - (3 * b3)
c4 = 1 + (3 * b) + b3 + (3 * b2)
avg = c1 * e6 + c2 * e5 + c3 * e4 + c4 * e3
xAVG = 0
//ProcessT3
if avg>=avg[1] then
//drawtext("■",barindex,IDXT3,dialog,bold,20) coloured(0,90,255)
xAVG = 1
else
//drawtext("■",barindex,IDXT3,dialog,bold,20) coloured(255,0,0)
xAVG = -1
endif
xGANN = 0
//GannHiLo
if Close>average[gannhiloperiod](high)[1] then
gann=1
elsif Close<average[gannhiloperiod](low)[1] then
gann=-1
endif
//ProcessGann
if gann>0 then
//drawtext("■",barindex,IDXGHL,dialog,bold,20) coloured(0,90,255)
xGANN = 1
else
//drawtext("■",barindex,IDXGHL,dialog,bold,20) coloured(255,0,0)
xGANN = -1
endif
IF BarIndex =0 THEN
Signal = 0
ENDIF
IF (xTVI + xCCI + xAVG + xGANN) = 4 THEN
Signal = 1
ELSIF (xTVI + xCCI + xAVG + xGANN) = -4 THEN
Signal = -1
ENDIF
SCREENER [Signal <> Signal[1]]
//return Signal <> Signal[1] AS "Signal"