ta-indicator 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. data/LICENSE +10 -0
  2. data/LICENSE-ta-lib +32 -0
  3. data/README.rdoc +196 -0
  4. data/Rakefile +13 -0
  5. data/examples/mapping.rb +43 -0
  6. data/lib/indicator.rb +56 -0
  7. data/lib/indicator/auto_gen.rb +163 -0
  8. data/lib/indicator/auto_gen/acos.rb +44 -0
  9. data/lib/indicator/auto_gen/ad.rb +44 -0
  10. data/lib/indicator/auto_gen/ad_osc.rb +58 -0
  11. data/lib/indicator/auto_gen/add.rb +45 -0
  12. data/lib/indicator/auto_gen/adx.rb +53 -0
  13. data/lib/indicator/auto_gen/adxr.rb +53 -0
  14. data/lib/indicator/auto_gen/apo.rb +63 -0
  15. data/lib/indicator/auto_gen/aroon.rb +56 -0
  16. data/lib/indicator/auto_gen/aroon_osc.rb +53 -0
  17. data/lib/indicator/auto_gen/asin.rb +44 -0
  18. data/lib/indicator/auto_gen/atan.rb +44 -0
  19. data/lib/indicator/auto_gen/atr.rb +53 -0
  20. data/lib/indicator/auto_gen/avg_price.rb +44 -0
  21. data/lib/indicator/auto_gen/bbands.rb +74 -0
  22. data/lib/indicator/auto_gen/beta.rb +54 -0
  23. data/lib/indicator/auto_gen/bop.rb +44 -0
  24. data/lib/indicator/auto_gen/cci.rb +53 -0
  25. data/lib/indicator/auto_gen/cdl2_crows.rb +44 -0
  26. data/lib/indicator/auto_gen/cdl3_black_crows.rb +44 -0
  27. data/lib/indicator/auto_gen/cdl3_inside.rb +44 -0
  28. data/lib/indicator/auto_gen/cdl3_line_strike.rb +44 -0
  29. data/lib/indicator/auto_gen/cdl3_outside.rb +44 -0
  30. data/lib/indicator/auto_gen/cdl3_stars_in_south.rb +44 -0
  31. data/lib/indicator/auto_gen/cdl3_white_soldiers.rb +44 -0
  32. data/lib/indicator/auto_gen/cdl_abandoned_baby.rb +53 -0
  33. data/lib/indicator/auto_gen/cdl_advance_block.rb +44 -0
  34. data/lib/indicator/auto_gen/cdl_belt_hold.rb +44 -0
  35. data/lib/indicator/auto_gen/cdl_breakaway.rb +44 -0
  36. data/lib/indicator/auto_gen/cdl_closing_marubozu.rb +44 -0
  37. data/lib/indicator/auto_gen/cdl_conceal_babys_wall.rb +44 -0
  38. data/lib/indicator/auto_gen/cdl_counter_attack.rb +44 -0
  39. data/lib/indicator/auto_gen/cdl_dark_cloud_cover.rb +53 -0
  40. data/lib/indicator/auto_gen/cdl_doji.rb +44 -0
  41. data/lib/indicator/auto_gen/cdl_doji_star.rb +44 -0
  42. data/lib/indicator/auto_gen/cdl_dragonfly_doji.rb +44 -0
  43. data/lib/indicator/auto_gen/cdl_engulfing.rb +44 -0
  44. data/lib/indicator/auto_gen/cdl_evening_doji_star.rb +53 -0
  45. data/lib/indicator/auto_gen/cdl_evening_star.rb +53 -0
  46. data/lib/indicator/auto_gen/cdl_gap_side_side_white.rb +44 -0
  47. data/lib/indicator/auto_gen/cdl_gravestone_doji.rb +44 -0
  48. data/lib/indicator/auto_gen/cdl_hammer.rb +44 -0
  49. data/lib/indicator/auto_gen/cdl_hanging_man.rb +44 -0
  50. data/lib/indicator/auto_gen/cdl_harami.rb +44 -0
  51. data/lib/indicator/auto_gen/cdl_harami_cross.rb +44 -0
  52. data/lib/indicator/auto_gen/cdl_hign_wave.rb +44 -0
  53. data/lib/indicator/auto_gen/cdl_hikkake.rb +44 -0
  54. data/lib/indicator/auto_gen/cdl_hikkake_mod.rb +44 -0
  55. data/lib/indicator/auto_gen/cdl_homing_pigeon.rb +44 -0
  56. data/lib/indicator/auto_gen/cdl_identical3_crows.rb +44 -0
  57. data/lib/indicator/auto_gen/cdl_in_neck.rb +44 -0
  58. data/lib/indicator/auto_gen/cdl_inverted_hammer.rb +44 -0
  59. data/lib/indicator/auto_gen/cdl_kicking.rb +44 -0
  60. data/lib/indicator/auto_gen/cdl_kicking_by_length.rb +44 -0
  61. data/lib/indicator/auto_gen/cdl_ladder_bottom.rb +44 -0
  62. data/lib/indicator/auto_gen/cdl_long_legged_doji.rb +44 -0
  63. data/lib/indicator/auto_gen/cdl_long_line.rb +44 -0
  64. data/lib/indicator/auto_gen/cdl_marubozu.rb +44 -0
  65. data/lib/indicator/auto_gen/cdl_mat_hold.rb +53 -0
  66. data/lib/indicator/auto_gen/cdl_matching_low.rb +44 -0
  67. data/lib/indicator/auto_gen/cdl_morning_doji_star.rb +53 -0
  68. data/lib/indicator/auto_gen/cdl_morning_star.rb +53 -0
  69. data/lib/indicator/auto_gen/cdl_on_neck.rb +44 -0
  70. data/lib/indicator/auto_gen/cdl_piercing.rb +44 -0
  71. data/lib/indicator/auto_gen/cdl_rickshaw_man.rb +44 -0
  72. data/lib/indicator/auto_gen/cdl_rise_fall3_methods.rb +44 -0
  73. data/lib/indicator/auto_gen/cdl_seperating_lines.rb +44 -0
  74. data/lib/indicator/auto_gen/cdl_shooting_star.rb +44 -0
  75. data/lib/indicator/auto_gen/cdl_short_line.rb +44 -0
  76. data/lib/indicator/auto_gen/cdl_spinning_top.rb +44 -0
  77. data/lib/indicator/auto_gen/cdl_stalled_pattern.rb +44 -0
  78. data/lib/indicator/auto_gen/cdl_stick_sandwhich.rb +44 -0
  79. data/lib/indicator/auto_gen/cdl_takuri.rb +44 -0
  80. data/lib/indicator/auto_gen/cdl_tasuki_gap.rb +44 -0
  81. data/lib/indicator/auto_gen/cdl_thrusting.rb +44 -0
  82. data/lib/indicator/auto_gen/cdl_tristar.rb +44 -0
  83. data/lib/indicator/auto_gen/cdl_unique3_river.rb +44 -0
  84. data/lib/indicator/auto_gen/cdl_upside_gap2_crows.rb +44 -0
  85. data/lib/indicator/auto_gen/cdl_x_side_gap3_methods.rb +44 -0
  86. data/lib/indicator/auto_gen/ceil.rb +44 -0
  87. data/lib/indicator/auto_gen/cmo.rb +53 -0
  88. data/lib/indicator/auto_gen/correl.rb +54 -0
  89. data/lib/indicator/auto_gen/cos.rb +44 -0
  90. data/lib/indicator/auto_gen/cosh.rb +44 -0
  91. data/lib/indicator/auto_gen/dema.rb +53 -0
  92. data/lib/indicator/auto_gen/div.rb +45 -0
  93. data/lib/indicator/auto_gen/dx.rb +53 -0
  94. data/lib/indicator/auto_gen/ema.rb +53 -0
  95. data/lib/indicator/auto_gen/exp.rb +44 -0
  96. data/lib/indicator/auto_gen/floor.rb +44 -0
  97. data/lib/indicator/auto_gen/ht_dc_period.rb +44 -0
  98. data/lib/indicator/auto_gen/ht_dc_phase.rb +44 -0
  99. data/lib/indicator/auto_gen/ht_phasor.rb +47 -0
  100. data/lib/indicator/auto_gen/ht_sine.rb +47 -0
  101. data/lib/indicator/auto_gen/ht_trend_mode.rb +44 -0
  102. data/lib/indicator/auto_gen/ht_trendline.rb +44 -0
  103. data/lib/indicator/auto_gen/kama.rb +53 -0
  104. data/lib/indicator/auto_gen/linear_reg.rb +53 -0
  105. data/lib/indicator/auto_gen/linear_reg_angle.rb +53 -0
  106. data/lib/indicator/auto_gen/linear_reg_intercept.rb +53 -0
  107. data/lib/indicator/auto_gen/linear_reg_slope.rb +53 -0
  108. data/lib/indicator/auto_gen/ln.rb +44 -0
  109. data/lib/indicator/auto_gen/log10.rb +44 -0
  110. data/lib/indicator/auto_gen/macd.rb +69 -0
  111. data/lib/indicator/auto_gen/macd_ext.rb +84 -0
  112. data/lib/indicator/auto_gen/macd_fix.rb +59 -0
  113. data/lib/indicator/auto_gen/mama.rb +61 -0
  114. data/lib/indicator/auto_gen/max.rb +53 -0
  115. data/lib/indicator/auto_gen/max_index.rb +53 -0
  116. data/lib/indicator/auto_gen/med_price.rb +44 -0
  117. data/lib/indicator/auto_gen/mfi.rb +53 -0
  118. data/lib/indicator/auto_gen/mid_point.rb +53 -0
  119. data/lib/indicator/auto_gen/mid_price.rb +53 -0
  120. data/lib/indicator/auto_gen/min.rb +53 -0
  121. data/lib/indicator/auto_gen/min_index.rb +53 -0
  122. data/lib/indicator/auto_gen/min_max.rb +56 -0
  123. data/lib/indicator/auto_gen/min_max_index.rb +56 -0
  124. data/lib/indicator/auto_gen/minus_di.rb +53 -0
  125. data/lib/indicator/auto_gen/minus_dm.rb +53 -0
  126. data/lib/indicator/auto_gen/mom.rb +53 -0
  127. data/lib/indicator/auto_gen/moving_average.rb +58 -0
  128. data/lib/indicator/auto_gen/moving_average_variable_period.rb +64 -0
  129. data/lib/indicator/auto_gen/mult.rb +45 -0
  130. data/lib/indicator/auto_gen/natr.rb +53 -0
  131. data/lib/indicator/auto_gen/obv.rb +44 -0
  132. data/lib/indicator/auto_gen/plus_di.rb +53 -0
  133. data/lib/indicator/auto_gen/plus_dm.rb +53 -0
  134. data/lib/indicator/auto_gen/ppo.rb +63 -0
  135. data/lib/indicator/auto_gen/roc.rb +53 -0
  136. data/lib/indicator/auto_gen/roc_p.rb +53 -0
  137. data/lib/indicator/auto_gen/roc_r.rb +53 -0
  138. data/lib/indicator/auto_gen/roc_r100.rb +53 -0
  139. data/lib/indicator/auto_gen/rsi.rb +53 -0
  140. data/lib/indicator/auto_gen/sar.rb +58 -0
  141. data/lib/indicator/auto_gen/sar_ext.rb +88 -0
  142. data/lib/indicator/auto_gen/sin.rb +44 -0
  143. data/lib/indicator/auto_gen/sinh.rb +44 -0
  144. data/lib/indicator/auto_gen/sma.rb +53 -0
  145. data/lib/indicator/auto_gen/sqrt.rb +44 -0
  146. data/lib/indicator/auto_gen/std_dev.rb +58 -0
  147. data/lib/indicator/auto_gen/stoch.rb +76 -0
  148. data/lib/indicator/auto_gen/stoch_f.rb +66 -0
  149. data/lib/indicator/auto_gen/stoch_rsi.rb +71 -0
  150. data/lib/indicator/auto_gen/sub.rb +45 -0
  151. data/lib/indicator/auto_gen/sum.rb +53 -0
  152. data/lib/indicator/auto_gen/t3.rb +58 -0
  153. data/lib/indicator/auto_gen/tan.rb +44 -0
  154. data/lib/indicator/auto_gen/tanh.rb +44 -0
  155. data/lib/indicator/auto_gen/tema.rb +53 -0
  156. data/lib/indicator/auto_gen/trima.rb +53 -0
  157. data/lib/indicator/auto_gen/trix.rb +53 -0
  158. data/lib/indicator/auto_gen/true_range.rb +44 -0
  159. data/lib/indicator/auto_gen/tsf.rb +53 -0
  160. data/lib/indicator/auto_gen/typ_price.rb +44 -0
  161. data/lib/indicator/auto_gen/ult_osc.rb +63 -0
  162. data/lib/indicator/auto_gen/variance.rb +58 -0
  163. data/lib/indicator/auto_gen/wcl_price.rb +44 -0
  164. data/lib/indicator/auto_gen/will_r.rb +53 -0
  165. data/lib/indicator/auto_gen/wma.rb +53 -0
  166. data/lib/indicator/base.rb +19 -0
  167. data/lib/indicator/data_mapper.rb +93 -0
  168. data/lib/indicator/mixin.rb +15 -0
  169. data/lib/indicator/version.rb +3 -0
  170. data/test/data_mapper_test.rb +76 -0
  171. metadata +226 -0
@@ -0,0 +1,53 @@
1
+ # Ta-Lib function mapping class
2
+ # Function: 'RSI'
3
+ # Description: 'Relative Strength Index'
4
+ # This file has been autogenerated - Do Not Edit.
5
+ class Indicator::AutoGen::Rsi < Indicator::Base
6
+ # Time Period <Integer>
7
+ attr_accessor :time_period
8
+
9
+ def initialize(*args)
10
+ if args.first.is_a? Hash
11
+ h = args.first
12
+ @time_period = h[:time_period] || 14
13
+ else
14
+ @time_period = args[0] || 14
15
+ end
16
+
17
+ @func = TaLib::Function.new("RSI")
18
+ end
19
+
20
+ # Is price data required as an input
21
+ def self.price_input?
22
+ false
23
+ end
24
+
25
+ # The list of arguments
26
+ def self.arguments
27
+ [ :time_period ]
28
+ end
29
+
30
+ # The minimum set of inputs required
31
+ def self.inputs
32
+ [ :in_real ]
33
+ end
34
+
35
+ # The outputs generated by this function
36
+ def self.outputs
37
+ [ :out_real ]
38
+ end
39
+
40
+ def run(in_real)
41
+ len = in_real.length
42
+ @func.in_real(0, map(in_real))
43
+
44
+ @func.opt_int(0, @time_period)
45
+
46
+ out_real = Array.new(len)
47
+ @func.out_real(0, out_real)
48
+
49
+ @func.call(0, len - 1)
50
+
51
+ out_real
52
+ end
53
+ end
@@ -0,0 +1,58 @@
1
+ # Ta-Lib function mapping class
2
+ # Function: 'SAR'
3
+ # Description: 'Parabolic SAR'
4
+ # This file has been autogenerated - Do Not Edit.
5
+ class Indicator::AutoGen::Sar < Indicator::Base
6
+ # Acceleration Factor <Double>
7
+ attr_accessor :acceleration_factor
8
+ # AF Maximum <Double>
9
+ attr_accessor :af_maximum
10
+
11
+ def initialize(*args)
12
+ if args.first.is_a? Hash
13
+ h = args.first
14
+ @acceleration_factor = h[:acceleration_factor] || 2.000000e-2
15
+ @af_maximum = h[:af_maximum] || 2.000000e-1
16
+ else
17
+ @acceleration_factor = args[0] || 2.000000e-2
18
+ @af_maximum = args[1] || 2.000000e-1
19
+ end
20
+
21
+ @func = TaLib::Function.new("SAR")
22
+ end
23
+
24
+ # Is price data required as an input
25
+ def self.price_input?
26
+ true
27
+ end
28
+
29
+ # The list of arguments
30
+ def self.arguments
31
+ [ :acceleration_factor, :af_maximum ]
32
+ end
33
+
34
+ # The minimum set of inputs required
35
+ def self.inputs
36
+ [ :open, :high, :low, :close ]
37
+ end
38
+
39
+ # The outputs generated by this function
40
+ def self.outputs
41
+ [ :out_real ]
42
+ end
43
+
44
+ def run(*args)
45
+ o, h, l, c, v, len = map_ohlcv(false, *args)
46
+ @func.in_price(0, o, h, l, c, v, nil)
47
+
48
+ @func.opt_real(0, @acceleration_factor)
49
+ @func.opt_real(1, @af_maximum)
50
+
51
+ out_real = Array.new(len)
52
+ @func.out_real(0, out_real)
53
+
54
+ @func.call(0, len - 1)
55
+
56
+ out_real
57
+ end
58
+ end
@@ -0,0 +1,88 @@
1
+ # Ta-Lib function mapping class
2
+ # Function: 'SAREXT'
3
+ # Description: 'Parabolic SAR - Extended'
4
+ # This file has been autogenerated - Do Not Edit.
5
+ class Indicator::AutoGen::SarExt < Indicator::Base
6
+ # Start Value <Double>
7
+ attr_accessor :start_value
8
+ # Offset on Reverse <Double>
9
+ attr_accessor :offset_on_reverse
10
+ # AF Init Long <Double>
11
+ attr_accessor :af_init_long
12
+ # AF Long <Double>
13
+ attr_accessor :af_long
14
+ # AF Max Long <Double>
15
+ attr_accessor :af_max_long
16
+ # AF Init Short <Double>
17
+ attr_accessor :af_init_short
18
+ # AF Short <Double>
19
+ attr_accessor :af_short
20
+ # AF Max Short <Double>
21
+ attr_accessor :af_max_short
22
+
23
+ def initialize(*args)
24
+ if args.first.is_a? Hash
25
+ h = args.first
26
+ @start_value = h[:start_value] || 0.000000e+0
27
+ @offset_on_reverse = h[:offset_on_reverse] || 0.000000e+0
28
+ @af_init_long = h[:af_init_long] || 2.000000e-2
29
+ @af_long = h[:af_long] || 2.000000e-2
30
+ @af_max_long = h[:af_max_long] || 2.000000e-1
31
+ @af_init_short = h[:af_init_short] || 2.000000e-2
32
+ @af_short = h[:af_short] || 2.000000e-2
33
+ @af_max_short = h[:af_max_short] || 2.000000e-1
34
+ else
35
+ @start_value = args[0] || 0.000000e+0
36
+ @offset_on_reverse = args[1] || 0.000000e+0
37
+ @af_init_long = args[2] || 2.000000e-2
38
+ @af_long = args[3] || 2.000000e-2
39
+ @af_max_long = args[4] || 2.000000e-1
40
+ @af_init_short = args[5] || 2.000000e-2
41
+ @af_short = args[6] || 2.000000e-2
42
+ @af_max_short = args[7] || 2.000000e-1
43
+ end
44
+
45
+ @func = TaLib::Function.new("SAREXT")
46
+ end
47
+
48
+ # Is price data required as an input
49
+ def self.price_input?
50
+ true
51
+ end
52
+
53
+ # The list of arguments
54
+ def self.arguments
55
+ [ :start_value, :offset_on_reverse, :af_init_long, :af_long, :af_max_long, :af_init_short, :af_short, :af_max_short ]
56
+ end
57
+
58
+ # The minimum set of inputs required
59
+ def self.inputs
60
+ [ :open, :high, :low, :close ]
61
+ end
62
+
63
+ # The outputs generated by this function
64
+ def self.outputs
65
+ [ :out_real ]
66
+ end
67
+
68
+ def run(*args)
69
+ o, h, l, c, v, len = map_ohlcv(false, *args)
70
+ @func.in_price(0, o, h, l, c, v, nil)
71
+
72
+ @func.opt_real(0, @start_value)
73
+ @func.opt_real(1, @offset_on_reverse)
74
+ @func.opt_real(2, @af_init_long)
75
+ @func.opt_real(3, @af_long)
76
+ @func.opt_real(4, @af_max_long)
77
+ @func.opt_real(5, @af_init_short)
78
+ @func.opt_real(6, @af_short)
79
+ @func.opt_real(7, @af_max_short)
80
+
81
+ out_real = Array.new(len)
82
+ @func.out_real(0, out_real)
83
+
84
+ @func.call(0, len - 1)
85
+
86
+ out_real
87
+ end
88
+ end
@@ -0,0 +1,44 @@
1
+ # Ta-Lib function mapping class
2
+ # Function: 'SIN'
3
+ # Description: 'Vector Trigonometric Sin'
4
+ # This file has been autogenerated - Do Not Edit.
5
+ class Indicator::AutoGen::Sin < Indicator::Base
6
+
7
+ def initialize(*args)
8
+
9
+ @func = TaLib::Function.new("SIN")
10
+ end
11
+
12
+ # Is price data required as an input
13
+ def self.price_input?
14
+ false
15
+ end
16
+
17
+ # The list of arguments
18
+ def self.arguments
19
+ [ ]
20
+ end
21
+
22
+ # The minimum set of inputs required
23
+ def self.inputs
24
+ [ :in_real ]
25
+ end
26
+
27
+ # The outputs generated by this function
28
+ def self.outputs
29
+ [ :out_real ]
30
+ end
31
+
32
+ def run(in_real)
33
+ len = in_real.length
34
+ @func.in_real(0, map(in_real))
35
+
36
+
37
+ out_real = Array.new(len)
38
+ @func.out_real(0, out_real)
39
+
40
+ @func.call(0, len - 1)
41
+
42
+ out_real
43
+ end
44
+ end
@@ -0,0 +1,44 @@
1
+ # Ta-Lib function mapping class
2
+ # Function: 'SINH'
3
+ # Description: 'Vector Trigonometric Sinh'
4
+ # This file has been autogenerated - Do Not Edit.
5
+ class Indicator::AutoGen::Sinh < Indicator::Base
6
+
7
+ def initialize(*args)
8
+
9
+ @func = TaLib::Function.new("SINH")
10
+ end
11
+
12
+ # Is price data required as an input
13
+ def self.price_input?
14
+ false
15
+ end
16
+
17
+ # The list of arguments
18
+ def self.arguments
19
+ [ ]
20
+ end
21
+
22
+ # The minimum set of inputs required
23
+ def self.inputs
24
+ [ :in_real ]
25
+ end
26
+
27
+ # The outputs generated by this function
28
+ def self.outputs
29
+ [ :out_real ]
30
+ end
31
+
32
+ def run(in_real)
33
+ len = in_real.length
34
+ @func.in_real(0, map(in_real))
35
+
36
+
37
+ out_real = Array.new(len)
38
+ @func.out_real(0, out_real)
39
+
40
+ @func.call(0, len - 1)
41
+
42
+ out_real
43
+ end
44
+ end
@@ -0,0 +1,53 @@
1
+ # Ta-Lib function mapping class
2
+ # Function: 'SMA'
3
+ # Description: 'Simple Moving Average'
4
+ # This file has been autogenerated - Do Not Edit.
5
+ class Indicator::AutoGen::Sma < Indicator::Base
6
+ # Time Period <Integer>
7
+ attr_accessor :time_period
8
+
9
+ def initialize(*args)
10
+ if args.first.is_a? Hash
11
+ h = args.first
12
+ @time_period = h[:time_period] || 30
13
+ else
14
+ @time_period = args[0] || 30
15
+ end
16
+
17
+ @func = TaLib::Function.new("SMA")
18
+ end
19
+
20
+ # Is price data required as an input
21
+ def self.price_input?
22
+ false
23
+ end
24
+
25
+ # The list of arguments
26
+ def self.arguments
27
+ [ :time_period ]
28
+ end
29
+
30
+ # The minimum set of inputs required
31
+ def self.inputs
32
+ [ :in_real ]
33
+ end
34
+
35
+ # The outputs generated by this function
36
+ def self.outputs
37
+ [ :out_real ]
38
+ end
39
+
40
+ def run(in_real)
41
+ len = in_real.length
42
+ @func.in_real(0, map(in_real))
43
+
44
+ @func.opt_int(0, @time_period)
45
+
46
+ out_real = Array.new(len)
47
+ @func.out_real(0, out_real)
48
+
49
+ @func.call(0, len - 1)
50
+
51
+ out_real
52
+ end
53
+ end
@@ -0,0 +1,44 @@
1
+ # Ta-Lib function mapping class
2
+ # Function: 'SQRT'
3
+ # Description: 'Vector Square Root'
4
+ # This file has been autogenerated - Do Not Edit.
5
+ class Indicator::AutoGen::Sqrt < Indicator::Base
6
+
7
+ def initialize(*args)
8
+
9
+ @func = TaLib::Function.new("SQRT")
10
+ end
11
+
12
+ # Is price data required as an input
13
+ def self.price_input?
14
+ false
15
+ end
16
+
17
+ # The list of arguments
18
+ def self.arguments
19
+ [ ]
20
+ end
21
+
22
+ # The minimum set of inputs required
23
+ def self.inputs
24
+ [ :in_real ]
25
+ end
26
+
27
+ # The outputs generated by this function
28
+ def self.outputs
29
+ [ :out_real ]
30
+ end
31
+
32
+ def run(in_real)
33
+ len = in_real.length
34
+ @func.in_real(0, map(in_real))
35
+
36
+
37
+ out_real = Array.new(len)
38
+ @func.out_real(0, out_real)
39
+
40
+ @func.call(0, len - 1)
41
+
42
+ out_real
43
+ end
44
+ end
@@ -0,0 +1,58 @@
1
+ # Ta-Lib function mapping class
2
+ # Function: 'STDDEV'
3
+ # Description: 'Standard Deviation'
4
+ # This file has been autogenerated - Do Not Edit.
5
+ class Indicator::AutoGen::StdDev < Indicator::Base
6
+ # Time Period <Integer>
7
+ attr_accessor :time_period
8
+ # Deviations <Double>
9
+ attr_accessor :deviations
10
+
11
+ def initialize(*args)
12
+ if args.first.is_a? Hash
13
+ h = args.first
14
+ @time_period = h[:time_period] || 5
15
+ @deviations = h[:deviations] || 1.000000e+0
16
+ else
17
+ @time_period = args[0] || 5
18
+ @deviations = args[1] || 1.000000e+0
19
+ end
20
+
21
+ @func = TaLib::Function.new("STDDEV")
22
+ end
23
+
24
+ # Is price data required as an input
25
+ def self.price_input?
26
+ false
27
+ end
28
+
29
+ # The list of arguments
30
+ def self.arguments
31
+ [ :time_period, :deviations ]
32
+ end
33
+
34
+ # The minimum set of inputs required
35
+ def self.inputs
36
+ [ :in_real ]
37
+ end
38
+
39
+ # The outputs generated by this function
40
+ def self.outputs
41
+ [ :out_real ]
42
+ end
43
+
44
+ def run(in_real)
45
+ len = in_real.length
46
+ @func.in_real(0, map(in_real))
47
+
48
+ @func.opt_int(0, @time_period)
49
+ @func.opt_real(1, @deviations)
50
+
51
+ out_real = Array.new(len)
52
+ @func.out_real(0, out_real)
53
+
54
+ @func.call(0, len - 1)
55
+
56
+ out_real
57
+ end
58
+ end