需要 pine 脚本选项链作为图表区域中的表格的帮助

问题描述 投票:0回答:1

我有一个用于 BANKNIFTY 和其他指数的 pine 脚本来填充期权链,如图表区域中的表格所示(交易量、vwap、开盘价、收盘价和差价),我想再包含四列用于 前一天收盘价、IV、OI和 OI 的变化。我尝试了很多方法来包含但它不起作用。

有人指导我让它工作吗?

我刚刚得到信息 有人说 TradingView 不提供 OI 和 IV 数据,在这种情况下,有任何其他方法可以使用此表,请指导我。

///////@version=5
indicator( title = "Option Chain" , overlay = true )


Symbol = input.string ( "BANKNIFTY" , title = "Spot Symbol" , options = ["BANKNIFTY","NIFTY","FINNIFTY","MIDCAP"], inline="Symbol" )

// spot =  spot_ == "NSE:BANKNIFTY1!" ? "NSE:BANKNIFTY" : spot_ == "NSE:NIFTY1!" ? "NSE:NIFTY" : spot_ == "NSE:FINNIFTY1!" ? "NSE:FINNIFTY" : spot_ == "NSE:CNXFINANCE" ? "NSE:FINNIFTY" : spot_ == "NSE:MIDCPNIFTY1!" ? "NSE:MIDCPNIFTY" : spot_ == "NSE:CNXMIDCAP" ? "NSE:MIDCPNIFTY" : spot_
spot =  Symbol == "BANKNIFTY" ? "NSE:BANKNIFTY" : Symbol == "NIFTY" ? "NSE:NIFTY" : Symbol == "FINNIFTY" ? "NSE:FINNIFTY" :  "NSE:MIDCPNIFTY" 
lotsize = Symbol == "BANKNIFTY" ? 15 : Symbol == "NIFTY" ? 25 : Symbol == "FINNIFTY" ? 25 : Symbol == "MIDCAP" ? 50 : 50

spot2 =  Symbol == "BANKNIFTY" ? "NSE:BANKNIFTY" : Symbol == "NIFTY" ? "NSE:NIFTY" : Symbol == "FINNIFTY" ? "NSE:FINNIFTY" :  "NSE:MIDCPNIFTY" 
spot_close = request.security( Symbol=="FINNIFTY"?"CNXFINANCE":Symbol=="MIDCAP"?"NIFTY_MID_SELECT":spot , timeframe.period , close ) 

var grpNifty = "Nifty :"
spot_atm_NF = input.int (25800 , title = "Ref -Strike" ,group=grpNifty,inline="NF")
SpotInterval_NF = input.int ( 100 , title = "Interval" , group=grpNifty , inline="NF")
ExpDay_NF = input.string ( "10" , title = "Exp Day", group=grpNifty,inline="NF-2" )
ExpMonth_NF = input.string ( "10" , title = "Mon" , group=grpNifty,inline="NF-2")
ExpYear_NF = input.string ( "24" , title = "Year" , group=grpNifty,inline="NF-2")

grpBankNifty = "BankNifty :"
spot_atm_BNF = input.int ( 53500 , title = "Ref -Strike" ,group=grpBankNifty,inline="BNF")
SpotInterval_BNF = input.int ( 100 , title = "Interval" , group=grpBankNifty , inline="BNF")
ExpDay_BNF = input.string ( "09" , title = "Exp Day", group=grpBankNifty,inline="BNF-2" )
ExpMonth_BNF = input.string ( "10" , title = "Mon" , group=grpBankNifty,inline="BNF-2")
ExpYear_BNF = input.string ( "24" , title = "Year" , group=grpBankNifty,inline="BNF-2")

grpFinNifty = "FinNfity :"
spot_atm_FNF = input.int ( 23500 , title = "Ref -Strike" ,group=grpFinNifty,inline="FNF")
SpotInterval_FNF = input.int ( 100 , title = "Interval" , group=grpFinNifty , inline="FNF")
ExpDay_FNF = input.string ( "08" , title = "Exp Day", group=grpFinNifty,inline="FNF-2" )
ExpMonth_FNF = input.string ( "10" , title = "Mon" , group=grpFinNifty,inline="FNF-2")
ExpYear_FNF = input.string ( "24" , title = "Year" , group=grpFinNifty,inline="FNF-2")

grpBankMCP = "MidCPNifty :"
spot_atm_MCP = input.int ( 13000 , title = "Ref -Strike" ,group=grpBankMCP,inline="MCP")
SpotInterval_MCP = input.int ( 25 , title = "Interval" , group=grpBankMCP , inline="MCP")
ExpDay_MCP = input.string ( "07" , title = "Exp Day", group=grpBankMCP,inline="MCP-2" )
ExpMonth_MCP = input.string ( "09" , title = "Mon" , group=grpBankMCP,inline="MCP-2")
ExpYear_MCP = input.string ( "24" , title = "Year" , group=grpBankMCP,inline="MCP-2")

spot_atm = Symbol == "BANKNIFTY" ? spot_atm_BNF : Symbol == "NIFTY" ? spot_atm_NF : Symbol == "FINNIFTY" ? spot_atm_FNF :  spot_atm_MCP
SpotInterval = Symbol == "BANKNIFTY" ? SpotInterval_BNF : Symbol == "NIFTY" ? SpotInterval_NF : Symbol == "FINNIFTY" ? SpotInterval_FNF :  SpotInterval_MCP
ExpDay = Symbol == "BANKNIFTY" ? ExpDay_BNF : Symbol == "NIFTY" ? ExpDay_NF : Symbol == "FINNIFTY" ? ExpDay_FNF :  ExpDay_MCP
ExpMonth = Symbol == "BANKNIFTY" ? ExpMonth_BNF : Symbol == "NIFTY" ? ExpMonth_NF : Symbol == "FINNIFTY" ? ExpMonth_FNF :  ExpMonth_MCP
ExpYear = Symbol == "BANKNIFTY" ? ExpYear_BNF : Symbol == "NIFTY" ? ExpYear_NF : Symbol == "FINNIFTY" ? ExpYear_FNF :  ExpYear_MCP 

dashboard_loc = input.string( "bottom_right" , title = "Dashboard Location" , options = ["top_left", "top_center", "top_right", "middle_left", "middle_center", "middle_right", "bottom_left", "bottom_center", "bottom_right"])
font = input.string ( "Small" , title = "Font Size" , options = [ "Tiny", "Small", "Normal", "Large", "Huge" ]  , group = "Layout" )

//
ATM_color_background = input.color ( color.rgb(241, 255, 48) , title = "ATM Color" , group ="Colors" )
NonATM_color_background = input.color ( color.rgb(241, 255, 48,100) , title = "ATM Color" , group ="Colors",display=display.none )

var table_position = dashboard_loc == 'top_left' ? position.top_left :
  dashboard_loc == 'top_center' ? position.top_center :
  dashboard_loc == 'top_right' ? position.top_right :
  dashboard_loc == 'middle_left' ? position.middle_left :
  dashboard_loc == 'middle_center' ? position.middle_center :
  dashboard_loc == 'middle_right' ? position.middle_right :
  dashboard_loc == 'bottom_left' ? position.bottom_left :
  dashboard_loc == 'bottom_center' ? position.bottom_center : position.bottom_right

font_size = font == "Tiny" ? size.tiny : font == "Small" ? size.small : font == "Normal" ? size.normal : font == "Large" ? size.large : size.huge 
font_size_atm = font == "Tiny" ? size.small : font == "Small" ? size.normal : font == "Normal" ? size.large : size.huge 

getdata (instrument ,tf) =>
    [ROpen,RClose,RVolume,RVwap]=request.security(instrument,timeframe = tf,expression=[open,close,((volume)/lotsize),math.round(ta.vwap)],lookahead=barmerge.lookahead_off,ignore_invalid_symbol =true)

isATM (strike) =>
  math.abs(spot_close - strike) == 0  or (math.abs(spot_close - strike) < SpotInterval and math.abs(spot_close - strike) < SpotInterval/2 )


ar_Strike_Values_CE  = array.new_int(0)
//array.push(ar_Strike_Values_CE, getdata(spot+ExpYear+ExpMonth+ExpDay+'C'+ str.tostring( (spot_atm) + (SpotInterval * -5),"D")))

CEsymbol1 = spot+ExpYear+ExpMonth+ExpDay+'C'+ str.tostring( (spot_atm) + (SpotInterval * 5))
CEsymbol2 = spot+ExpYear+ExpMonth+ExpDay+'C'+ str.tostring( (spot_atm) + (SpotInterval * 4))
CEsymbol3 = spot+ExpYear+ExpMonth+ExpDay+'C'+ str.tostring( (spot_atm) + (SpotInterval * 3))
CEsymbol4 = spot+ExpYear+ExpMonth+ExpDay+'C'+ str.tostring( (spot_atm) + (SpotInterval * 2))
CEsymbol5 = spot+ExpYear+ExpMonth+ExpDay+'C'+ str.tostring( (spot_atm) + (SpotInterval * 1))
CEsymbol6 = spot+ExpYear+ExpMonth+ExpDay+'C'+ str.tostring( (spot_atm) + (SpotInterval * 0))
CEsymbol7 = spot+ExpYear+ExpMonth+ExpDay+'C'+ str.tostring( (spot_atm) + (SpotInterval * -1))
CEsymbol8 = spot+ExpYear+ExpMonth+ExpDay+'C'+ str.tostring( (spot_atm) + (SpotInterval * -2))
CEsymbol9 = spot+ExpYear+ExpMonth+ExpDay+'C'+ str.tostring( (spot_atm) + (SpotInterval * -3))
CEsymbol10 = spot+ExpYear+ExpMonth+ExpDay+'C'+ str.tostring( (spot_atm) + (SpotInterval * -4))
CEsymbol11 = spot+ExpYear+ExpMonth+ExpDay+'C'+ str.tostring( (spot_atm) + (SpotInterval * -5))

PEsymbol1 = spot+ExpYear+ExpMonth+ExpDay+'P'+ str.tostring( (spot_atm) + (SpotInterval * 5))
PEsymbol2 = spot+ExpYear+ExpMonth+ExpDay+'P'+ str.tostring( (spot_atm) + (SpotInterval * 4))
PEsymbol3 = spot+ExpYear+ExpMonth+ExpDay+'P'+ str.tostring( (spot_atm) + (SpotInterval * 3))
PEsymbol4 = spot+ExpYear+ExpMonth+ExpDay+'P'+ str.tostring( (spot_atm) + (SpotInterval * 2))
PEsymbol5 = spot+ExpYear+ExpMonth+ExpDay+'P'+ str.tostring( (spot_atm) + (SpotInterval * 1))
PEsymbol6 = spot+ExpYear+ExpMonth+ExpDay+'P'+ str.tostring( (spot_atm) + (SpotInterval * 0))
PEsymbol7 = spot+ExpYear+ExpMonth+ExpDay+'P'+ str.tostring( (spot_atm) + (SpotInterval * -1))
PEsymbol8 = spot+ExpYear+ExpMonth+ExpDay+'P'+ str.tostring( (spot_atm) + (SpotInterval * -2))
PEsymbol9 = spot+ExpYear+ExpMonth+ExpDay+'P'+ str.tostring( (spot_atm) + (SpotInterval * -3))
PEsymbol10 = spot+ExpYear+ExpMonth+ExpDay+'P'+ str.tostring( (spot_atm) + (SpotInterval * -4))
PEsymbol11 = spot+ExpYear+ExpMonth+ExpDay+'P'+ str.tostring( (spot_atm) + (SpotInterval * -5))

[CE1_Open,CE1_CLOSE,CE1_Volume,CE1_Vwap]=getdata(CEsymbol1,"D")
[CE2_Open,CE2_CLOSE,CE2_Volume,CE2_Vwap]=getdata(CEsymbol2,"D")
[CE3_Open,CE3_CLOSE,CE3_Volume,CE3_Vwap]=getdata(CEsymbol3,"D")
[CE4_Open,CE4_CLOSE,CE4_Volume,CE4_Vwap]=getdata(CEsymbol4,"D")
[CE5_Open,CE5_CLOSE,CE5_Volume,CE5_Vwap]=getdata(CEsymbol5,"D")
[CE6_Open,CE6_CLOSE,CE6_Volume,CE6_Vwap]=getdata(CEsymbol6,"D")
[CE7_Open,CE7_CLOSE,CE7_Volume,CE7_Vwap]=getdata(CEsymbol7,"D")
[CE8_Open,CE8_CLOSE,CE8_Volume,CE8_Vwap]=getdata(CEsymbol8,"D")
[CE9_Open,CE9_CLOSE,CE9_Volume,CE9_Vwap]=getdata(CEsymbol9,"D")
[CE10_Open,CE10_CLOSE,CE10_Volume,CE10_Vwap]=getdata(CEsymbol10,"D")
[CE11_Open,CE11_CLOSE,CE11_Volume,CE11_Vwap]=getdata(CEsymbol11,"D")

[PE1_Open,PE1_CLOSE,PE1_Volume,PE1_Vwap]=getdata(PEsymbol1,"D")
[PE2_Open,PE2_CLOSE,PE2_Volume,PE2_Vwap]=getdata(PEsymbol2,"D")
[PE3_Open,PE3_CLOSE,PE3_Volume,PE3_Vwap]=getdata(PEsymbol3,"D")
[PE4_Open,PE4_CLOSE,PE4_Volume,PE4_Vwap]=getdata(PEsymbol4,"D")
[PE5_Open,PE5_CLOSE,PE5_Volume,PE5_Vwap]=getdata(PEsymbol5,"D")
[PE6_Open,PE6_CLOSE,PE6_Volume,PE6_Vwap]=getdata(PEsymbol6,"D")
[PE7_Open,PE7_CLOSE,PE7_Volume,PE7_Vwap]=getdata(PEsymbol7,"D")
[PE8_Open,PE8_CLOSE,PE8_Volume,PE8_Vwap]=getdata(PEsymbol8,"D")
[PE9_Open,PE9_CLOSE,PE9_Volume,PE9_Vwap]=getdata(PEsymbol9,"D")
[PE10_Open,PE10_CLOSE,PE10_Volume,PE10_Vwap]=getdata(PEsymbol10,"D")
[PE11_Open,PE11_CLOSE,PE11_Volume,PE11_Vwap]=getdata(PEsymbol11,"D")

var tbl = table.new(table_position, 11, 21  , frame_color=color.gray, frame_width=1, border_width=1, border_color=color.blue)

table.cell(tbl, 0, 0,spot + "   -   "+  '𝗘𝘅𝗽iry : '  +  ExpDay + "-"+ExpMonth+"-"+ExpYear + '   Spot :  ' + str.tostring( spot_close) ,text_size =font_size ,text_font_family = font.family_monospace)

table.merge_cells(tbl,0,0,10,0)
table.cell(tbl, 0, 1, "CE"  ,text_size =font_size   )   
table.cell(tbl, 6,1, "PE"   ,text_size =font_size  )  
table.merge_cells(tbl,0,1,4,1)
table.merge_cells(tbl,6,1,10,1)
table.cell(tbl, 0, 2,"Volume",text_size =font_size,bgcolor = color.rgb(167, 177, 211, 20))
table.cell(tbl, 1, 2,"VWAP",text_size =font_size,bgcolor = color.rgb(167, 177, 211, 20))
table.cell(tbl, 2, 2,"Open",text_size =font_size,bgcolor = color.rgb(167, 177, 211, 20))   
table.cell(tbl, 3, 2,"Diff",text_size =font_size,bgcolor = color.rgb(167, 177, 211, 20))
table.cell(tbl, 4, 2,"Cmp",text_size =font_size,bgcolor = color.rgb(167, 177, 211, 20))   
table.cell(tbl, 5, 2,"Strike",text_size =font_size,bgcolor = color.rgb(167, 177, 211, 20))   
table.cell(tbl, 6, 2,"Cmp",text_size =font_size,bgcolor = color.rgb(167, 177, 211, 20))
table.cell(tbl, 7, 2,"Diff",text_size =font_size,bgcolor = color.rgb(167, 177, 211, 20))
table.cell(tbl, 8, 2,"Open",text_size =font_size,bgcolor = color.rgb(167, 177, 211, 20))   
table.cell(tbl, 9, 2,"Vwap",text_size =font_size,bgcolor = color.rgb(167, 177, 211, 20))
table.cell(tbl, 10, 2,"Volume",text_size =font_size,bgcolor = color.rgb(167, 177, 211, 20))   

//Populate Table
table.cell(tbl, 0, 3 , str.tostring(CE1_Volume),text_size =font_size,bgcolor = isATM(array.get(ar_Strike,0))==1?ATM_color_background : NonATM_color_background  )
table.cell(tbl, 1, 3 , str.tostring(CE1_Vwap) ,text_color = CE1_CLOSE>=CE1_Vwap?color.green:color.red,text_size =font_size,bgcolor = isATM(array.get(ar_Strike,0))==1?ATM_color_background : NonATM_color_background  )
table.cell(tbl, 2, 3 , str.tostring(CE1_Open),text_size =font_size )
table.cell(tbl, 3, 3 , str.tostring(CE1_CLOSE-CE1_Open),text_color = CE1_CLOSE-CE1_Open>=0?color.green:color.red,text_size =font_size ,bgcolor = isATM(array.get(ar_Strike,0))==1?ATM_color_background : NonATM_color_background )
table.cell(tbl, 4, 3 , str.tostring(CE1_CLOSE),text_color = CE1_CLOSE-CE1_Open>=0?color.green:color.red,text_size =font_size,bgcolor = isATM(array.get(ar_Strike,0))==1?ATM_color_background : NonATM_color_background  )
table.cell(tbl, 5, 3 ,str.tostring(array.get(ar_Strike,0)),text_size =font_size,bgcolor = isATM(array.get(ar_Strike,0))==1?ATM_color_background : NonATM_color_background )
table.cell(tbl, 6, 3 , str.tostring(PE1_CLOSE),text_color = PE1_CLOSE-PE1_Open>=0?color.green:color.red,text_size =font_size,bgcolor = isATM(array.get(ar_Strike,0))==1?ATM_color_background : NonATM_color_background  )
table.cell(tbl, 7, 3 , str.tostring(PE1_CLOSE-PE1_Open),text_color = PE1_CLOSE-PE1_Open>=0?color.green:color.red,text_size =font_size,bgcolor = isATM(array.get(ar_Strike,0))==1?ATM_color_background : NonATM_color_background )
table.cell(tbl, 8, 3 , str.tostring(PE1_Open),text_size =font_size ,bgcolor = isATM(array.get(ar_Strike,0))==1?ATM_color_background : NonATM_color_background)
table.cell(tbl, 9, 3 , str.tostring(PE1_Vwap) ,text_color = PE1_CLOSE>=PE1_Vwap?color.green:color.red,text_size =font_size,bgcolor = isATM(array.get(ar_Strike,0))==1?ATM_color_background : NonATM_color_background  )
table.cell(tbl, 10, 3 , str.tostring(PE1_Volume),text_size =font_size ,bgcolor = isATM(array.get(ar_Strike,0))==1?ATM_color_background : NonATM_color_background )

table.cell(tbl, 0, 4 , str.tostring(CE2_Volume),text_size =font_size,bgcolor = isATM(array.get(ar_Strike,1))==1?ATM_color_background : NonATM_color_background  )
table.cell(tbl, 1, 4 , str.tostring(CE2_Vwap) ,text_color = CE2_CLOSE>=CE2_Vwap?color.green:color.red,text_size =font_size,bgcolor = isATM(array.get(ar_Strike,1))==1?ATM_color_background : NonATM_color_background  )
table.cell(tbl, 2, 4 , str.tostring(CE2_Open),text_size =font_size )
table.cell(tbl, 3, 4 , str.tostring(CE2_CLOSE-CE2_Open),text_color = CE2_CLOSE-CE2_Open>=0?color.green:color.red,text_size =font_size ,bgcolor = isATM(array.get(ar_Strike,1))==1?ATM_color_background : NonATM_color_background )
table.cell(tbl, 4, 4 , str.tostring(CE2_CLOSE),text_color = CE2_CLOSE-CE2_Open>=0?color.green:color.red,text_size =font_size,bgcolor = isATM(array.get(ar_Strike,1))==1?ATM_color_background : NonATM_color_background  )
table.cell(tbl, 5, 4 ,str.tostring(array.get(ar_Strike,1)),text_size =font_size,bgcolor = isATM(array.get(ar_Strike,1))==1?ATM_color_background : NonATM_color_background )
table.cell(tbl, 6, 4 , str.tostring(PE2_CLOSE),text_color = PE2_CLOSE-PE2_Open>=0?color.green:color.red,text_size =font_size,bgcolor = isATM(array.get(ar_Strike,1))==1?ATM_color_background : NonATM_color_background  )
table.cell(tbl, 7, 4 , str.tostring(PE2_CLOSE-PE2_Open),text_color = PE2_CLOSE-PE2_Open>=0?color.green:color.red,text_size =font_size,bgcolor = isATM(array.get(ar_Strike,1))==1?ATM_color_background : NonATM_color_background )
table.cell(tbl, 8, 4 , str.tostring(PE2_Open),text_size =font_size ,bgcolor = isATM(array.get(ar_Strike,1))==1?ATM_color_background : NonATM_color_background)
table.cell(tbl, 9, 4 , str.tostring(PE2_Vwap) ,text_color = PE2_CLOSE>=PE2_Vwap?color.green:color.red,text_size =font_size,bgcolor = isATM(array.get(ar_Strike,1))==1?ATM_color_background : NonATM_color_background  )
table.cell(tbl, 10, 4 , str.tostring(PE2_Volume),text_size =font_size ,bgcolor = isATM(array.get(ar_Strike,1))==1?ATM_color_background : NonATM_color_background )

enter image description here

pine-script pine-script-v5
1个回答
0
投票

在未声明的标识符 ar_Strike 处显示错误,需要运行代码才能进一步操作,谢谢

© www.soinside.com 2019 - 2024. All rights reserved.