sqa-tai 0.1.2 → 0.4.0

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.
@@ -3,6 +3,12 @@
3
3
  module SQA
4
4
  module TAI
5
5
  # Pattern Recognition (Candlestick Patterns)
6
+ #
7
+ # :reek:DataClump -- all 61 patterns intentionally take TA-Lib's own
8
+ # OHLC (+ optional penetration) signature as separate positional args;
9
+ # bundling them into a value object would be a breaking public API
10
+ # change for this gem and its downstream consumers (sqa, sqa-cli,
11
+ # sqa-advisor) and their 133 published indicator doc pages.
6
12
  module PatternRecognition
7
13
  # Doji candlestick pattern
8
14
  # @param open [Array<Float>] Open prices
@@ -17,7 +23,7 @@ module SQA
17
23
  validate_prices!(low)
18
24
  validate_prices!(close)
19
25
 
20
- TALibFFI.cdldoji(open, high, low, close)
26
+ Native.cdldoji([open, high, low, close])
21
27
  end
22
28
 
23
29
  # Hammer candlestick pattern
@@ -28,7 +34,7 @@ module SQA
28
34
  validate_prices!(low)
29
35
  validate_prices!(close)
30
36
 
31
- TALibFFI.cdlhammer(open, high, low, close)
37
+ Native.cdlhammer([open, high, low, close])
32
38
  end
33
39
 
34
40
  # Engulfing pattern
@@ -39,7 +45,7 @@ module SQA
39
45
  validate_prices!(low)
40
46
  validate_prices!(close)
41
47
 
42
- TALibFFI.cdlengulfing(open, high, low, close)
48
+ Native.cdlengulfing([open, high, low, close])
43
49
  end
44
50
 
45
51
  # Morning Star pattern
@@ -50,7 +56,7 @@ module SQA
50
56
  validate_prices!(low)
51
57
  validate_prices!(close)
52
58
 
53
- TALibFFI.cdlmorningstar(open, high, low, close, penetration: penetration)
59
+ Native.cdlmorningstar([open, high, low, close], penetration: penetration)
54
60
  end
55
61
 
56
62
  # Evening Star pattern
@@ -61,7 +67,7 @@ module SQA
61
67
  validate_prices!(low)
62
68
  validate_prices!(close)
63
69
 
64
- TALibFFI.cdleveningstar(open, high, low, close, penetration: penetration)
70
+ Native.cdleveningstar([open, high, low, close], penetration: penetration)
65
71
  end
66
72
 
67
73
  # Harami pattern
@@ -72,7 +78,7 @@ module SQA
72
78
  validate_prices!(low)
73
79
  validate_prices!(close)
74
80
 
75
- TALibFFI.cdlharami(open, high, low, close)
81
+ Native.cdlharami([open, high, low, close])
76
82
  end
77
83
 
78
84
  # Piercing pattern
@@ -83,7 +89,7 @@ module SQA
83
89
  validate_prices!(low)
84
90
  validate_prices!(close)
85
91
 
86
- TALibFFI.cdlpiercing(open, high, low, close)
92
+ Native.cdlpiercing([open, high, low, close])
87
93
  end
88
94
 
89
95
  # Shooting Star pattern
@@ -94,7 +100,7 @@ module SQA
94
100
  validate_prices!(low)
95
101
  validate_prices!(close)
96
102
 
97
- TALibFFI.cdlshootingstar(open, high, low, close)
103
+ Native.cdlshootingstar([open, high, low, close])
98
104
  end
99
105
 
100
106
  # Marubozu pattern
@@ -105,7 +111,7 @@ module SQA
105
111
  validate_prices!(low)
106
112
  validate_prices!(close)
107
113
 
108
- TALibFFI.cdlmarubozu(open, high, low, close)
114
+ Native.cdlmarubozu([open, high, low, close])
109
115
  end
110
116
 
111
117
  # Spinning Top pattern
@@ -116,7 +122,7 @@ module SQA
116
122
  validate_prices!(low)
117
123
  validate_prices!(close)
118
124
 
119
- TALibFFI.cdlspinningtop(open, high, low, close)
125
+ Native.cdlspinningtop([open, high, low, close])
120
126
  end
121
127
 
122
128
  # Dragonfly Doji pattern
@@ -127,7 +133,7 @@ module SQA
127
133
  validate_prices!(low)
128
134
  validate_prices!(close)
129
135
 
130
- TALibFFI.cdldragonflydoji(open, high, low, close)
136
+ Native.cdldragonflydoji([open, high, low, close])
131
137
  end
132
138
 
133
139
  # Gravestone Doji pattern
@@ -138,7 +144,7 @@ module SQA
138
144
  validate_prices!(low)
139
145
  validate_prices!(close)
140
146
 
141
- TALibFFI.cdlgravestonedoji(open, high, low, close)
147
+ Native.cdlgravestonedoji([open, high, low, close])
142
148
  end
143
149
 
144
150
  # Two Crows pattern
@@ -149,7 +155,7 @@ module SQA
149
155
  validate_prices!(low)
150
156
  validate_prices!(close)
151
157
 
152
- TALibFFI.cdl2crows(open, high, low, close)
158
+ Native.cdl2crows([open, high, low, close])
153
159
  end
154
160
 
155
161
  # Three Black Crows pattern
@@ -160,7 +166,7 @@ module SQA
160
166
  validate_prices!(low)
161
167
  validate_prices!(close)
162
168
 
163
- TALibFFI.cdl3blackcrows(open, high, low, close)
169
+ Native.cdl3blackcrows([open, high, low, close])
164
170
  end
165
171
 
166
172
  # Three Inside Up/Down pattern
@@ -171,7 +177,7 @@ module SQA
171
177
  validate_prices!(low)
172
178
  validate_prices!(close)
173
179
 
174
- TALibFFI.cdl3inside(open, high, low, close)
180
+ Native.cdl3inside([open, high, low, close])
175
181
  end
176
182
 
177
183
  # Three Line Strike pattern
@@ -182,7 +188,7 @@ module SQA
182
188
  validate_prices!(low)
183
189
  validate_prices!(close)
184
190
 
185
- TALibFFI.cdl3linestrike(open, high, low, close)
191
+ Native.cdl3linestrike([open, high, low, close])
186
192
  end
187
193
 
188
194
  # Three Outside Up/Down pattern
@@ -193,7 +199,7 @@ module SQA
193
199
  validate_prices!(low)
194
200
  validate_prices!(close)
195
201
 
196
- TALibFFI.cdl3outside(open, high, low, close)
202
+ Native.cdl3outside([open, high, low, close])
197
203
  end
198
204
 
199
205
  # Three Stars In The South pattern
@@ -204,7 +210,7 @@ module SQA
204
210
  validate_prices!(low)
205
211
  validate_prices!(close)
206
212
 
207
- TALibFFI.cdl3starsinsouth(open, high, low, close)
213
+ Native.cdl3starsinsouth([open, high, low, close])
208
214
  end
209
215
 
210
216
  # Three Advancing White Soldiers pattern
@@ -215,7 +221,7 @@ module SQA
215
221
  validate_prices!(low)
216
222
  validate_prices!(close)
217
223
 
218
- TALibFFI.cdl3whitesoldiers(open, high, low, close)
224
+ Native.cdl3whitesoldiers([open, high, low, close])
219
225
  end
220
226
 
221
227
  # Abandoned Baby pattern
@@ -226,7 +232,7 @@ module SQA
226
232
  validate_prices!(low)
227
233
  validate_prices!(close)
228
234
 
229
- TALibFFI.cdlabandonedbaby(open, high, low, close, penetration: penetration)
235
+ Native.cdlabandonedbaby([open, high, low, close], penetration: penetration)
230
236
  end
231
237
 
232
238
  # Advance Block pattern
@@ -237,7 +243,7 @@ module SQA
237
243
  validate_prices!(low)
238
244
  validate_prices!(close)
239
245
 
240
- TALibFFI.cdladvanceblock(open, high, low, close)
246
+ Native.cdladvanceblock([open, high, low, close])
241
247
  end
242
248
 
243
249
  # Belt-hold pattern
@@ -248,7 +254,7 @@ module SQA
248
254
  validate_prices!(low)
249
255
  validate_prices!(close)
250
256
 
251
- TALibFFI.cdlbelthold(open, high, low, close)
257
+ Native.cdlbelthold([open, high, low, close])
252
258
  end
253
259
 
254
260
  # Breakaway pattern
@@ -259,7 +265,7 @@ module SQA
259
265
  validate_prices!(low)
260
266
  validate_prices!(close)
261
267
 
262
- TALibFFI.cdlbreakaway(open, high, low, close)
268
+ Native.cdlbreakaway([open, high, low, close])
263
269
  end
264
270
 
265
271
  # Closing Marubozu pattern
@@ -270,7 +276,7 @@ module SQA
270
276
  validate_prices!(low)
271
277
  validate_prices!(close)
272
278
 
273
- TALibFFI.cdlclosingmarubozu(open, high, low, close)
279
+ Native.cdlclosingmarubozu([open, high, low, close])
274
280
  end
275
281
 
276
282
  # Concealing Baby Swallow pattern
@@ -281,7 +287,7 @@ module SQA
281
287
  validate_prices!(low)
282
288
  validate_prices!(close)
283
289
 
284
- TALibFFI.cdlconcealbabyswall(open, high, low, close)
290
+ Native.cdlconcealbabyswall([open, high, low, close])
285
291
  end
286
292
 
287
293
  # Counterattack pattern
@@ -292,7 +298,7 @@ module SQA
292
298
  validate_prices!(low)
293
299
  validate_prices!(close)
294
300
 
295
- TALibFFI.cdlcounterattack(open, high, low, close)
301
+ Native.cdlcounterattack([open, high, low, close])
296
302
  end
297
303
 
298
304
  # Dark Cloud Cover pattern
@@ -303,7 +309,7 @@ module SQA
303
309
  validate_prices!(low)
304
310
  validate_prices!(close)
305
311
 
306
- TALibFFI.cdldarkcloudcover(open, high, low, close, penetration: penetration)
312
+ Native.cdldarkcloudcover([open, high, low, close], penetration: penetration)
307
313
  end
308
314
 
309
315
  # Doji Star pattern
@@ -314,7 +320,7 @@ module SQA
314
320
  validate_prices!(low)
315
321
  validate_prices!(close)
316
322
 
317
- TALibFFI.cdldojistar(open, high, low, close)
323
+ Native.cdldojistar([open, high, low, close])
318
324
  end
319
325
 
320
326
  # Evening Doji Star pattern
@@ -325,7 +331,7 @@ module SQA
325
331
  validate_prices!(low)
326
332
  validate_prices!(close)
327
333
 
328
- TALibFFI.cdleveningdojistar(open, high, low, close, penetration: penetration)
334
+ Native.cdleveningdojistar([open, high, low, close], penetration: penetration)
329
335
  end
330
336
 
331
337
  # Up/Down-gap side-by-side white lines pattern
@@ -336,7 +342,7 @@ module SQA
336
342
  validate_prices!(low)
337
343
  validate_prices!(close)
338
344
 
339
- TALibFFI.cdlgapsidesidewhite(open, high, low, close)
345
+ Native.cdlgapsidesidewhite([open, high, low, close])
340
346
  end
341
347
 
342
348
  # Hanging Man pattern
@@ -347,7 +353,7 @@ module SQA
347
353
  validate_prices!(low)
348
354
  validate_prices!(close)
349
355
 
350
- TALibFFI.cdlhangingman(open, high, low, close)
356
+ Native.cdlhangingman([open, high, low, close])
351
357
  end
352
358
 
353
359
  # Harami Cross pattern
@@ -358,7 +364,7 @@ module SQA
358
364
  validate_prices!(low)
359
365
  validate_prices!(close)
360
366
 
361
- TALibFFI.cdlharamicross(open, high, low, close)
367
+ Native.cdlharamicross([open, high, low, close])
362
368
  end
363
369
 
364
370
  # High-Wave Candle pattern
@@ -369,7 +375,7 @@ module SQA
369
375
  validate_prices!(low)
370
376
  validate_prices!(close)
371
377
 
372
- TALibFFI.cdlhighwave(open, high, low, close)
378
+ Native.cdlhighwave([open, high, low, close])
373
379
  end
374
380
 
375
381
  # Hikkake pattern
@@ -380,7 +386,7 @@ module SQA
380
386
  validate_prices!(low)
381
387
  validate_prices!(close)
382
388
 
383
- TALibFFI.cdlhikkake(open, high, low, close)
389
+ Native.cdlhikkake([open, high, low, close])
384
390
  end
385
391
 
386
392
  # Modified Hikkake pattern
@@ -391,7 +397,7 @@ module SQA
391
397
  validate_prices!(low)
392
398
  validate_prices!(close)
393
399
 
394
- TALibFFI.cdlhikkakemod(open, high, low, close)
400
+ Native.cdlhikkakemod([open, high, low, close])
395
401
  end
396
402
 
397
403
  # Homing Pigeon pattern
@@ -402,7 +408,7 @@ module SQA
402
408
  validate_prices!(low)
403
409
  validate_prices!(close)
404
410
 
405
- TALibFFI.cdlhomingpigeon(open, high, low, close)
411
+ Native.cdlhomingpigeon([open, high, low, close])
406
412
  end
407
413
 
408
414
  # Identical Three Crows pattern
@@ -413,7 +419,7 @@ module SQA
413
419
  validate_prices!(low)
414
420
  validate_prices!(close)
415
421
 
416
- TALibFFI.cdlidentical3crows(open, high, low, close)
422
+ Native.cdlidentical3crows([open, high, low, close])
417
423
  end
418
424
 
419
425
  # In-Neck pattern
@@ -424,7 +430,7 @@ module SQA
424
430
  validate_prices!(low)
425
431
  validate_prices!(close)
426
432
 
427
- TALibFFI.cdlinneck(open, high, low, close)
433
+ Native.cdlinneck([open, high, low, close])
428
434
  end
429
435
 
430
436
  # Inverted Hammer pattern
@@ -435,7 +441,7 @@ module SQA
435
441
  validate_prices!(low)
436
442
  validate_prices!(close)
437
443
 
438
- TALibFFI.cdlinvertedhammer(open, high, low, close)
444
+ Native.cdlinvertedhammer([open, high, low, close])
439
445
  end
440
446
 
441
447
  # Kicking pattern
@@ -446,7 +452,7 @@ module SQA
446
452
  validate_prices!(low)
447
453
  validate_prices!(close)
448
454
 
449
- TALibFFI.cdlkicking(open, high, low, close)
455
+ Native.cdlkicking([open, high, low, close])
450
456
  end
451
457
 
452
458
  # Kicking - bull/bear determined by the longer marubozu
@@ -457,7 +463,7 @@ module SQA
457
463
  validate_prices!(low)
458
464
  validate_prices!(close)
459
465
 
460
- TALibFFI.cdlkickingbylength(open, high, low, close)
466
+ Native.cdlkickingbylength([open, high, low, close])
461
467
  end
462
468
 
463
469
  # Ladder Bottom pattern
@@ -468,7 +474,7 @@ module SQA
468
474
  validate_prices!(low)
469
475
  validate_prices!(close)
470
476
 
471
- TALibFFI.cdlladderbottom(open, high, low, close)
477
+ Native.cdlladderbottom([open, high, low, close])
472
478
  end
473
479
 
474
480
  # Long Legged Doji pattern
@@ -479,7 +485,7 @@ module SQA
479
485
  validate_prices!(low)
480
486
  validate_prices!(close)
481
487
 
482
- TALibFFI.cdllongleggeddoji(open, high, low, close)
488
+ Native.cdllongleggeddoji([open, high, low, close])
483
489
  end
484
490
 
485
491
  # Long Line Candle pattern
@@ -490,7 +496,7 @@ module SQA
490
496
  validate_prices!(low)
491
497
  validate_prices!(close)
492
498
 
493
- TALibFFI.cdllongline(open, high, low, close)
499
+ Native.cdllongline([open, high, low, close])
494
500
  end
495
501
 
496
502
  # Matching Low pattern
@@ -501,7 +507,7 @@ module SQA
501
507
  validate_prices!(low)
502
508
  validate_prices!(close)
503
509
 
504
- TALibFFI.cdlmatchinglow(open, high, low, close)
510
+ Native.cdlmatchinglow([open, high, low, close])
505
511
  end
506
512
 
507
513
  # Mat Hold pattern
@@ -512,7 +518,7 @@ module SQA
512
518
  validate_prices!(low)
513
519
  validate_prices!(close)
514
520
 
515
- TALibFFI.cdlmathold(open, high, low, close, penetration: penetration)
521
+ Native.cdlmathold([open, high, low, close], penetration: penetration)
516
522
  end
517
523
 
518
524
  # Morning Doji Star pattern
@@ -523,7 +529,7 @@ module SQA
523
529
  validate_prices!(low)
524
530
  validate_prices!(close)
525
531
 
526
- TALibFFI.cdlmorningdojistar(open, high, low, close, penetration: penetration)
532
+ Native.cdlmorningdojistar([open, high, low, close], penetration: penetration)
527
533
  end
528
534
 
529
535
  # On-Neck pattern
@@ -534,7 +540,7 @@ module SQA
534
540
  validate_prices!(low)
535
541
  validate_prices!(close)
536
542
 
537
- TALibFFI.cdlonneck(open, high, low, close)
543
+ Native.cdlonneck([open, high, low, close])
538
544
  end
539
545
 
540
546
  # Rickshaw Man pattern
@@ -545,7 +551,7 @@ module SQA
545
551
  validate_prices!(low)
546
552
  validate_prices!(close)
547
553
 
548
- TALibFFI.cdlrickshawman(open, high, low, close)
554
+ Native.cdlrickshawman([open, high, low, close])
549
555
  end
550
556
 
551
557
  # Rising/Falling Three Methods pattern
@@ -556,7 +562,7 @@ module SQA
556
562
  validate_prices!(low)
557
563
  validate_prices!(close)
558
564
 
559
- TALibFFI.cdlrisefall3methods(open, high, low, close)
565
+ Native.cdlrisefall3methods([open, high, low, close])
560
566
  end
561
567
 
562
568
  # Separating Lines pattern
@@ -567,7 +573,7 @@ module SQA
567
573
  validate_prices!(low)
568
574
  validate_prices!(close)
569
575
 
570
- TALibFFI.cdlseparatinglines(open, high, low, close)
576
+ Native.cdlseparatinglines([open, high, low, close])
571
577
  end
572
578
 
573
579
  # Short Line Candle pattern
@@ -578,7 +584,7 @@ module SQA
578
584
  validate_prices!(low)
579
585
  validate_prices!(close)
580
586
 
581
- TALibFFI.cdlshortline(open, high, low, close)
587
+ Native.cdlshortline([open, high, low, close])
582
588
  end
583
589
 
584
590
  # Stalled Pattern
@@ -589,7 +595,7 @@ module SQA
589
595
  validate_prices!(low)
590
596
  validate_prices!(close)
591
597
 
592
- TALibFFI.cdlstalledpattern(open, high, low, close)
598
+ Native.cdlstalledpattern([open, high, low, close])
593
599
  end
594
600
 
595
601
  # Stick Sandwich pattern
@@ -600,7 +606,7 @@ module SQA
600
606
  validate_prices!(low)
601
607
  validate_prices!(close)
602
608
 
603
- TALibFFI.cdlsticksandwich(open, high, low, close)
609
+ Native.cdlsticksandwich([open, high, low, close])
604
610
  end
605
611
 
606
612
  # Takuri (Dragonfly Doji with very long lower shadow) pattern
@@ -611,7 +617,7 @@ module SQA
611
617
  validate_prices!(low)
612
618
  validate_prices!(close)
613
619
 
614
- TALibFFI.cdltakuri(open, high, low, close)
620
+ Native.cdltakuri([open, high, low, close])
615
621
  end
616
622
 
617
623
  # Tasuki Gap pattern
@@ -622,7 +628,7 @@ module SQA
622
628
  validate_prices!(low)
623
629
  validate_prices!(close)
624
630
 
625
- TALibFFI.cdltasukigap(open, high, low, close)
631
+ Native.cdltasukigap([open, high, low, close])
626
632
  end
627
633
 
628
634
  # Thrusting pattern
@@ -633,7 +639,7 @@ module SQA
633
639
  validate_prices!(low)
634
640
  validate_prices!(close)
635
641
 
636
- TALibFFI.cdlthrusting(open, high, low, close)
642
+ Native.cdlthrusting([open, high, low, close])
637
643
  end
638
644
 
639
645
  # Tristar pattern
@@ -644,7 +650,7 @@ module SQA
644
650
  validate_prices!(low)
645
651
  validate_prices!(close)
646
652
 
647
- TALibFFI.cdltristar(open, high, low, close)
653
+ Native.cdltristar([open, high, low, close])
648
654
  end
649
655
 
650
656
  # Unique 3 River pattern
@@ -655,7 +661,7 @@ module SQA
655
661
  validate_prices!(low)
656
662
  validate_prices!(close)
657
663
 
658
- TALibFFI.cdlunique3river(open, high, low, close)
664
+ Native.cdlunique3river([open, high, low, close])
659
665
  end
660
666
 
661
667
  # Upside Gap Two Crows pattern
@@ -666,7 +672,7 @@ module SQA
666
672
  validate_prices!(low)
667
673
  validate_prices!(close)
668
674
 
669
- TALibFFI.cdlupsidegap2crows(open, high, low, close)
675
+ Native.cdlupsidegap2crows([open, high, low, close])
670
676
  end
671
677
 
672
678
  # Upside/Downside Gap Three Methods pattern
@@ -677,7 +683,7 @@ module SQA
677
683
  validate_prices!(low)
678
684
  validate_prices!(close)
679
685
 
680
- TALibFFI.cdlxsidegap3methods(open, high, low, close)
686
+ Native.cdlxsidegap3methods([open, high, low, close])
681
687
  end
682
688
  end
683
689
  end
@@ -3,6 +3,12 @@
3
3
  module SQA
4
4
  module TAI
5
5
  # Price Transform
6
+ #
7
+ # :reek:DataClump -- these methods intentionally mirror TA-Lib's own
8
+ # C function signatures (high/low/close as separate positional args);
9
+ # bundling them into a value object would be a breaking public API
10
+ # change for this gem and its downstream consumers (sqa, sqa-cli,
11
+ # sqa-advisor) and their 133 published indicator doc pages.
6
12
  module PriceTransform
7
13
  # Average Price
8
14
  # @param open [Array<Float>] Open prices
@@ -17,7 +23,7 @@ module SQA
17
23
  validate_prices!(low)
18
24
  validate_prices!(close)
19
25
 
20
- TALibFFI.avgprice(open, high, low, close)
26
+ Native.avgprice([open, high, low, close])
21
27
  end
22
28
 
23
29
  # Median Price
@@ -29,7 +35,7 @@ module SQA
29
35
  validate_prices!(high)
30
36
  validate_prices!(low)
31
37
 
32
- TALibFFI.medprice(high, low)
38
+ Native.medprice([high, low])
33
39
  end
34
40
 
35
41
  # Typical Price
@@ -43,7 +49,7 @@ module SQA
43
49
  validate_prices!(low)
44
50
  validate_prices!(close)
45
51
 
46
- TALibFFI.typprice(high, low, close)
52
+ Native.typprice([high, low, close])
47
53
  end
48
54
 
49
55
  # Weighted Close Price
@@ -57,7 +63,7 @@ module SQA
57
63
  validate_prices!(low)
58
64
  validate_prices!(close)
59
65
 
60
- TALibFFI.wclprice(high, low, close)
66
+ Native.wclprice([high, low, close])
61
67
  end
62
68
  end
63
69
  end
@@ -5,31 +5,31 @@ module SQA
5
5
  # Statistical Functions
6
6
  module StatisticalFunctions
7
7
  # Pearson's Correlation Coefficient
8
- # @param prices1 [Array<Float>] First array of prices
9
- # @param prices2 [Array<Float>] Second array of prices
8
+ # @param prices_1 [Array<Float>] First array of prices
9
+ # @param prices_2 [Array<Float>] Second array of prices
10
10
  # @param period [Integer] Time period (default: 30)
11
11
  # @return [Array<Float>] Correlation values
12
- def correl(prices1, prices2, period: 30)
12
+ def correl(prices_1, prices_2, period: 30)
13
13
  check_available!
14
- validate_prices!(prices1)
15
- validate_prices!(prices2)
16
- validate_period!(period, [prices1.size, prices2.size].min)
14
+ validate_prices!(prices_1)
15
+ validate_prices!(prices_2)
16
+ validate_period!(period, [prices_1.size, prices_2.size].min)
17
17
 
18
- TALibFFI.correl(prices1, prices2, time_period: period)
18
+ Native.correl(prices_1, prices_2, time_period: period)
19
19
  end
20
20
 
21
21
  # Beta
22
- # @param prices1 [Array<Float>] First array of prices
23
- # @param prices2 [Array<Float>] Second array of prices
22
+ # @param prices_1 [Array<Float>] First array of prices
23
+ # @param prices_2 [Array<Float>] Second array of prices
24
24
  # @param period [Integer] Time period (default: 5)
25
25
  # @return [Array<Float>] Beta values
26
- def beta(prices1, prices2, period: 5)
26
+ def beta(prices_1, prices_2, period: 5)
27
27
  check_available!
28
- validate_prices!(prices1)
29
- validate_prices!(prices2)
30
- validate_period!(period, [prices1.size, prices2.size].min)
28
+ validate_prices!(prices_1)
29
+ validate_prices!(prices_2)
30
+ validate_period!(period, [prices_1.size, prices_2.size].min)
31
31
 
32
- TALibFFI.beta(prices1, prices2, time_period: period)
32
+ Native.beta(prices_1, prices_2, time_period: period)
33
33
  end
34
34
 
35
35
  # Variance
@@ -42,7 +42,7 @@ module SQA
42
42
  validate_prices!(prices)
43
43
  validate_period!(period, prices.size)
44
44
 
45
- TALibFFI.var(prices, time_period: period, nbdev: nbdev)
45
+ Native.var(prices, time_period: period, nbdev:)
46
46
  end
47
47
 
48
48
  # Standard Deviation
@@ -55,7 +55,7 @@ module SQA
55
55
  validate_prices!(prices)
56
56
  validate_period!(period, prices.size)
57
57
 
58
- TALibFFI.stddev(prices, time_period: period, nbdev: nbdev)
58
+ Native.stddev(prices, time_period: period, nbdev:)
59
59
  end
60
60
 
61
61
  # Linear Regression
@@ -67,7 +67,7 @@ module SQA
67
67
  validate_prices!(prices)
68
68
  validate_period!(period, prices.size)
69
69
 
70
- TALibFFI.linearreg(prices, time_period: period)
70
+ Native.linearreg(prices, time_period: period)
71
71
  end
72
72
 
73
73
  # Linear Regression Angle
@@ -79,7 +79,7 @@ module SQA
79
79
  validate_prices!(prices)
80
80
  validate_period!(period, prices.size)
81
81
 
82
- TALibFFI.linearreg_angle(prices, time_period: period)
82
+ Native.linearreg_angle(prices, time_period: period)
83
83
  end
84
84
 
85
85
  # Linear Regression Intercept
@@ -91,7 +91,7 @@ module SQA
91
91
  validate_prices!(prices)
92
92
  validate_period!(period, prices.size)
93
93
 
94
- TALibFFI.linearreg_intercept(prices, time_period: period)
94
+ Native.linearreg_intercept(prices, time_period: period)
95
95
  end
96
96
 
97
97
  # Linear Regression Slope
@@ -103,7 +103,7 @@ module SQA
103
103
  validate_prices!(prices)
104
104
  validate_period!(period, prices.size)
105
105
 
106
- TALibFFI.linearreg_slope(prices, time_period: period)
106
+ Native.linearreg_slope(prices, time_period: period)
107
107
  end
108
108
 
109
109
  # Time Series Forecast
@@ -115,7 +115,7 @@ module SQA
115
115
  validate_prices!(prices)
116
116
  validate_period!(period, prices.size)
117
117
 
118
- TALibFFI.tsf(prices, time_period: period)
118
+ Native.tsf(prices, time_period: period)
119
119
  end
120
120
  end
121
121
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module SQA
4
4
  module TAI
5
- VERSION = "0.1.2"
5
+ VERSION = "0.4.0"
6
6
  end
7
7
  end