Oh no! Where's the JavaScript?
Your Web browser does not have JavaScript enabled or does not support JavaScript. Please enable JavaScript on your Web browser to properly view this Web site, or upgrade to a Web browser that does support JavaScript.
Articles

bollinger bands in ruby programming

bollinger bands in ruby programming language

To calculate and visualize Bollinger Bands in a Ruby program, you can use the `Numo::NArray` library for numerical computations and the `Numo::Gnuplot` library for plotting. If you haven't already installed these libraries, you can do so using the following commands:

```bash
gem install numo-narray
gem install numo-gnuplot
```

Here's a sample Ruby program that calculates and plots Bollinger Bands for a set of price data:

```ruby
require 'numo/narray'
require 'numo/gnuplot'

# Sample price data (replace this with your own price data)
price_data = [100, 102, 104, 105, 103, 101, 99, 98, 97, 95, 93, 91]

# Bollinger Bands parameters
window_size = 10
num_standard_deviations = 2

# Calculate the moving average (middle band)
sma = Numo::NArray[
  (price_data[0, window_size - 1] + price_data[window_size - 1, -1].sum) / window_size
]

(1..price_data.size - window_size).each do |i|
  sma = Numo::NArray.hstack(
    sma,
    (sma[i - 1] * window_size - price_data[i - 1] + price_data[i + window_size - 1]) / window_size
  )
end

# Calculate the standard deviation
std_dev = []
(0..price_data.size - window_size).each do |i|
  slice = price_data[i, window_size]
  std_dev << Math.sqrt(slice.var)
end

# Calculate the upper and lower Bollinger Bands
upper_band = sma + num_standard_deviations * std_dev
lower_band = sma - num_standard_deviations * std_dev

# Create a time array for plotting
time = Numo::NArray[*(1..price_data.size)]

# Plot the price data and Bollinger Bands
Numo::Gnuplot::Splot.new do |plot|
  plot.data << Numo::Gnuplot::DataSet.new([time, price_data]) { |ds|
    ds.with = 'lines'
    ds.title = 'Price Data'
  }

  plot.data << Numo::Gnuplot::DataSet.new([time[window_size - 1..-1], sma]) { |ds|
    ds.with = 'lines'
    ds.title = 'SMA (Middle Band)'
  }

  plot.data << Numo::Gnuplot::DataSet.new([time[window_size - 1..-1], upper_band]) { |ds|
    ds.with = 'lines'
    ds.title = 'Upper Band'
  }

  plot.data << Numo::Gnuplot::DataSet.new([time[window_size - 1..-1], lower_band]) { |ds|
    ds.with = 'lines'
    ds.title = 'Lower Band'
  }

  plot.title = 'Bollinger Bands'
  plot.xlabel = 'Time'
  plot.ylabel = 'Price'
end
```

This program calculates the Bollinger Bands (SMA, upper band, and lower band) and plots them using the `Numo::Gnuplot` library. You can replace the `price_data` array with your own price data, and adjust the `window_size` and `num_standard_deviations` variables according to your preferences.

caa October 26 2023 139 reads 0 comments Print

0 comments

Leave a Comment

Please Login to Post a Comment.
  • No Comments have been Posted.

Sign In
Not a member yet? Click here to register.
Forgot Password?