Open Interest Stochastic Money Flow Index

Noldo · study · 246 行 · 点赞 6,237 · TradingView 原页

本页源码来自 TradingView 公开发布的开源脚本,版权归原作者所有, 请遵循其原始许可(Pine 脚本常见 CC BY-NC-SA / MPL-2.0 / MIT)。 本项目仅用于研究检索与许可范围内的移植。

Pine Script

//@version=4
study("Open Interest Stochastic Money Flow Index")
src=close
reverse = false
lights          = input(title="Barcolor I / 0 ? ", options=["ON", "OFF"], defval="OFF")
 
adaptive        = input(title="Market Type ", options=["FUTURES", "OTHERS"], defval="FUTURES")
 
bFX = false 
 
//***** CFTC MARKET CODES *****
 
// 1 - Futures
 
sCode1 =
 
         syminfo.root == "ZB" ? "020601" :  
         syminfo.root == "ZN" ? "043602" :
         syminfo.root == "ZQ" ? "045601" :
         syminfo.root == "ZT" ? "042601" :
         syminfo.root == "ZS" ? "005602" :
         syminfo.root == "DC" ? "052641" :
         syminfo.root == "GF" ? "061641" :
         syminfo.root == "LBS" ? "058643" :
         syminfo.root == "QG" ? "023655" :
         syminfo.root == "QM" ? "067655" :
         syminfo.root == "SOYBNUSD" ? "005602" :
	     syminfo.root == "ZM" ? "026603" :  
	     syminfo.root == "ZL" ? "007601" :  
	     syminfo.root == "ZC" ? "002602" :  
	     syminfo.root == "CORNUSD" ? "002602" :
	     syminfo.root == "ZW" ? "001602" :  
	     syminfo.root == "WHEATUSD" ? "001602" :
	     syminfo.root == "KE" ? "001612" :  
	     syminfo.root == "HE" ? "054642" :  
	     syminfo.root == "LE" ? "057642" :  
	     syminfo.root == "GC" ? "088691" :  
	     syminfo.root == "XAUUSD" ? "088691" :
	     syminfo.root == "SI" ? "084691" : 
	     syminfo.root == "XAGUSD" ? "084691" :
	     syminfo.root == "HG" ? "085692" :
	     syminfo.root == "XCUUSD" ? "085692" :
	     syminfo.root == "CL" ? "067651" :  
	     syminfo.root == "WTICOUSD" ? "067651" : 
	     syminfo.root == "BCOUSD" ? "06765T" :
	     syminfo.root == "HO" ? "022651" :  
	     syminfo.root == "RB" ? "111659" :  
	     syminfo.root == "NG" ? "023651" :  
	     syminfo.root == "NATGASUSD" ? "023651" :
	     syminfo.root == "A6" ? "232741" :  
	     syminfo.root == "6A" ? "232741" :
	     syminfo.root == "AUDUSD" ? "232741" :
	     syminfo.root == "B6" ? "096742" : 
	     syminfo.root == "6B" ? "096742" : 
	     syminfo.root == "6C" ? "090741" :
	     syminfo.root == "CADUSD" ? "090741" :
	     syminfo.root == "USDCAD" ? "090741" :
	     syminfo.root == "GBPUSD" ? "096742" :
	     syminfo.root == "USDGBP" ? "096742" :
	     syminfo.root == "D6" ? "090741" :  
	     syminfo.root == "CADUSD" ? "090741" :
	     syminfo.root == "6Z" ? "122741" :
	     syminfo.root == "USDZAR" ? "122741" :
	     syminfo.root == "ZARUSD" ? "122741" :
	     syminfo.root == "E6" ? "099741" :
	     syminfo.root == "6E" ? "099741" :
	     syminfo.root == "EURUSD" ? "099741" :
	     syminfo.root == "J6" ? "097741" :  
	     syminfo.root == "6J" ? "097741" : 
	     syminfo.root == "JPYUSD" ? "097741" :
	     syminfo.root == "USDJPY" ? "097741" :
	     syminfo.root == "S6" ? "092741" : 
	     syminfo.root == "6S" ? "092741" : 
	     syminfo.root == "USDCHF" ? "092741" : 
	     syminfo.root == "CHFUSD" ? "092741" :
	     syminfo.root == "SB" ? "080732" :  
	     syminfo.root == "SUGARUSD" ? "080732" :
	     syminfo.root == "KC" ? "083731" :  
	     syminfo.root == "CC" ? "073732" :  
	     syminfo.root == "6N" ? "112741" : 
	     syminfo.root == "6S" ? "092741" : 
	     syminfo.root == "CT" ? "033661" :  
	     syminfo.root == "ES" ? "13874A" :  
	     syminfo.root == "SPX500USD" ? "13874A" : 
	     syminfo.root == "RTY" ? "239742" : 
	     syminfo.root == "YM" ? "12460P" :  
	     syminfo.root == "NQ" ? "209742" : 
	     syminfo.root == "NAS100USD" ? "209742" :
	     syminfo.root == "PA" ? "075651" : 
	     syminfo.root == "XPDUSD" ? "075651" :
	     syminfo.root == "PL" ? "076651" : 
	     syminfo.root == "XPTUSD" ? "076651" : 
	     syminfo.root == "VX" ? "1170E1" :
	     syminfo.root == "M6" ? "095741" :
	     syminfo.root == "6M" ? "095741" :
	     syminfo.root == "USDMXN" ? "095741" :
	     syminfo.root == "MXNUSD" ? "095741" :
	     syminfo.root == "BTCUSD" ? "133741" :
	     syminfo.root == "BTCUSDT" ? "133741" :
	     syminfo.root == "XBTUSD" ? "133741" :
         ""
  
 
 
// Futures Open Interest 
  
quandl_futures_oi = "QUANDL:CFTC/" + sCode1 + "_F_L_ALL"
 
_oi_futures       = security (quandl_futures_oi + "|0", "W", close)
 
_vol_others       = volume
 
 
// Switchable Weiss Wave Open Interest (Futures) / Weiss Wave Volume (Others)
 
float _switchable = na
 
if (adaptive=="FUTURES")
 
    _switchable:=  _oi_futures
    
if (adaptive=="OTHERS")
 
    _switchable:=  volume
    
 
// Open Interest Money Flow Index (OIMFI)
 
 
// Essential Functions : 
 
f_ema(_src, _length)=>
    _length_adjusted = _length < 1 ? 1 : _length
    _multiplier = 2 / (_length_adjusted + 1)
    _return  = 0.00
    _return := na(_return[1]) ? _src : ((_src - _return[1]) * _multiplier) + _return[1]
 
 
f_sum(_src , _length) => 
 
    _output  = 0.00 
    
    _length_adjusted = _length < 1 ? 1 : _length
    
    for i = 0 to _length_adjusted-1
        _output := _output + _src[i]
 
 
// FUNCTION HIGHEST AND LOWEST  ( All Efforts goes to RicardoSantos )
 
f_highest(_src, _length)=>
    _adjusted_length = _length < 1 ? 1 : _length
    _value = _src
    for _i = 0 to (_adjusted_length-1)
        _value := _src[_i] >= _value ? _src[_i] : _value
    _return = _value
 
f_lowest(_src, _length)=>
    _adjusted_length = _length < 1 ? 1 : _length
    _value = _src
    for _i = 0 to (_adjusted_length-1)
        _value := _src[_i] <= _value ? _src[_i] : _value
    _return = _value
 
 
t_mfi = input(14 , type = input.integer , title = "MFI Period") // You can use non integer or mutable variables too !!
 
OverSold   = input(20 , type = input.integer , title = "Oversold")   // You can use non integer or mutable variables too !!
OverBought = input(80 , type = input.integer , title = "Overbought") // You can use non integer or mutable variables too !!
 
zero = 0 
hundred = 100
 
limit = 50
 
 
upper_s = f_sum(_switchable * (change(src) <= 0 ? 0 : src), t_mfi)
lower_s = f_sum(_switchable * (change(src) >= 0 ? 0 : src), t_mfi)
 
 
_mfi = rsi(upper_s, lower_s)
 
// Open Interest Stochastic Money Flow Index 
 
lengthMFI   = 14 
lengthStoch = 14 
 
smoothK = lengthMFI/3            
smoothD = lengthStoch/3          
 
 
f_stoch(_src , _length) => 
 
    100 * (_src - f_lowest(f_lowest(_src ,1), _length)) / (f_highest(f_highest(_src , 1), _length) - f_lowest(f_lowest(_src ,1), _length))
 
 
// Definition : Variables K3 and D
 
k3 = f_ema(f_stoch(_mfi, lengthStoch), smoothK)
d = f_ema(k3, smoothD)
 
pos_moment = crossover(k3,d)
neg_moment = crossunder(k3,d) 
 
col_bg = pos_moment ? color.teal : neg_moment ? color.maroon : na
 
 
// Plot data
 
h1 = hline(OverSold,  color=#C0C0C0 , title = "Oversold Level")
h2 = hline(OverBought,color=#C0C0C0 , title = "Overbought Level")
plot(k3, color=#0070FF     , title="K-line" , linewidth = 1,transp = 0)
plot(d,  color=#FF8C00  , title="D-line",linewidth=1,transp = 0)
fill(h1, h2, color=#66023C , transp=90, title="Border")
bgcolor(col_bg , transp = 58 , title = "Background Color")
plot(pos_moment ? zero :na, style=plot.style_cross, color=color.green , linewidth=3, transp=0 ,title = "Crossover")
plot(neg_moment ? zero :na, style=plot.style_cross, color=color.red   , linewidth=3, transp=0 ,title = "Crossunder")
 
// Barcolor (All efforts goes to Hpotter)
 
pos =	iff(k3 > d , 1,-1) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))
 
 
// Switchable Barcolor Preference 
 
_lights = 0.00 
if (lights=="ON")
 
    _lights:= 1.00
    
if (lights=="OFF")
 
    _lights:= -1.00   
 
 
bcolor_on  = _lights ==  1.00
bcolor_off = _lights == -1.00
 
barcolor(possig == -1 and bcolor_on ? color.red: possig == 1 and bcolor_on ? color.green : na )
 
// Alerts 
 
alertcondition(possig ==1 , title='Buy Signal', message='Buy Signal ')
alertcondition(possig ==-1, title='Sell Signal', message='Sell Signal ')

← 返回列表