class OptionMaxPain::NseCalculator
Public Class Methods
calculate_max_pain(stock)
click to toggle source
Calls superclass method
OptionMaxPain::Calculator::calculate_max_pain
# File lib/option_max_pain/nse_calculator.rb, line 6 def self.calculate_max_pain(stock) page = Nokogiri::HTML open "https://www.nseindia.com/live_market/dynaContent/live_watch/option_chain/optionKeys.jsp?symbol=#{stock}" strike_col_index = self.get_col_index page.css("th[title='Strike Price']").first put_oi_col_index = self.get_col_index page.css("th[title='Open Interest']").last call_oi_col_index = self.get_col_index page.css("th[title='Open Interest']").first options = page.css('table#octable tr')[2..-2].collect do |row| { row.elements[strike_col_index].text.gsub(',','').to_i => { call: row.elements[call_oi_col_index].text.gsub(',','').to_i, put: row.elements[put_oi_col_index].text.gsub(',','').to_i } } end options super(options.reduce({}, :merge)) end
get_col_index(element)
click to toggle source
# File lib/option_max_pain/nse_calculator.rb, line 26 def self.get_col_index(element) element.parent.elements.index(element) end