ShirokiHeishi

Herrick Payoff Index

650 0 29
All credit goes to @Greeny and @shardison for the work they did on this beautiful indicator. I have made some minor modifications, but the whole of the code is not mine.
Remove from Favorite Scripts Add to Favorite Scripts
////////////////////////////////////////////////////////////
//  Copyright by shardison v1.0 08/05/2015
// Credit to GREENY for his work on the COT OPEN INTEREST SCRIPT
// Attention:
//The Herrick Payoff Index (HPI) was developed by John Herrick and is the only well known indicator that uses price, volume, and open interest.
// The Herrick Payoff Index is designed to show the amount of money flowing into or out of a futures contract. 
//The Index uses open interest during its calculations, therefore, the security being analyzed must contain open interest.
//NOTE: THE COT OPEN INTEREST SCRIPT ONLY pulls Weekly DATA, hence only utilize this script on Weekly bars.
//Interpretation
//
//When the Herrick Payoff Index is above zero, it shows that money is flowing into the futures contract (which is bullish). 
//When the Index is below zero, it shows that money is flowing out of the futures contract (which is bearish).
//
//The interpretation of the Herrick Payoff Index involves looking for divergences between the Index and prices.
////////////////////////////////////////////////////////////

study(title="Herrick Payoff Index", shorttitle="HPI")
//color Hexidecimal
magenta = #FF00BF
indianred = #FF6A6A
orangered = #FF4500
salmon = #FA8072
hotpink = #FF69B4
coral = #FF7F50
mistyrose = #FFE4E1
//green
lawngreen = #7CFC00
greenyellow = #ADFF2F
mintgreen = #00FF40
palegreen = #98FB98
seagreen = #54FF9F
springgreen = #00FF7F
//blue
cyan = #00FFFF
dodgerblue = #1E90FF
paleblue = #24FFBE
powderblue = #B0E0E6
slategray = #C6E2FF
//yellow
gold = #FFD700
beige= #F0e68C
valueofonecentmove = input(100, minval=1)
multiplyingfactor = input(10, minval=1)
wmaperiod = input(21, minval=1)
force_root = input("", title="Override Product")
is_includeoptions = input(false, type=bool, title="Include Options")
view    = input(1, title="HPI =1 Open Interest=2 COT=3 ALL=4 Commercials histogram=5", maxval=5,minval=1)
threshold   = input(0,type=float)
sig     = input(7, title="signal")
fxroot =
	  ticker == "USDCAD" ? "CD" : 
	  ticker == "USDCAD" ? "CD" : 
	  ticker == "USDCHF" ? "SF" : 
	  ticker == "USDCZK" ? "CZ" : 
	  ticker == "USDHUF" ? "FR" : 
	  ticker == "USDILS" ? "IS" : 
	  ticker == "USDJPY" ? "JY" : 
	  ticker == "USDMXN" ? "MP" : 
	  ticker == "USDNOK" ? "UN" : 
	  ticker == "USDPLN" ? "PZ" : 
	  ticker == "USDRUB" ? "RU" : 
	  ticker == "USDSEK" ? "SE" : 
	  ticker == "USDZAR" ? "RA" : 
	  ticker == "EURUSD" ? "EC" : 
	  ticker == "AUDUSD" ? "AD" : 
	  ticker == "GBPUSD" ? "BP" : 
	  ticker == "NZDUSD" ? "NE" : 
	  ticker == "BRLUSD" ? "BR" : 
	  ticker == "XAUUSD" ? "GC" :
	  ticker == "XAGUSD" ? "SI" :
	  ticker == "USOIL"  ? "CL" :
	  ticker == "SPX500" ? "ES" :
	  ticker == "NAS100" ? "ND" :
	  ticker == "QQQ"    ? "ND" :
	  ticker == "IAU"    ? "GC" :
	  ticker == "SLV"    ? "SI" :
	  ""

is_inversed = 
	  ticker == "USDCAD" ? true : 
	  ticker == "USDCAD" ? true : 
	  ticker == "USDCHF" ? true : 
	  ticker == "USDCZK" ? true : 
	  ticker == "USDHUF" ? true : 
	  ticker == "USDILS" ? true : 
	  ticker == "USDJPY" ? true : 
	  ticker == "USDMXN" ? true : 
	  ticker == "USDNOK" ? true : 
	  ticker == "USDPLN" ? true : 
	  ticker == "USDRUB" ? true : 
	  ticker == "USDSEK" ? true : 
	  ticker == "USDZAR" ? true : 
	  false

root = force_root == "" ? fxroot == "" ? syminfo.root : fxroot : force_root
code = root + (is_includeoptions ? "_FO" : "_F") + "_L_ALL"

oi = security("QUANDL:CFTC/"+code+"|0", "D", close)

commercial_long_total = security("QUANDL:CFTC/"+code+"|4", "W", close)
commercial_short_total = security("QUANDL:CFTC/"+code+"|5", "W", close)
long_total = security("QUANDL:CFTC/"+code+"|1", "W", close)
short_total = security("QUANDL:CFTC/"+code+"|2", "W", close)

commercial_long = is_inversed ? commercial_short_total : commercial_long_total
commercial_short = is_inversed ? commercial_long_total : commercial_short_total
long = is_inversed ? short_total : long_total
short = is_inversed ? long_total : short_total

diff = (commercial_long - commercial_short)*-1
cdiff = diff - diff[1]
cI = abs(cdiff)
cG = max(diff, diff[1])
diff2 = long - short
openinterestdiff = oi - oi[1]
I = abs(openinterestdiff)
G = max(oi, oi[1])
S = multiplyingfactor
C = valueofonecentmove
V = volume
M = (high + low) / 2
My = M[1]
K1 = (C*V*(M - My))*(1 + ((2 * I)/(G)))
K2 = (C*V*(M - My))*(1 - ((2 * I)/(G)))
K = M > My ? K1 : K2
Ky = K[1]
HPI = ((Ky +(K - Ky)) * S)/100000
HPI_Index = 100 * (HPI - lowest(HPI,100))/(highest(HPI,100) - lowest(HPI,100))
wma = wma(HPI, wmaperiod)
diffh   = highest(diff,wmaperiod)
diffl   = lowest(diff,wmaperiod)
calch   = diffh>0? diffh-(.1*diffh):diffh+(.1*diffh)
calcl   = diffl<0? diffl-(.1*diffl):diffl+(.1*diffl)
// plot (view?na:HPI, color=green, title="HPI",transp=0)
// plot (view?na:HPI_Index, color=aqua, transp=0, title="HPI Index-Turn off all others")
plot (view==1 or view==4?wma:na, color=wma>=0?dodgerblue:salmon, title="HPI Weighted Moving Average", style=histogram,transp=40,linewidth=4)
// plot(view?ema(wma,sig):na, color=maroon, transp=0, linewidth=2)
plot (view==3 or view==4?diff:na, color=white,linewidth=2,transp=0, title="Commercials Net-Position")
plot (view==3? ema(diff,sig):na, color=maroon,linewidth=2,transp=0, title="EMA Commercials net position")
// plot (view==3 or view==4?diff2:na, color=teal, linewidth=2, transp=0,title="Non-Commercials Net-Position")
plot (view==2 or view==4?oi:na, color = #2f4f4f,transp=0, title="OI")
// plot (view==1?0:na, color=#2f4f4f, title="Zero",transp=0)
// plot (view==3?threshold:na, color=#2f4f4f, transp=0)
plot (view==3?calch:na, color=#2f4f4f,transp=0)
plot (view==3?calcl:na, color=#2f4f4f,transp=0)
plot (view==5?diff:na, color=diff>0 and diff>diff[1]?lime:diff>0 and diff<diff[1]?red:diff<0 and diff<diff[1]?lime:red,transp=0, linewidth=3,style=histogram)
United States
United Kingdom
India
España
France
Italia
Polska
Brasil
Россия
Türkiye
Indonesia
日本
한국
Home Stock Screener Forex Signal Finder Economic Calendar How It Works Chart Features House Rules Moderators For the WEB Widgets Stock Charting Library Priority Support Feature Request Blog & News FAQ Help & Wiki Twitter
Private Messages Chat Ideas Published Followers Following Priority Support Public Profile Profile Settings Account and Billing Sign Out