sqa 0.0.37 → 0.0.38
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +62 -0
- data/docs/api-reference/alphavantageapi.md +105 -105
- data/docs/api-reference/apierror.md +2 -2
- data/docs/api-reference/index.md +2 -2
- data/docs/api-reference/notimplemented.md +2 -2
- data/docs/api-reference/sqa.md +12 -12
- data/docs/api-reference/sqa_backtest.md +43 -9
- data/docs/api-reference/sqa_backtest_results.md +34 -34
- data/docs/api-reference/sqa_badparametererror.md +1 -1
- data/docs/api-reference/sqa_config.md +31 -31
- data/docs/api-reference/sqa_configurationerror.md +1 -1
- data/docs/api-reference/sqa_datafetcherror.md +3 -3
- data/docs/api-reference/sqa_dataframe.md +63 -36
- data/docs/api-reference/sqa_dataframe_alphavantage.md +2 -2
- data/docs/api-reference/sqa_dataframe_data.md +18 -18
- data/docs/api-reference/sqa_dataframe_yahoofinance.md +2 -2
- data/docs/api-reference/sqa_ensemble.md +21 -21
- data/docs/api-reference/sqa_fpop.md +8 -8
- data/docs/api-reference/sqa_geneticprogram.md +20 -20
- data/docs/api-reference/sqa_geneticprogram_individual.md +8 -8
- data/docs/api-reference/sqa_marketregime.md +10 -10
- data/docs/api-reference/sqa_multitimeframe.md +11 -11
- data/docs/api-reference/sqa_patternmatcher.md +9 -9
- data/docs/api-reference/sqa_pluginmanager.md +4 -4
- data/docs/api-reference/sqa_portfolio.md +84 -27
- data/docs/api-reference/sqa_portfolio_position.md +12 -12
- data/docs/api-reference/sqa_portfolio_trade.md +16 -16
- data/docs/api-reference/sqa_portfoliooptimizer.md +10 -10
- data/docs/api-reference/sqa_riskmanager.md +12 -12
- data/docs/api-reference/sqa_seasonalanalyzer.md +6 -6
- data/docs/api-reference/sqa_sectoranalyzer.md +9 -9
- data/docs/api-reference/sqa_stock.md +48 -36
- data/docs/api-reference/sqa_strategy.md +8 -8
- data/docs/api-reference/sqa_strategy_bollingerbands.md +2 -2
- data/docs/api-reference/sqa_strategy_common.md +3 -3
- data/docs/api-reference/sqa_strategy_consensus.md +12 -12
- data/docs/api-reference/sqa_strategy_ema.md +4 -4
- data/docs/api-reference/sqa_strategy_kbs.md +11 -11
- data/docs/api-reference/sqa_strategy_macd.md +2 -2
- data/docs/api-reference/sqa_strategy_mp.md +4 -4
- data/docs/api-reference/sqa_strategy_mr.md +4 -4
- data/docs/api-reference/sqa_strategy_random.md +4 -4
- data/docs/api-reference/sqa_strategy_rsi.md +4 -4
- data/docs/api-reference/sqa_strategy_sma.md +4 -4
- data/docs/api-reference/sqa_strategy_stochastic.md +2 -2
- data/docs/api-reference/sqa_strategy_volumebreakout.md +2 -2
- data/docs/api-reference/sqa_strategygenerator.md +19 -19
- data/docs/api-reference/sqa_strategygenerator_pattern.md +17 -17
- data/docs/api-reference/sqa_strategygenerator_patterncontext.md +21 -21
- data/docs/api-reference/sqa_strategygenerator_profitablepoint.md +27 -27
- data/docs/api-reference/sqa_stream.md +18 -18
- data/docs/api-reference/sqa_ticker.md +8 -8
- data/docs/api-reference/string.md +11 -11
- data/docs/file_formats.md +250 -0
- data/lib/sqa/backtest.rb +32 -0
- data/lib/sqa/data_frame.rb +25 -0
- data/lib/sqa/portfolio.rb +54 -0
- data/lib/sqa/stock.rb +11 -0
- data/lib/sqa/version.rb +1 -1
- data/mkdocs.yml +1 -0
- metadata +2 -2
- data/docs/IMPROVEMENT_PLAN.md +0 -531
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
This is the primary domain object for interacting with stock data.
|
|
6
6
|
|
|
7
7
|
!!! abstract "Source Information"
|
|
8
|
-
**Defined in:** `lib/sqa/stock.rb:14`
|
|
8
|
+
**Defined in:** [`lib/sqa/stock.rb:14`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L14)
|
|
9
9
|
|
|
10
10
|
**Inherits from:** `Object`
|
|
11
11
|
|
|
@@ -26,7 +26,7 @@ Allows injection of custom connections for testing or different configurations.
|
|
|
26
26
|
The current connection instance
|
|
27
27
|
|
|
28
28
|
??? info "Source Location"
|
|
29
|
-
`lib/sqa/stock.rb:30`
|
|
29
|
+
[`lib/sqa/stock.rb:30`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L30)
|
|
30
30
|
|
|
31
31
|
---
|
|
32
32
|
|
|
@@ -49,7 +49,7 @@ Useful for testing with mocks/stubs or configuring different API endpoints.
|
|
|
49
49
|
The connection that was set
|
|
50
50
|
|
|
51
51
|
??? info "Source Location"
|
|
52
|
-
`lib/sqa/stock.rb:39`
|
|
52
|
+
[`lib/sqa/stock.rb:39`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L39)
|
|
53
53
|
|
|
54
54
|
---
|
|
55
55
|
|
|
@@ -67,7 +67,7 @@ Creates the default Faraday connection to Alpha Vantage.
|
|
|
67
67
|
A new connection to Alpha Vantage API
|
|
68
68
|
|
|
69
69
|
??? info "Source Location"
|
|
70
|
-
`lib/sqa/stock.rb:46`
|
|
70
|
+
[`lib/sqa/stock.rb:46`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L46)
|
|
71
71
|
|
|
72
72
|
---
|
|
73
73
|
|
|
@@ -84,7 +84,7 @@ Useful for testing cleanup to ensure fresh state between tests.
|
|
|
84
84
|
|
|
85
85
|
|
|
86
86
|
??? info "Source Location"
|
|
87
|
-
`lib/sqa/stock.rb:54`
|
|
87
|
+
[`lib/sqa/stock.rb:54`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L54)
|
|
88
88
|
|
|
89
89
|
---
|
|
90
90
|
|
|
@@ -109,7 +109,7 @@ Results are cached after the first call.
|
|
|
109
109
|
top.top_losers.first.ticker # => "XYZ"
|
|
110
110
|
```
|
|
111
111
|
??? info "Source Location"
|
|
112
|
-
`lib/sqa/stock.rb:341`
|
|
112
|
+
[`lib/sqa/stock.rb:341`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L341)
|
|
113
113
|
|
|
114
114
|
---
|
|
115
115
|
|
|
@@ -126,7 +126,7 @@ Useful for testing or forcing a refresh.
|
|
|
126
126
|
|
|
127
127
|
|
|
128
128
|
??? info "Source Location"
|
|
129
|
-
`lib/sqa/stock.rb:372`
|
|
129
|
+
[`lib/sqa/stock.rb:372`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L372)
|
|
130
130
|
|
|
131
131
|
---
|
|
132
132
|
|
|
@@ -144,7 +144,7 @@ Useful for testing or forcing a refresh.
|
|
|
144
144
|
Stock metadata (ticker, name, exchange, etc.)
|
|
145
145
|
|
|
146
146
|
??? info "Source Location"
|
|
147
|
-
`lib/sqa/stock.rb:69`
|
|
147
|
+
[`lib/sqa/stock.rb:69`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L69)
|
|
148
148
|
|
|
149
149
|
---
|
|
150
150
|
|
|
@@ -160,7 +160,7 @@ Useful for testing or forcing a refresh.
|
|
|
160
160
|
Stock metadata (ticker, name, exchange, etc.)
|
|
161
161
|
|
|
162
162
|
??? info "Source Location"
|
|
163
|
-
`lib/sqa/stock.rb:69`
|
|
163
|
+
[`lib/sqa/stock.rb:69`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L69)
|
|
164
164
|
|
|
165
165
|
---
|
|
166
166
|
|
|
@@ -176,7 +176,7 @@ Useful for testing or forcing a refresh.
|
|
|
176
176
|
Price and volume data as a DataFrame
|
|
177
177
|
|
|
178
178
|
??? info "Source Location"
|
|
179
|
-
`lib/sqa/stock.rb:69`
|
|
179
|
+
[`lib/sqa/stock.rb:69`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L69)
|
|
180
180
|
|
|
181
181
|
---
|
|
182
182
|
|
|
@@ -192,7 +192,7 @@ Useful for testing or forcing a refresh.
|
|
|
192
192
|
Price and volume data as a DataFrame
|
|
193
193
|
|
|
194
194
|
??? info "Source Location"
|
|
195
|
-
`lib/sqa/stock.rb:69`
|
|
195
|
+
[`lib/sqa/stock.rb:69`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L69)
|
|
196
196
|
|
|
197
197
|
---
|
|
198
198
|
|
|
@@ -208,7 +208,7 @@ Useful for testing or forcing a refresh.
|
|
|
208
208
|
The data source class (e.g., SQA::DataFrame::AlphaVantage)
|
|
209
209
|
|
|
210
210
|
??? info "Source Location"
|
|
211
|
-
`lib/sqa/stock.rb:69`
|
|
211
|
+
[`lib/sqa/stock.rb:69`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L69)
|
|
212
212
|
|
|
213
213
|
---
|
|
214
214
|
|
|
@@ -224,7 +224,7 @@ Useful for testing or forcing a refresh.
|
|
|
224
224
|
The data source class (e.g., SQA::DataFrame::AlphaVantage)
|
|
225
225
|
|
|
226
226
|
??? info "Source Location"
|
|
227
|
-
`lib/sqa/stock.rb:69`
|
|
227
|
+
[`lib/sqa/stock.rb:69`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L69)
|
|
228
228
|
|
|
229
229
|
---
|
|
230
230
|
|
|
@@ -240,7 +240,7 @@ Useful for testing or forcing a refresh.
|
|
|
240
240
|
Column transformers for data normalization
|
|
241
241
|
|
|
242
242
|
??? info "Source Location"
|
|
243
|
-
`lib/sqa/stock.rb:69`
|
|
243
|
+
[`lib/sqa/stock.rb:69`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L69)
|
|
244
244
|
|
|
245
245
|
---
|
|
246
246
|
|
|
@@ -256,7 +256,7 @@ Useful for testing or forcing a refresh.
|
|
|
256
256
|
Column transformers for data normalization
|
|
257
257
|
|
|
258
258
|
??? info "Source Location"
|
|
259
|
-
`lib/sqa/stock.rb:69`
|
|
259
|
+
[`lib/sqa/stock.rb:69`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L69)
|
|
260
260
|
|
|
261
261
|
---
|
|
262
262
|
|
|
@@ -272,7 +272,7 @@ Useful for testing or forcing a refresh.
|
|
|
272
272
|
Optional trading strategy attached to this stock
|
|
273
273
|
|
|
274
274
|
??? info "Source Location"
|
|
275
|
-
`lib/sqa/stock.rb:69`
|
|
275
|
+
[`lib/sqa/stock.rb:69`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L69)
|
|
276
276
|
|
|
277
277
|
---
|
|
278
278
|
|
|
@@ -288,7 +288,7 @@ Sets the attribute strategy
|
|
|
288
288
|
|
|
289
289
|
|
|
290
290
|
??? info "Source Location"
|
|
291
|
-
`lib/sqa/stock.rb:69`
|
|
291
|
+
[`lib/sqa/stock.rb:69`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L69)
|
|
292
292
|
|
|
293
293
|
---
|
|
294
294
|
|
|
@@ -316,7 +316,7 @@ Creates a new Stock instance and loads or fetches its data.
|
|
|
316
316
|
stock = SQA::Stock.new(ticker: 'GOOG', source: :yahoo_finance)
|
|
317
317
|
```
|
|
318
318
|
??? info "Source Location"
|
|
319
|
-
`lib/sqa/stock.rb:81`
|
|
319
|
+
[`lib/sqa/stock.rb:81`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L81)
|
|
320
320
|
|
|
321
321
|
---
|
|
322
322
|
|
|
@@ -334,7 +334,7 @@ minimal structure and attempts to fetch overview from API.
|
|
|
334
334
|
|
|
335
335
|
|
|
336
336
|
??? info "Source Location"
|
|
337
|
-
`lib/sqa/stock.rb:107`
|
|
337
|
+
[`lib/sqa/stock.rb:107`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L107)
|
|
338
338
|
|
|
339
339
|
---
|
|
340
340
|
|
|
@@ -352,7 +352,7 @@ Creates a new minimal data structure for the stock.
|
|
|
352
352
|
The newly created data object
|
|
353
353
|
|
|
354
354
|
??? info "Source Location"
|
|
355
|
-
`lib/sqa/stock.rb:126`
|
|
355
|
+
[`lib/sqa/stock.rb:126`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L126)
|
|
356
356
|
|
|
357
357
|
---
|
|
358
358
|
|
|
@@ -367,9 +367,21 @@ Silently handles errors since overview data is optional.
|
|
|
367
367
|
**Type:** `void`
|
|
368
368
|
|
|
369
369
|
|
|
370
|
+
!!! example "Usage Examples"
|
|
370
371
|
|
|
372
|
+
```ruby
|
|
373
|
+
stock = SQA::Stock.new(ticker: 'AAPL')
|
|
374
|
+
stock.update # Fetches latest company overview data
|
|
375
|
+
stock.data.overview['market_capitalization'] # => 2500000000000
|
|
376
|
+
stock.data.overview['pe_ratio'] # => 28.5
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
```ruby
|
|
380
|
+
stock.update # No error raised if API is unavailable
|
|
381
|
+
# Warning logged but stock remains usable with cached data
|
|
382
|
+
```
|
|
371
383
|
??? info "Source Location"
|
|
372
|
-
`lib/sqa/stock.rb:134`
|
|
384
|
+
[`lib/sqa/stock.rb:134`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L134)
|
|
373
385
|
|
|
374
386
|
---
|
|
375
387
|
|
|
@@ -387,7 +399,7 @@ Persists the stock's metadata to a JSON file.
|
|
|
387
399
|
Number of bytes written
|
|
388
400
|
|
|
389
401
|
??? info "Source Location"
|
|
390
|
-
`lib/sqa/stock.rb:147`
|
|
402
|
+
[`lib/sqa/stock.rb:147`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L147)
|
|
391
403
|
|
|
392
404
|
---
|
|
393
405
|
|
|
@@ -403,7 +415,7 @@ Persists the stock's metadata to a JSON file.
|
|
|
403
415
|
The stock's ticker symbol
|
|
404
416
|
|
|
405
417
|
??? info "Source Location"
|
|
406
|
-
`lib/sqa/stock.rb:165`
|
|
418
|
+
[`lib/sqa/stock.rb:165`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L165)
|
|
407
419
|
|
|
408
420
|
---
|
|
409
421
|
|
|
@@ -419,7 +431,7 @@ Persists the stock's metadata to a JSON file.
|
|
|
419
431
|
The company name
|
|
420
432
|
|
|
421
433
|
??? info "Source Location"
|
|
422
|
-
`lib/sqa/stock.rb:165`
|
|
434
|
+
[`lib/sqa/stock.rb:165`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L165)
|
|
423
435
|
|
|
424
436
|
---
|
|
425
437
|
|
|
@@ -435,7 +447,7 @@ Persists the stock's metadata to a JSON file.
|
|
|
435
447
|
The exchange where the stock trades
|
|
436
448
|
|
|
437
449
|
??? info "Source Location"
|
|
438
|
-
`lib/sqa/stock.rb:165`
|
|
450
|
+
[`lib/sqa/stock.rb:165`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L165)
|
|
439
451
|
|
|
440
452
|
---
|
|
441
453
|
|
|
@@ -451,7 +463,7 @@ Persists the stock's metadata to a JSON file.
|
|
|
451
463
|
The data source (:alpha_vantage or :yahoo_finance)
|
|
452
464
|
|
|
453
465
|
??? info "Source Location"
|
|
454
|
-
`lib/sqa/stock.rb:165`
|
|
466
|
+
[`lib/sqa/stock.rb:165`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L165)
|
|
455
467
|
|
|
456
468
|
---
|
|
457
469
|
|
|
@@ -467,7 +479,7 @@ Persists the stock's metadata to a JSON file.
|
|
|
467
479
|
Cached indicator values
|
|
468
480
|
|
|
469
481
|
??? info "Source Location"
|
|
470
|
-
`lib/sqa/stock.rb:165`
|
|
482
|
+
[`lib/sqa/stock.rb:165`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L165)
|
|
471
483
|
|
|
472
484
|
---
|
|
473
485
|
|
|
@@ -481,7 +493,7 @@ Persists the stock's metadata to a JSON file.
|
|
|
481
493
|
|
|
482
494
|
|
|
483
495
|
??? info "Source Location"
|
|
484
|
-
`lib/sqa/stock.rb:165`
|
|
496
|
+
[`lib/sqa/stock.rb:165`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L165)
|
|
485
497
|
|
|
486
498
|
---
|
|
487
499
|
|
|
@@ -497,7 +509,7 @@ Persists the stock's metadata to a JSON file.
|
|
|
497
509
|
Company overview data from API
|
|
498
510
|
|
|
499
511
|
??? info "Source Location"
|
|
500
|
-
`lib/sqa/stock.rb:165`
|
|
512
|
+
[`lib/sqa/stock.rb:165`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L165)
|
|
501
513
|
|
|
502
514
|
---
|
|
503
515
|
|
|
@@ -515,7 +527,7 @@ Applies migrations for old data formats and updates with recent data.
|
|
|
515
527
|
|
|
516
528
|
|
|
517
529
|
??? info "Source Location"
|
|
518
|
-
`lib/sqa/stock.rb:173`
|
|
530
|
+
[`lib/sqa/stock.rb:173`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L173)
|
|
519
531
|
|
|
520
532
|
---
|
|
521
533
|
|
|
@@ -532,7 +544,7 @@ Only called if should_update? returns true.
|
|
|
532
544
|
|
|
533
545
|
|
|
534
546
|
??? info "Source Location"
|
|
535
|
-
`lib/sqa/stock.rb:228`
|
|
547
|
+
[`lib/sqa/stock.rb:228`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L228)
|
|
536
548
|
|
|
537
549
|
---
|
|
538
550
|
|
|
@@ -546,7 +558,7 @@ Only called if should_update? returns true.
|
|
|
546
558
|
|
|
547
559
|
|
|
548
560
|
??? info "Source Location"
|
|
549
|
-
`lib/sqa/stock.rb:250`
|
|
561
|
+
[`lib/sqa/stock.rb:250`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L250)
|
|
550
562
|
|
|
551
563
|
---
|
|
552
564
|
|
|
@@ -566,7 +578,7 @@ or data is already current.
|
|
|
566
578
|
true if update should proceed, false otherwise
|
|
567
579
|
|
|
568
580
|
??? info "Source Location"
|
|
569
|
-
`lib/sqa/stock.rb:260`
|
|
581
|
+
[`lib/sqa/stock.rb:260`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L260)
|
|
570
582
|
|
|
571
583
|
---
|
|
572
584
|
|
|
@@ -588,7 +600,7 @@ Returns a human-readable string representation of the stock.
|
|
|
588
600
|
stock.to_s # => "aapl with 252 data points from 2023-01-03 to 2023-12-29"
|
|
589
601
|
```
|
|
590
602
|
??? info "Source Location"
|
|
591
|
-
`lib/sqa/stock.rb:294`
|
|
603
|
+
[`lib/sqa/stock.rb:294`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L294)
|
|
592
604
|
|
|
593
605
|
---
|
|
594
606
|
|
|
@@ -612,7 +624,7 @@ This ensures compatibility with TA-Lib indicators which expect arrays in this or
|
|
|
612
624
|
stock.to_s # => "aapl with 252 data points from 2023-01-03 to 2023-12-29"
|
|
613
625
|
```
|
|
614
626
|
??? info "Source Location"
|
|
615
|
-
`lib/sqa/stock.rb:299`
|
|
627
|
+
[`lib/sqa/stock.rb:299`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L299)
|
|
616
628
|
|
|
617
629
|
---
|
|
618
630
|
|
|
@@ -631,7 +643,7 @@ Converts API response keys to snake_case and appropriate data types.
|
|
|
631
643
|
The merged overview data
|
|
632
644
|
|
|
633
645
|
??? info "Source Location"
|
|
634
|
-
`lib/sqa/stock.rb:306`
|
|
646
|
+
[`lib/sqa/stock.rb:306`](https://github.com/madbomber/sqa/blob/main/lib/sqa/stock.rb#L306)
|
|
635
647
|
|
|
636
648
|
---
|
|
637
649
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
methods are available in every trading strategy.
|
|
7
7
|
|
|
8
8
|
!!! abstract "Source Information"
|
|
9
|
-
**Defined in:** `lib/sqa/strategy.rb:16`
|
|
9
|
+
**Defined in:** [`lib/sqa/strategy.rb:16`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy.rb#L16)
|
|
10
10
|
|
|
11
11
|
**Inherits from:** `Object`
|
|
12
12
|
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
Collection of strategy trade methods
|
|
25
25
|
|
|
26
26
|
??? info "Source Location"
|
|
27
|
-
`lib/sqa/strategy.rb:19`
|
|
27
|
+
[`lib/sqa/strategy.rb:19`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy.rb#L19)
|
|
28
28
|
|
|
29
29
|
---
|
|
30
30
|
|
|
@@ -40,7 +40,7 @@ Sets the attribute strategies
|
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
??? info "Source Location"
|
|
43
|
-
`lib/sqa/strategy.rb:19`
|
|
43
|
+
[`lib/sqa/strategy.rb:19`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy.rb#L19)
|
|
44
44
|
|
|
45
45
|
---
|
|
46
46
|
|
|
@@ -58,7 +58,7 @@ Creates a new Strategy instance with an empty strategies collection.
|
|
|
58
58
|
a new instance of Strategy
|
|
59
59
|
|
|
60
60
|
??? info "Source Location"
|
|
61
|
-
`lib/sqa/strategy.rb:22`
|
|
61
|
+
[`lib/sqa/strategy.rb:22`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy.rb#L22)
|
|
62
62
|
|
|
63
63
|
---
|
|
64
64
|
|
|
@@ -89,7 +89,7 @@ Strategies must be either a Class with a .trade method or a Method object.
|
|
|
89
89
|
strategy.add(MyModule.method(:custom_trade))
|
|
90
90
|
```
|
|
91
91
|
??? info "Source Location"
|
|
92
|
-
`lib/sqa/strategy.rb:39`
|
|
92
|
+
[`lib/sqa/strategy.rb:39`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy.rb#L39)
|
|
93
93
|
|
|
94
94
|
---
|
|
95
95
|
|
|
@@ -116,7 +116,7 @@ Executes all registered strategies with the given data vector.
|
|
|
116
116
|
signals = strategy.execute(vector) # => [:buy, :hold, :sell]
|
|
117
117
|
```
|
|
118
118
|
??? info "Source Location"
|
|
119
|
-
`lib/sqa/strategy.rb:60`
|
|
119
|
+
[`lib/sqa/strategy.rb:60`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy.rb#L60)
|
|
120
120
|
|
|
121
121
|
---
|
|
122
122
|
|
|
@@ -145,7 +145,7 @@ Auto-loads strategy files from the strategy directory.
|
|
|
145
145
|
strategy.auto_load(only: [:rsi, :macd])
|
|
146
146
|
```
|
|
147
147
|
??? info "Source Location"
|
|
148
|
-
`lib/sqa/strategy.rb:79`
|
|
148
|
+
[`lib/sqa/strategy.rb:79`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy.rb#L79)
|
|
149
149
|
|
|
150
150
|
---
|
|
151
151
|
|
|
@@ -168,7 +168,7 @@ Returns all available strategy classes in the SQA::Strategy namespace.
|
|
|
168
168
|
# => [SQA::Strategy::RSI, SQA::Strategy::MACD, ...]
|
|
169
169
|
```
|
|
170
170
|
??? info "Source Location"
|
|
171
|
-
`lib/sqa/strategy.rb:108`
|
|
171
|
+
[`lib/sqa/strategy.rb:108`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy.rb#L108)
|
|
172
172
|
|
|
173
173
|
---
|
|
174
174
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
Sell when price touches upper band (overbought)
|
|
7
7
|
|
|
8
8
|
!!! abstract "Source Information"
|
|
9
|
-
**Defined in:** `lib/sqa/strategy/bollinger_bands.rb:8`
|
|
9
|
+
**Defined in:** [`lib/sqa/strategy/bollinger_bands.rb:8`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/bollinger_bands.rb#L8)
|
|
10
10
|
|
|
11
11
|
**Inherits from:** `Object`
|
|
12
12
|
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
??? info "Source Location"
|
|
21
|
-
`lib/sqa/strategy/bollinger_bands.rb:9`
|
|
21
|
+
[`lib/sqa/strategy/bollinger_bands.rb:9`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/bollinger_bands.rb#L9)
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# 🔧 SQA::Strategy::Common
|
|
2
2
|
|
|
3
3
|
!!! abstract "Source Information"
|
|
4
|
-
**Defined in:** `lib/sqa/strategy/common.rb:8`
|
|
4
|
+
**Defined in:** [`lib/sqa/strategy/common.rb:8`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/common.rb#L8)
|
|
5
5
|
|
|
6
6
|
## 🔨 Instance Methods
|
|
7
7
|
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
??? info "Source Location"
|
|
14
|
-
`lib/sqa/strategy/common.rb:9`
|
|
14
|
+
[`lib/sqa/strategy/common.rb:9`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/common.rb#L9)
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
??? info "Source Location"
|
|
24
|
-
`lib/sqa/strategy/common.rb:23`
|
|
24
|
+
[`lib/sqa/strategy/common.rb:23`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/common.rb#L23)
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# 📦 SQA::Strategy::Consensus
|
|
2
2
|
|
|
3
3
|
!!! abstract "Source Information"
|
|
4
|
-
**Defined in:** `lib/sqa/strategy/consensus.rb:5`
|
|
4
|
+
**Defined in:** [`lib/sqa/strategy/consensus.rb:5`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/consensus.rb#L5)
|
|
5
5
|
|
|
6
6
|
**Inherits from:** `Object`
|
|
7
7
|
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
??? info "Source Location"
|
|
16
|
-
`lib/sqa/strategy/consensus.rb:8`
|
|
16
|
+
[`lib/sqa/strategy/consensus.rb:8`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/consensus.rb#L8)
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
??? info "Source Location"
|
|
26
|
-
`lib/sqa/strategy/common.rb:9`
|
|
26
|
+
[`lib/sqa/strategy/common.rb:9`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/common.rb#L9)
|
|
27
27
|
|
|
28
28
|
---
|
|
29
29
|
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
??? info "Source Location"
|
|
36
|
-
`lib/sqa/strategy/common.rb:23`
|
|
36
|
+
[`lib/sqa/strategy/common.rb:23`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/common.rb#L23)
|
|
37
37
|
|
|
38
38
|
---
|
|
39
39
|
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
a new instance of Consensus
|
|
52
52
|
|
|
53
53
|
??? info "Source Location"
|
|
54
|
-
`lib/sqa/strategy/consensus.rb:12`
|
|
54
|
+
[`lib/sqa/strategy/consensus.rb:12`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/consensus.rb#L12)
|
|
55
55
|
|
|
56
56
|
---
|
|
57
57
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
|
|
62
62
|
|
|
63
63
|
??? info "Source Location"
|
|
64
|
-
`lib/sqa/strategy/consensus.rb:17`
|
|
64
|
+
[`lib/sqa/strategy/consensus.rb:17`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/consensus.rb#L17)
|
|
65
65
|
|
|
66
66
|
---
|
|
67
67
|
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
|
|
72
72
|
|
|
73
73
|
??? info "Source Location"
|
|
74
|
-
`lib/sqa/strategy/consensus.rb:26`
|
|
74
|
+
[`lib/sqa/strategy/consensus.rb:26`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/consensus.rb#L26)
|
|
75
75
|
|
|
76
76
|
---
|
|
77
77
|
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
|
|
82
82
|
|
|
83
83
|
??? info "Source Location"
|
|
84
|
-
`lib/sqa/strategy/consensus.rb:41`
|
|
84
|
+
[`lib/sqa/strategy/consensus.rb:41`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/consensus.rb#L41)
|
|
85
85
|
|
|
86
86
|
---
|
|
87
87
|
|
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
|
|
92
92
|
|
|
93
93
|
??? info "Source Location"
|
|
94
|
-
`lib/sqa/strategy/consensus.rb:42`
|
|
94
|
+
[`lib/sqa/strategy/consensus.rb:42`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/consensus.rb#L42)
|
|
95
95
|
|
|
96
96
|
---
|
|
97
97
|
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
|
|
102
102
|
|
|
103
103
|
??? info "Source Location"
|
|
104
|
-
`lib/sqa/strategy/consensus.rb:43`
|
|
104
|
+
[`lib/sqa/strategy/consensus.rb:43`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/consensus.rb#L43)
|
|
105
105
|
|
|
106
106
|
---
|
|
107
107
|
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
|
|
112
112
|
|
|
113
113
|
??? info "Source Location"
|
|
114
|
-
`lib/sqa/strategy/consensus.rb:44`
|
|
114
|
+
[`lib/sqa/strategy/consensus.rb:44`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/consensus.rb#L44)
|
|
115
115
|
|
|
116
116
|
---
|
|
117
117
|
|
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
|
|
122
122
|
|
|
123
123
|
??? info "Source Location"
|
|
124
|
-
`lib/sqa/strategy/consensus.rb:45`
|
|
124
|
+
[`lib/sqa/strategy/consensus.rb:45`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/consensus.rb#L45)
|
|
125
125
|
|
|
126
126
|
---
|
|
127
127
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# 📦 SQA::Strategy::EMA
|
|
2
2
|
|
|
3
3
|
!!! abstract "Source Information"
|
|
4
|
-
**Defined in:** `lib/sqa/strategy/ema.rb:5`
|
|
4
|
+
**Defined in:** [`lib/sqa/strategy/ema.rb:5`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/ema.rb#L5)
|
|
5
5
|
|
|
6
6
|
**Inherits from:** `Object`
|
|
7
7
|
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
??? info "Source Location"
|
|
16
|
-
`lib/sqa/strategy/ema.rb:8`
|
|
16
|
+
[`lib/sqa/strategy/ema.rb:8`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/ema.rb#L8)
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
??? info "Source Location"
|
|
26
|
-
`lib/sqa/strategy/common.rb:9`
|
|
26
|
+
[`lib/sqa/strategy/common.rb:9`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/common.rb#L9)
|
|
27
27
|
|
|
28
28
|
---
|
|
29
29
|
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
??? info "Source Location"
|
|
36
|
-
`lib/sqa/strategy/common.rb:23`
|
|
36
|
+
[`lib/sqa/strategy/common.rb:23`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/common.rb#L23)
|
|
37
37
|
|
|
38
38
|
---
|
|
39
39
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# 📦 SQA::Strategy::KBS
|
|
2
2
|
|
|
3
3
|
!!! abstract "Source Information"
|
|
4
|
-
**Defined in:** `lib/sqa/strategy/kbs_strategy.rb:50`
|
|
4
|
+
**Defined in:** [`lib/sqa/strategy/kbs_strategy.rb:50`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/kbs_strategy.rb#L50)
|
|
5
5
|
|
|
6
6
|
**Inherits from:** `Object`
|
|
7
7
|
|
|
@@ -15,7 +15,7 @@ Main strategy interface - compatible with SQA::Strategy framework
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
??? info "Source Location"
|
|
18
|
-
`lib/sqa/strategy/kbs_strategy.rb:62`
|
|
18
|
+
[`lib/sqa/strategy/kbs_strategy.rb:62`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/kbs_strategy.rb#L62)
|
|
19
19
|
|
|
20
20
|
---
|
|
21
21
|
|
|
@@ -29,7 +29,7 @@ Returns the value of attribute kb.
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
??? info "Source Location"
|
|
32
|
-
`lib/sqa/strategy/kbs_strategy.rb:51`
|
|
32
|
+
[`lib/sqa/strategy/kbs_strategy.rb:51`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/kbs_strategy.rb#L51)
|
|
33
33
|
|
|
34
34
|
---
|
|
35
35
|
|
|
@@ -41,7 +41,7 @@ Returns the value of attribute default_rules_loaded.
|
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
??? info "Source Location"
|
|
44
|
-
`lib/sqa/strategy/kbs_strategy.rb:51`
|
|
44
|
+
[`lib/sqa/strategy/kbs_strategy.rb:51`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/kbs_strategy.rb#L51)
|
|
45
45
|
|
|
46
46
|
---
|
|
47
47
|
|
|
@@ -57,7 +57,7 @@ Returns the value of attribute default_rules_loaded.
|
|
|
57
57
|
a new instance of KBS
|
|
58
58
|
|
|
59
59
|
??? info "Source Location"
|
|
60
|
-
`lib/sqa/strategy/kbs_strategy.rb:53`
|
|
60
|
+
[`lib/sqa/strategy/kbs_strategy.rb:53`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/kbs_strategy.rb#L53)
|
|
61
61
|
|
|
62
62
|
---
|
|
63
63
|
|
|
@@ -69,7 +69,7 @@ Execute strategy with given market data
|
|
|
69
69
|
|
|
70
70
|
|
|
71
71
|
??? info "Source Location"
|
|
72
|
-
`lib/sqa/strategy/kbs_strategy.rb:68`
|
|
72
|
+
[`lib/sqa/strategy/kbs_strategy.rb:68`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/kbs_strategy.rb#L68)
|
|
73
73
|
|
|
74
74
|
---
|
|
75
75
|
|
|
@@ -90,7 +90,7 @@ Note: Use `kb.assert` in perform blocks, not just `assert`
|
|
|
90
90
|
|
|
91
91
|
|
|
92
92
|
??? info "Source Location"
|
|
93
|
-
`lib/sqa/strategy/kbs_strategy.rb:92`
|
|
93
|
+
[`lib/sqa/strategy/kbs_strategy.rb:92`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/kbs_strategy.rb#L92)
|
|
94
94
|
|
|
95
95
|
---
|
|
96
96
|
|
|
@@ -102,7 +102,7 @@ Assert a fact into working memory
|
|
|
102
102
|
|
|
103
103
|
|
|
104
104
|
??? info "Source Location"
|
|
105
|
-
`lib/sqa/strategy/kbs_strategy.rb:105`
|
|
105
|
+
[`lib/sqa/strategy/kbs_strategy.rb:105`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/kbs_strategy.rb#L105)
|
|
106
106
|
|
|
107
107
|
---
|
|
108
108
|
|
|
@@ -114,7 +114,7 @@ Query facts from working memory
|
|
|
114
114
|
|
|
115
115
|
|
|
116
116
|
??? info "Source Location"
|
|
117
|
-
`lib/sqa/strategy/kbs_strategy.rb:110`
|
|
117
|
+
[`lib/sqa/strategy/kbs_strategy.rb:110`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/kbs_strategy.rb#L110)
|
|
118
118
|
|
|
119
119
|
---
|
|
120
120
|
|
|
@@ -126,7 +126,7 @@ Print current working memory (for debugging)
|
|
|
126
126
|
|
|
127
127
|
|
|
128
128
|
??? info "Source Location"
|
|
129
|
-
`lib/sqa/strategy/kbs_strategy.rb:115`
|
|
129
|
+
[`lib/sqa/strategy/kbs_strategy.rb:115`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/kbs_strategy.rb#L115)
|
|
130
130
|
|
|
131
131
|
---
|
|
132
132
|
|
|
@@ -138,7 +138,7 @@ Print all rules (for debugging)
|
|
|
138
138
|
|
|
139
139
|
|
|
140
140
|
??? info "Source Location"
|
|
141
|
-
`lib/sqa/strategy/kbs_strategy.rb:120`
|
|
141
|
+
[`lib/sqa/strategy/kbs_strategy.rb:120`](https://github.com/madbomber/sqa/blob/main/lib/sqa/strategy/kbs_strategy.rb#L120)
|
|
142
142
|
|
|
143
143
|
---
|
|
144
144
|
|