ShirokiHeishi

Herrick Payoff Index

178
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.
Mã nguồn mở

Với tinh thần TradingView, tác giả của tập lệnh này đã xuất bản nó dưới dạng mã nguồn mở, vì vậy các nhà giao dịch có thể hiểu và xác minh nó. Chúc mừng tác giả! Bạn có thể sử dụng mã này miễn phí, nhưng việc sử dụng lại mã này trong một ấn phẩm chịu sự điều chỉnh của Nội quy nội bộ. Bạn có thể yêu thích nó để sử dụng nó trên biểu đồ.

Thông báo miễn trừ trách nhiệm

Thông tin và ấn phẩm không có nghĩa là và không cấu thành, tài chính, đầu tư, kinh doanh, hoặc các loại lời khuyên hoặc khuyến nghị khác được cung cấp hoặc xác nhận bởi TradingView. Đọc thêm trong Điều khoản sử dụng.

Bạn muốn sử dụng tập lệnh này trên biểu đồ?
////////////////////////////////////////////////////////////
//  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)