@pineforge/codegen-pyodide 0.7.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.
Files changed (37) hide show
  1. package/README.md +25 -0
  2. package/index.mjs +20 -0
  3. package/package.json +32 -0
  4. package/pineforge_codegen/__init__.py +53 -0
  5. package/pineforge_codegen/analyzer/__init__.py +60 -0
  6. package/pineforge_codegen/analyzer/base.py +1566 -0
  7. package/pineforge_codegen/analyzer/call_handlers.py +895 -0
  8. package/pineforge_codegen/analyzer/contracts.py +163 -0
  9. package/pineforge_codegen/analyzer/diagnostics.py +118 -0
  10. package/pineforge_codegen/analyzer/tables.py +204 -0
  11. package/pineforge_codegen/analyzer/types.py +261 -0
  12. package/pineforge_codegen/ast_nodes.py +293 -0
  13. package/pineforge_codegen/codegen/__init__.py +78 -0
  14. package/pineforge_codegen/codegen/base.py +1381 -0
  15. package/pineforge_codegen/codegen/emit_top.py +875 -0
  16. package/pineforge_codegen/codegen/helpers.py +163 -0
  17. package/pineforge_codegen/codegen/helpers_syminfo.py +132 -0
  18. package/pineforge_codegen/codegen/input.py +189 -0
  19. package/pineforge_codegen/codegen/security.py +1564 -0
  20. package/pineforge_codegen/codegen/ta.py +298 -0
  21. package/pineforge_codegen/codegen/tables.py +683 -0
  22. package/pineforge_codegen/codegen/types.py +592 -0
  23. package/pineforge_codegen/codegen/visit_call.py +1387 -0
  24. package/pineforge_codegen/codegen/visit_expr.py +729 -0
  25. package/pineforge_codegen/codegen/visit_stmt.py +766 -0
  26. package/pineforge_codegen/errors.py +98 -0
  27. package/pineforge_codegen/lexer.py +531 -0
  28. package/pineforge_codegen/parser.py +1198 -0
  29. package/pineforge_codegen/pragmas.py +117 -0
  30. package/pineforge_codegen/signatures.py +808 -0
  31. package/pineforge_codegen/support_checker.py +1223 -0
  32. package/pineforge_codegen/symbols.py +118 -0
  33. package/pineforge_codegen/tokens.py +406 -0
  34. package/pineforge_codegen/tv_input_choices.py +86 -0
  35. package/pineforge_codegen-0.7.0.tar.gz +0 -0
  36. package/release.json +7 -0
  37. package/tables.json +1653 -0
package/tables.json ADDED
@@ -0,0 +1,1653 @@
1
+ {
2
+ "CODEGEN_VERSION": "0.7.0",
3
+ "TA_CLASS_MAP_KEYS": [
4
+ "sma",
5
+ "ema",
6
+ "rma",
7
+ "rsi",
8
+ "atr",
9
+ "tr",
10
+ "macd",
11
+ "stoch",
12
+ "crossover",
13
+ "crossunder",
14
+ "cross",
15
+ "highest",
16
+ "lowest",
17
+ "change",
18
+ "supertrend",
19
+ "dmi",
20
+ "sar",
21
+ "bb",
22
+ "kc",
23
+ "wma",
24
+ "hma",
25
+ "stdev",
26
+ "pivothigh",
27
+ "pivotlow",
28
+ "sum",
29
+ "linreg",
30
+ "percentrank",
31
+ "vwma",
32
+ "mom",
33
+ "roc",
34
+ "rising",
35
+ "falling",
36
+ "cci",
37
+ "cum",
38
+ "variance",
39
+ "median",
40
+ "highestbars",
41
+ "lowestbars",
42
+ "alma",
43
+ "swma",
44
+ "mfi",
45
+ "cmo",
46
+ "tsi",
47
+ "wpr",
48
+ "cog",
49
+ "bbw",
50
+ "kcw",
51
+ "barssince",
52
+ "valuewhen",
53
+ "correlation",
54
+ "percentile_nearest_rank",
55
+ "percentile_linear_interpolation",
56
+ "vwap",
57
+ "vwap_bands",
58
+ "obv",
59
+ "accdist",
60
+ "nvi",
61
+ "pvi",
62
+ "pvt",
63
+ "wad",
64
+ "wvad",
65
+ "iii",
66
+ "mode",
67
+ "range",
68
+ "dev",
69
+ "max",
70
+ "min",
71
+ "rci"
72
+ ],
73
+ "MATH_FUNC_MAP_KEYS": [
74
+ "abs",
75
+ "max",
76
+ "min",
77
+ "ceil",
78
+ "floor",
79
+ "round",
80
+ "sqrt",
81
+ "pow",
82
+ "log",
83
+ "log10",
84
+ "exp",
85
+ "sin",
86
+ "cos",
87
+ "tan",
88
+ "asin",
89
+ "acos",
90
+ "atan",
91
+ "atan2",
92
+ "sign",
93
+ "avg"
94
+ ],
95
+ "STR_FUNC_MAP_KEYS": [
96
+ "tostring",
97
+ "tonumber",
98
+ "length",
99
+ "contains",
100
+ "startswith",
101
+ "endswith",
102
+ "pos",
103
+ "substring",
104
+ "replace_all",
105
+ "replace",
106
+ "lower",
107
+ "upper",
108
+ "trim",
109
+ "repeat",
110
+ "match",
111
+ "split",
112
+ "format"
113
+ ],
114
+ "ARRAY_METHODS_KEYS": [
115
+ "get",
116
+ "set",
117
+ "push",
118
+ "unshift",
119
+ "insert",
120
+ "pop",
121
+ "shift",
122
+ "remove",
123
+ "first",
124
+ "last",
125
+ "size",
126
+ "clear",
127
+ "fill",
128
+ "includes",
129
+ "indexof",
130
+ "lastindexof",
131
+ "sort",
132
+ "reverse",
133
+ "copy",
134
+ "slice",
135
+ "concat",
136
+ "sum",
137
+ "avg",
138
+ "min",
139
+ "max",
140
+ "range",
141
+ "every",
142
+ "some",
143
+ "stdev",
144
+ "variance",
145
+ "median",
146
+ "mode",
147
+ "percentile_linear_interpolation",
148
+ "percentile_nearest_rank",
149
+ "percentrank",
150
+ "abs",
151
+ "join",
152
+ "standardize",
153
+ "covariance",
154
+ "binary_search",
155
+ "binary_search_leftmost",
156
+ "binary_search_rightmost",
157
+ "sort_indices"
158
+ ],
159
+ "MAP_METHODS_KEYS": [
160
+ "put",
161
+ "get",
162
+ "remove",
163
+ "contains",
164
+ "size",
165
+ "clear",
166
+ "keys",
167
+ "values",
168
+ "copy",
169
+ "put_all"
170
+ ],
171
+ "MATRIX_METHODS_KEYS": [
172
+ "get",
173
+ "set",
174
+ "fill",
175
+ "row",
176
+ "col",
177
+ "rows",
178
+ "columns",
179
+ "add_row",
180
+ "add_col",
181
+ "remove_row",
182
+ "remove_col",
183
+ "swap_rows",
184
+ "swap_columns",
185
+ "copy",
186
+ "submatrix",
187
+ "reshape",
188
+ "reverse",
189
+ "transpose",
190
+ "sort",
191
+ "concat",
192
+ "avg",
193
+ "min",
194
+ "max",
195
+ "mode",
196
+ "sum",
197
+ "diff",
198
+ "mult",
199
+ "pow",
200
+ "det",
201
+ "inv",
202
+ "pinv",
203
+ "rank",
204
+ "trace",
205
+ "eigenvalues",
206
+ "eigenvectors",
207
+ "kron",
208
+ "elements_count",
209
+ "is_square",
210
+ "is_identity",
211
+ "is_diagonal",
212
+ "is_antidiagonal",
213
+ "is_symmetric",
214
+ "is_antisymmetric",
215
+ "is_triangular",
216
+ "is_stochastic",
217
+ "is_binary",
218
+ "is_zero"
219
+ ],
220
+ "SYMINFO_MEMBER_MAP_KEYS": [
221
+ "mintick",
222
+ "pointvalue",
223
+ "ticker",
224
+ "tickerid",
225
+ "currency",
226
+ "basecurrency",
227
+ "type",
228
+ "timezone",
229
+ "session",
230
+ "volumetype",
231
+ "description",
232
+ "prefix",
233
+ "root",
234
+ "pricescale",
235
+ "minmove",
236
+ "mincontract",
237
+ "current_contract",
238
+ "expiration_date",
239
+ "isin",
240
+ "sector",
241
+ "industry",
242
+ "employees",
243
+ "shareholders",
244
+ "shares_outstanding_float",
245
+ "shares_outstanding_total",
246
+ "recommendations_buy",
247
+ "recommendations_buy_strong",
248
+ "recommendations_hold",
249
+ "recommendations_sell",
250
+ "recommendations_sell_strong",
251
+ "recommendations_total",
252
+ "recommendations_date",
253
+ "target_price_average",
254
+ "target_price_high",
255
+ "target_price_low",
256
+ "target_price_median",
257
+ "target_price_date",
258
+ "target_price_estimates",
259
+ "main_tickerid",
260
+ "country"
261
+ ],
262
+ "COLOR_CONST_MAP_KEYS": [
263
+ "red",
264
+ "green",
265
+ "blue",
266
+ "white",
267
+ "black",
268
+ "yellow",
269
+ "orange",
270
+ "purple",
271
+ "aqua",
272
+ "gray",
273
+ "lime",
274
+ "maroon",
275
+ "navy",
276
+ "olive",
277
+ "silver",
278
+ "teal",
279
+ "fuchsia"
280
+ ],
281
+ "BAR_FIELDS_KEYS": [
282
+ "close",
283
+ "open",
284
+ "high",
285
+ "low",
286
+ "volume"
287
+ ],
288
+ "BAR_BUILTINS_KEYS": [
289
+ "bar_index",
290
+ "time",
291
+ "time_close",
292
+ "timenow",
293
+ "last_bar_index",
294
+ "last_bar_time",
295
+ "time_tradingday",
296
+ "hl2",
297
+ "hlc3",
298
+ "hlcc4",
299
+ "ohlc4",
300
+ "hour",
301
+ "minute",
302
+ "second",
303
+ "dayofmonth",
304
+ "dayofweek",
305
+ "month",
306
+ "year",
307
+ "weekofyear"
308
+ ],
309
+ "SKIP_FUNC_NAMES": [
310
+ "alert",
311
+ "alertcondition",
312
+ "barcolor",
313
+ "bgcolor",
314
+ "fill",
315
+ "hline",
316
+ "plot",
317
+ "plotarrow",
318
+ "plotbar",
319
+ "plotcandle",
320
+ "plotchar",
321
+ "plotshape"
322
+ ],
323
+ "SKIP_NAMESPACES": [
324
+ "box",
325
+ "chart",
326
+ "display",
327
+ "label",
328
+ "line",
329
+ "linefill",
330
+ "polyline",
331
+ "position",
332
+ "size",
333
+ "table"
334
+ ],
335
+ "SKIP_VAR_TYPES": [
336
+ "table"
337
+ ],
338
+ "BUILTIN_NAMESPACE_NAMES": [
339
+ "adjustment",
340
+ "alert",
341
+ "array",
342
+ "backadjustment",
343
+ "barmerge",
344
+ "barstate",
345
+ "box",
346
+ "chart",
347
+ "color",
348
+ "currency",
349
+ "dayofweek",
350
+ "display",
351
+ "dividends",
352
+ "earnings",
353
+ "extend",
354
+ "font",
355
+ "format",
356
+ "hline",
357
+ "input",
358
+ "label",
359
+ "line",
360
+ "linefill",
361
+ "location",
362
+ "map",
363
+ "math",
364
+ "matrix",
365
+ "order",
366
+ "plot",
367
+ "polyline",
368
+ "position",
369
+ "request",
370
+ "runtime",
371
+ "scale",
372
+ "session",
373
+ "settlement_as_close",
374
+ "shape",
375
+ "size",
376
+ "splits",
377
+ "str",
378
+ "strategy",
379
+ "syminfo",
380
+ "ta",
381
+ "table",
382
+ "text",
383
+ "ticker",
384
+ "timeframe",
385
+ "xloc",
386
+ "yloc"
387
+ ],
388
+ "REALTIME_ONLY_VARS": [
389
+ "ask",
390
+ "bid"
391
+ ],
392
+ "TA_IMPLICIT_NOARG_COMPUTE_MEMBERS": [
393
+ "accdist",
394
+ "dmi",
395
+ "iii",
396
+ "nvi",
397
+ "obv",
398
+ "pivothigh",
399
+ "pivotlow",
400
+ "pvi",
401
+ "pvt",
402
+ "sar",
403
+ "supertrend",
404
+ "tr",
405
+ "wad",
406
+ "wpr",
407
+ "wvad"
408
+ ],
409
+ "STRATEGY_FUNCTIONS": [
410
+ "entry",
411
+ "order",
412
+ "exit",
413
+ "close",
414
+ "close_all",
415
+ "cancel",
416
+ "cancel_all",
417
+ "convert_to_account",
418
+ "convert_to_symbol",
419
+ "default_entry_qty"
420
+ ],
421
+ "INPUT_FUNCTIONS": [
422
+ "int",
423
+ "float",
424
+ "bool",
425
+ "string",
426
+ "source",
427
+ "color",
428
+ "timeframe",
429
+ "session",
430
+ "symbol",
431
+ "price",
432
+ "time",
433
+ "text_area",
434
+ "enum"
435
+ ],
436
+ "MATH_FUNCTIONS": [
437
+ "abs",
438
+ "ceil",
439
+ "floor",
440
+ "round",
441
+ "round_to_mintick",
442
+ "sign",
443
+ "max",
444
+ "min",
445
+ "avg",
446
+ "sum",
447
+ "pow",
448
+ "sqrt",
449
+ "exp",
450
+ "log",
451
+ "log10",
452
+ "random",
453
+ "sin",
454
+ "cos",
455
+ "tan",
456
+ "asin",
457
+ "acos",
458
+ "atan",
459
+ "atan2",
460
+ "todegrees",
461
+ "toradians"
462
+ ],
463
+ "MATH_CONSTANTS": [
464
+ "pi",
465
+ "e",
466
+ "phi",
467
+ "rphi"
468
+ ],
469
+ "FUNC_PARAM_NAMES": {
470
+ "ta.sma": [
471
+ "source",
472
+ "length"
473
+ ],
474
+ "ta.ema": [
475
+ "source",
476
+ "length"
477
+ ],
478
+ "ta.rma": [
479
+ "source",
480
+ "length"
481
+ ],
482
+ "ta.wma": [
483
+ "source",
484
+ "length"
485
+ ],
486
+ "ta.hma": [
487
+ "source",
488
+ "length"
489
+ ],
490
+ "ta.vwma": [
491
+ "source",
492
+ "length"
493
+ ],
494
+ "ta.alma": [
495
+ "source",
496
+ "length",
497
+ "offset",
498
+ "sigma"
499
+ ],
500
+ "ta.swma": [
501
+ "source"
502
+ ],
503
+ "ta.linreg": [
504
+ "source",
505
+ "length",
506
+ "offset"
507
+ ],
508
+ "ta.rsi": [
509
+ "source",
510
+ "length"
511
+ ],
512
+ "ta.stoch": [
513
+ "source",
514
+ "high",
515
+ "low",
516
+ "length"
517
+ ],
518
+ "ta.cci": [
519
+ "source",
520
+ "length"
521
+ ],
522
+ "ta.mfi": [
523
+ "series",
524
+ "length"
525
+ ],
526
+ "ta.mom": [
527
+ "source",
528
+ "length"
529
+ ],
530
+ "ta.roc": [
531
+ "source",
532
+ "length"
533
+ ],
534
+ "ta.cmo": [
535
+ "source",
536
+ "length"
537
+ ],
538
+ "ta.tsi": [
539
+ "source",
540
+ "short_length",
541
+ "long_length"
542
+ ],
543
+ "ta.wpr": [
544
+ "length"
545
+ ],
546
+ "ta.cog": [
547
+ "source",
548
+ "length"
549
+ ],
550
+ "ta.macd": [
551
+ "source",
552
+ "fastlen",
553
+ "slowlen",
554
+ "siglen"
555
+ ],
556
+ "ta.bb": [
557
+ "source",
558
+ "length",
559
+ "mult"
560
+ ],
561
+ "ta.kc": [
562
+ "source",
563
+ "length",
564
+ "mult"
565
+ ],
566
+ "ta.bbw": [
567
+ "source",
568
+ "length",
569
+ "mult"
570
+ ],
571
+ "ta.kcw": [
572
+ "source",
573
+ "length",
574
+ "mult"
575
+ ],
576
+ "ta.atr": [
577
+ "length"
578
+ ],
579
+ "ta.tr": [
580
+ "handle_na"
581
+ ],
582
+ "ta.stdev": [
583
+ "source",
584
+ "length"
585
+ ],
586
+ "ta.variance": [
587
+ "source",
588
+ "length"
589
+ ],
590
+ "ta.supertrend": [
591
+ "factor",
592
+ "atrPeriod"
593
+ ],
594
+ "ta.dmi": [
595
+ "diLength",
596
+ "adxSmoothing"
597
+ ],
598
+ "ta.sar": [
599
+ "start",
600
+ "inc",
601
+ "max"
602
+ ],
603
+ "ta.crossover": [
604
+ "source1",
605
+ "source2"
606
+ ],
607
+ "ta.crossunder": [
608
+ "source1",
609
+ "source2"
610
+ ],
611
+ "ta.cross": [
612
+ "source1",
613
+ "source2"
614
+ ],
615
+ "ta.rising": [
616
+ "source",
617
+ "length"
618
+ ],
619
+ "ta.falling": [
620
+ "source",
621
+ "length"
622
+ ],
623
+ "ta.change": [
624
+ "source",
625
+ "length"
626
+ ],
627
+ "ta.highest": [
628
+ "source",
629
+ "length"
630
+ ],
631
+ "ta.lowest": [
632
+ "source",
633
+ "length"
634
+ ],
635
+ "ta.highestbars": [
636
+ "source",
637
+ "length"
638
+ ],
639
+ "ta.lowestbars": [
640
+ "source",
641
+ "length"
642
+ ],
643
+ "ta.median": [
644
+ "source",
645
+ "length"
646
+ ],
647
+ "ta.percentrank": [
648
+ "source",
649
+ "length"
650
+ ],
651
+ "ta.percentile_nearest_rank": [
652
+ "source",
653
+ "length",
654
+ "percentage"
655
+ ],
656
+ "ta.percentile_linear_interpolation": [
657
+ "source",
658
+ "length",
659
+ "percentage"
660
+ ],
661
+ "ta.pivothigh": [
662
+ "source",
663
+ "leftbars",
664
+ "rightbars"
665
+ ],
666
+ "ta.pivotlow": [
667
+ "source",
668
+ "leftbars",
669
+ "rightbars"
670
+ ],
671
+ "ta.vwap": [
672
+ "source",
673
+ "anchor",
674
+ "stdev_mult"
675
+ ],
676
+ "ta.mode": [
677
+ "source",
678
+ "length"
679
+ ],
680
+ "ta.range": [
681
+ "source",
682
+ "length"
683
+ ],
684
+ "ta.dev": [
685
+ "source",
686
+ "length"
687
+ ],
688
+ "ta.cum": [
689
+ "source"
690
+ ],
691
+ "ta.barssince": [
692
+ "condition"
693
+ ],
694
+ "ta.valuewhen": [
695
+ "condition",
696
+ "source",
697
+ "occurrence"
698
+ ],
699
+ "ta.correlation": [
700
+ "source1",
701
+ "source2",
702
+ "length"
703
+ ],
704
+ "ta.max": [
705
+ "source"
706
+ ],
707
+ "ta.min": [
708
+ "source"
709
+ ],
710
+ "ta.rci": [
711
+ "source",
712
+ "length"
713
+ ],
714
+ "ta.pivot_point_levels": [
715
+ "type",
716
+ "anchor",
717
+ "developing"
718
+ ],
719
+ "math.abs": [
720
+ "x"
721
+ ],
722
+ "math.ceil": [
723
+ "x"
724
+ ],
725
+ "math.floor": [
726
+ "x"
727
+ ],
728
+ "math.round": [
729
+ "x",
730
+ "precision"
731
+ ],
732
+ "math.round_to_mintick": [
733
+ "x"
734
+ ],
735
+ "math.sign": [
736
+ "x"
737
+ ],
738
+ "math.max": [
739
+ "x",
740
+ "y",
741
+ "z",
742
+ "w"
743
+ ],
744
+ "math.min": [
745
+ "x",
746
+ "y",
747
+ "z",
748
+ "w"
749
+ ],
750
+ "math.avg": [
751
+ "x",
752
+ "y",
753
+ "z",
754
+ "w",
755
+ "u",
756
+ "v"
757
+ ],
758
+ "math.sum": [
759
+ "source",
760
+ "length"
761
+ ],
762
+ "math.pow": [
763
+ "base",
764
+ "exp"
765
+ ],
766
+ "math.sqrt": [
767
+ "x"
768
+ ],
769
+ "math.exp": [
770
+ "x"
771
+ ],
772
+ "math.log": [
773
+ "x"
774
+ ],
775
+ "math.log10": [
776
+ "x"
777
+ ],
778
+ "math.random": [
779
+ "min",
780
+ "max",
781
+ "seed"
782
+ ],
783
+ "math.sin": [
784
+ "x"
785
+ ],
786
+ "math.cos": [
787
+ "x"
788
+ ],
789
+ "math.tan": [
790
+ "x"
791
+ ],
792
+ "math.asin": [
793
+ "x"
794
+ ],
795
+ "math.acos": [
796
+ "x"
797
+ ],
798
+ "math.atan": [
799
+ "x"
800
+ ],
801
+ "math.atan2": [
802
+ "y",
803
+ "x"
804
+ ],
805
+ "math.todegrees": [
806
+ "x"
807
+ ],
808
+ "math.toradians": [
809
+ "x"
810
+ ],
811
+ "strategy.entry": [
812
+ "id",
813
+ "direction",
814
+ "qty",
815
+ "limit",
816
+ "stop",
817
+ "oca_name",
818
+ "oca_type",
819
+ "comment",
820
+ "alert_message",
821
+ "disable_alert",
822
+ "qty_type"
823
+ ],
824
+ "strategy.order": [
825
+ "id",
826
+ "direction",
827
+ "qty",
828
+ "limit",
829
+ "stop",
830
+ "oca_name",
831
+ "oca_type",
832
+ "comment",
833
+ "alert_message",
834
+ "disable_alert",
835
+ "qty_type"
836
+ ],
837
+ "strategy.exit": [
838
+ "id",
839
+ "from_entry",
840
+ "qty",
841
+ "qty_percent",
842
+ "profit",
843
+ "loss",
844
+ "limit",
845
+ "stop",
846
+ "trail_price",
847
+ "trail_points",
848
+ "trail_offset",
849
+ "oca_name",
850
+ "comment",
851
+ "comment_profit",
852
+ "comment_loss",
853
+ "comment_trailing",
854
+ "alert_message",
855
+ "alert_profit",
856
+ "alert_loss",
857
+ "alert_trailing",
858
+ "disable_alert"
859
+ ],
860
+ "strategy.close": [
861
+ "id",
862
+ "comment",
863
+ "qty",
864
+ "qty_percent",
865
+ "alert_message",
866
+ "disable_alert",
867
+ "immediately"
868
+ ],
869
+ "strategy.close_all": [
870
+ "comment",
871
+ "alert_message",
872
+ "disable_alert",
873
+ "immediately"
874
+ ],
875
+ "strategy.cancel": [
876
+ "id"
877
+ ],
878
+ "strategy.cancel_all": [],
879
+ "strategy.convert_to_account": [
880
+ "value"
881
+ ],
882
+ "strategy.convert_to_symbol": [
883
+ "value"
884
+ ],
885
+ "strategy.default_entry_qty": [
886
+ "fill_price"
887
+ ],
888
+ "str.tostring": [
889
+ "value",
890
+ "format"
891
+ ],
892
+ "str.tonumber": [
893
+ "string"
894
+ ],
895
+ "str.format": [
896
+ "formatStr"
897
+ ],
898
+ "str.format_time": [
899
+ "time",
900
+ "format",
901
+ "timezone"
902
+ ],
903
+ "str.length": [
904
+ "string"
905
+ ],
906
+ "str.contains": [
907
+ "source",
908
+ "str"
909
+ ],
910
+ "str.startswith": [
911
+ "source",
912
+ "str"
913
+ ],
914
+ "str.endswith": [
915
+ "source",
916
+ "str"
917
+ ],
918
+ "str.pos": [
919
+ "source",
920
+ "str"
921
+ ],
922
+ "str.substring": [
923
+ "source",
924
+ "begin_pos",
925
+ "end_pos"
926
+ ],
927
+ "str.replace": [
928
+ "source",
929
+ "target",
930
+ "replacement",
931
+ "occurrence"
932
+ ],
933
+ "str.replace_all": [
934
+ "source",
935
+ "target",
936
+ "replacement"
937
+ ],
938
+ "str.lower": [
939
+ "source"
940
+ ],
941
+ "str.upper": [
942
+ "source"
943
+ ],
944
+ "str.trim": [
945
+ "source"
946
+ ],
947
+ "str.repeat": [
948
+ "source",
949
+ "count"
950
+ ],
951
+ "str.match": [
952
+ "source",
953
+ "regex"
954
+ ],
955
+ "str.split": [
956
+ "string",
957
+ "separator"
958
+ ],
959
+ "input.int": [
960
+ "defval",
961
+ "title",
962
+ "minval",
963
+ "maxval",
964
+ "step",
965
+ "tooltip",
966
+ "inline",
967
+ "group",
968
+ "display",
969
+ "confirm"
970
+ ],
971
+ "input.float": [
972
+ "defval",
973
+ "title",
974
+ "minval",
975
+ "maxval",
976
+ "step",
977
+ "tooltip",
978
+ "inline",
979
+ "group",
980
+ "display",
981
+ "confirm"
982
+ ],
983
+ "input.bool": [
984
+ "defval",
985
+ "title",
986
+ "tooltip",
987
+ "inline",
988
+ "group",
989
+ "display",
990
+ "confirm"
991
+ ],
992
+ "input.string": [
993
+ "defval",
994
+ "title",
995
+ "options",
996
+ "tooltip",
997
+ "inline",
998
+ "group",
999
+ "display",
1000
+ "confirm"
1001
+ ],
1002
+ "input.source": [
1003
+ "defval",
1004
+ "title",
1005
+ "tooltip",
1006
+ "inline",
1007
+ "group",
1008
+ "display",
1009
+ "confirm"
1010
+ ],
1011
+ "input.color": [
1012
+ "defval",
1013
+ "title",
1014
+ "tooltip",
1015
+ "inline",
1016
+ "group",
1017
+ "display",
1018
+ "confirm"
1019
+ ],
1020
+ "input.timeframe": [
1021
+ "defval",
1022
+ "title",
1023
+ "tooltip",
1024
+ "inline",
1025
+ "group",
1026
+ "display",
1027
+ "confirm"
1028
+ ],
1029
+ "input.session": [
1030
+ "defval",
1031
+ "title",
1032
+ "tooltip",
1033
+ "inline",
1034
+ "group",
1035
+ "display",
1036
+ "confirm"
1037
+ ],
1038
+ "input.symbol": [
1039
+ "defval",
1040
+ "title",
1041
+ "tooltip",
1042
+ "inline",
1043
+ "group",
1044
+ "display",
1045
+ "confirm"
1046
+ ],
1047
+ "input.price": [
1048
+ "defval",
1049
+ "title",
1050
+ "tooltip",
1051
+ "inline",
1052
+ "group",
1053
+ "display",
1054
+ "confirm"
1055
+ ],
1056
+ "input.time": [
1057
+ "defval",
1058
+ "title",
1059
+ "tooltip",
1060
+ "inline",
1061
+ "group",
1062
+ "display",
1063
+ "confirm"
1064
+ ],
1065
+ "input.text_area": [
1066
+ "defval",
1067
+ "title",
1068
+ "tooltip",
1069
+ "inline",
1070
+ "group",
1071
+ "display",
1072
+ "confirm"
1073
+ ],
1074
+ "input.enum": [
1075
+ "defval",
1076
+ "title",
1077
+ "tooltip",
1078
+ "inline",
1079
+ "group",
1080
+ "display",
1081
+ "confirm"
1082
+ ],
1083
+ "map.new": [],
1084
+ "map.put": [
1085
+ "id",
1086
+ "key",
1087
+ "value"
1088
+ ],
1089
+ "map.get": [
1090
+ "id",
1091
+ "key"
1092
+ ],
1093
+ "map.remove": [
1094
+ "id",
1095
+ "key"
1096
+ ],
1097
+ "map.contains": [
1098
+ "id",
1099
+ "key"
1100
+ ],
1101
+ "map.size": [
1102
+ "id"
1103
+ ],
1104
+ "map.clear": [
1105
+ "id"
1106
+ ],
1107
+ "map.keys": [
1108
+ "id"
1109
+ ],
1110
+ "map.values": [
1111
+ "id"
1112
+ ],
1113
+ "map.copy": [
1114
+ "id"
1115
+ ],
1116
+ "map.put_all": [
1117
+ "id",
1118
+ "id2"
1119
+ ],
1120
+ "syminfo.prefix": [],
1121
+ "syminfo.ticker": [],
1122
+ "na": [
1123
+ "x"
1124
+ ],
1125
+ "nz": [
1126
+ "x",
1127
+ "y"
1128
+ ],
1129
+ "fixnan": [
1130
+ "x"
1131
+ ],
1132
+ "timestamp": [
1133
+ "year",
1134
+ "month",
1135
+ "day",
1136
+ "hour",
1137
+ "minute",
1138
+ "second"
1139
+ ],
1140
+ "time": [
1141
+ "timeframe",
1142
+ "session",
1143
+ "timezone"
1144
+ ],
1145
+ "time_close": [
1146
+ "timeframe",
1147
+ "session",
1148
+ "timezone"
1149
+ ],
1150
+ "year": [
1151
+ "time",
1152
+ "timezone"
1153
+ ],
1154
+ "month": [
1155
+ "time",
1156
+ "timezone"
1157
+ ],
1158
+ "dayofmonth": [
1159
+ "time",
1160
+ "timezone"
1161
+ ],
1162
+ "dayofweek": [
1163
+ "time",
1164
+ "timezone"
1165
+ ],
1166
+ "hour": [
1167
+ "time",
1168
+ "timezone"
1169
+ ],
1170
+ "minute": [
1171
+ "time",
1172
+ "timezone"
1173
+ ],
1174
+ "second": [
1175
+ "time",
1176
+ "timezone"
1177
+ ],
1178
+ "weekofyear": [
1179
+ "time",
1180
+ "timezone"
1181
+ ],
1182
+ "max_bars_back": [
1183
+ "var",
1184
+ "num"
1185
+ ],
1186
+ "int": [
1187
+ "x"
1188
+ ],
1189
+ "float": [
1190
+ "x"
1191
+ ],
1192
+ "bool": [
1193
+ "x"
1194
+ ],
1195
+ "string": [
1196
+ "x"
1197
+ ],
1198
+ "timeframe.change": [
1199
+ "timeframe"
1200
+ ],
1201
+ "timeframe.in_seconds": [
1202
+ "timeframe"
1203
+ ],
1204
+ "input": [
1205
+ "defval",
1206
+ "title"
1207
+ ]
1208
+ },
1209
+ "BUILTIN_VARIABLES": {
1210
+ "open": "float",
1211
+ "high": "float",
1212
+ "low": "float",
1213
+ "close": "float",
1214
+ "volume": "float",
1215
+ "hl2": "float",
1216
+ "hlc3": "float",
1217
+ "hlcc4": "float",
1218
+ "ohlc4": "float",
1219
+ "bar_index": "int",
1220
+ "time": "int",
1221
+ "time_close": "int",
1222
+ "last_bar_index": "int",
1223
+ "last_bar_time": "int",
1224
+ "timenow": "int",
1225
+ "time_tradingday": "int",
1226
+ "hour": "int",
1227
+ "minute": "int",
1228
+ "second": "int",
1229
+ "dayofmonth": "int",
1230
+ "dayofweek": "int",
1231
+ "month": "int",
1232
+ "year": "int",
1233
+ "weekofyear": "int",
1234
+ "na": "na",
1235
+ "ta.tr": "float",
1236
+ "ta.obv": "float",
1237
+ "ta.accdist": "float",
1238
+ "ta.nvi": "float",
1239
+ "ta.pvi": "float",
1240
+ "ta.pvt": "float",
1241
+ "ta.wad": "float",
1242
+ "ta.wvad": "float",
1243
+ "ta.iii": "float",
1244
+ "chart.is_standard": "bool",
1245
+ "chart.is_heikinashi": "bool",
1246
+ "chart.is_kagi": "bool",
1247
+ "chart.is_linebreak": "bool",
1248
+ "chart.is_pnf": "bool",
1249
+ "chart.is_range": "bool",
1250
+ "chart.is_renko": "bool",
1251
+ "session.ismarket": "bool",
1252
+ "session.ispremarket": "bool",
1253
+ "session.ispostmarket": "bool",
1254
+ "session.isfirstbar": "bool",
1255
+ "session.isfirstbar_regular": "bool",
1256
+ "session.islastbar": "bool",
1257
+ "session.islastbar_regular": "bool"
1258
+ },
1259
+ "STRATEGY_VARIABLES": {
1260
+ "strategy.position_size": "float",
1261
+ "strategy.position_avg_price": "float",
1262
+ "strategy.position_entry_name": "string",
1263
+ "strategy.equity": "float",
1264
+ "strategy.initial_capital": "float",
1265
+ "strategy.netprofit": "float",
1266
+ "strategy.netprofit_percent": "float",
1267
+ "strategy.openprofit": "float",
1268
+ "strategy.openprofit_percent": "float",
1269
+ "strategy.grossprofit": "float",
1270
+ "strategy.grossloss": "float",
1271
+ "strategy.closedtrades": "int",
1272
+ "strategy.opentrades": "int",
1273
+ "strategy.wintrades": "int",
1274
+ "strategy.losstrades": "int",
1275
+ "strategy.eventrades": "int",
1276
+ "strategy.max_contracts_held_all": "float",
1277
+ "strategy.max_contracts_held_long": "float",
1278
+ "strategy.max_contracts_held_short": "float",
1279
+ "strategy.max_drawdown": "float",
1280
+ "strategy.max_drawdown_percent": "float",
1281
+ "strategy.max_runup": "float",
1282
+ "strategy.max_runup_percent": "float",
1283
+ "strategy.avg_trade": "float",
1284
+ "strategy.avg_trade_percent": "float",
1285
+ "strategy.avg_winning_trade": "float",
1286
+ "strategy.avg_losing_trade": "float",
1287
+ "strategy.avg_winning_trade_percent": "float",
1288
+ "strategy.avg_losing_trade_percent": "float",
1289
+ "strategy.margin_liquidation_price": "float",
1290
+ "strategy.grossprofit_percent": "float",
1291
+ "strategy.grossloss_percent": "float",
1292
+ "strategy.account_currency": "string",
1293
+ "strategy.opentrades.capital_held": "float",
1294
+ "strategy.long": "bool",
1295
+ "strategy.short": "bool",
1296
+ "strategy.fixed": "int",
1297
+ "strategy.cash": "int",
1298
+ "strategy.percent_of_equity": "int",
1299
+ "strategy.commission.percent": "int",
1300
+ "strategy.commission.cash_per_contract": "int",
1301
+ "strategy.commission.cash_per_order": "int",
1302
+ "strategy.oca.cancel": "int",
1303
+ "strategy.oca.reduce": "int",
1304
+ "strategy.oca.none": "int",
1305
+ "strategy.direction.all": "int",
1306
+ "strategy.direction.long": "int",
1307
+ "strategy.direction.short": "int"
1308
+ },
1309
+ "BARSTATE_VARIABLES": {
1310
+ "barstate.isfirst": "bool",
1311
+ "barstate.islast": "bool",
1312
+ "barstate.ishistory": "bool",
1313
+ "barstate.isrealtime": "bool",
1314
+ "barstate.isnew": "bool",
1315
+ "barstate.isconfirmed": "bool",
1316
+ "barstate.islastconfirmedhistory": "bool"
1317
+ },
1318
+ "SYMINFO_VARIABLES": {
1319
+ "syminfo.ticker": "string",
1320
+ "syminfo.tickerid": "string",
1321
+ "syminfo.basecurrency": "string",
1322
+ "syminfo.currency": "string",
1323
+ "syminfo.description": "string",
1324
+ "syminfo.mintick": "float",
1325
+ "syminfo.pointvalue": "float",
1326
+ "syminfo.type": "string",
1327
+ "syminfo.timezone": "string",
1328
+ "syminfo.session": "string",
1329
+ "syminfo.volumetype": "string",
1330
+ "syminfo.prefix": "string",
1331
+ "syminfo.root": "string",
1332
+ "syminfo.pricescale": "float",
1333
+ "syminfo.minmove": "float",
1334
+ "syminfo.mincontract": "float",
1335
+ "syminfo.current_contract": "string",
1336
+ "syminfo.expiration_date": "int",
1337
+ "syminfo.isin": "string",
1338
+ "syminfo.sector": "string",
1339
+ "syminfo.industry": "string",
1340
+ "syminfo.employees": "float",
1341
+ "syminfo.shareholders": "float",
1342
+ "syminfo.shares_outstanding_float": "float",
1343
+ "syminfo.shares_outstanding_total": "float",
1344
+ "syminfo.recommendations_buy": "float",
1345
+ "syminfo.recommendations_strong_buy": "float",
1346
+ "syminfo.recommendations_hold": "float",
1347
+ "syminfo.recommendations_sell": "float",
1348
+ "syminfo.recommendations_strong_sell": "float",
1349
+ "syminfo.recommendations_total": "float",
1350
+ "syminfo.recommendations_date": "float",
1351
+ "syminfo.target_price_average": "float",
1352
+ "syminfo.target_price_high": "float",
1353
+ "syminfo.target_price_low": "float",
1354
+ "syminfo.target_price_median": "float",
1355
+ "syminfo.target_price_date": "float",
1356
+ "syminfo.target_price_analysts_count": "float",
1357
+ "syminfo.main_tickerid": "string",
1358
+ "syminfo.country": "string"
1359
+ },
1360
+ "TIMEFRAME_VARIABLES": {
1361
+ "timeframe.period": "string",
1362
+ "timeframe.multiplier": "int",
1363
+ "timeframe.isintraday": "bool",
1364
+ "timeframe.isdaily": "bool",
1365
+ "timeframe.isweekly": "bool",
1366
+ "timeframe.ismonthly": "bool",
1367
+ "timeframe.isdwm": "bool",
1368
+ "timeframe.main_period": "string",
1369
+ "timeframe.isticks": "bool"
1370
+ },
1371
+ "DISPLAY_VARIABLES": {
1372
+ "display.all": "int",
1373
+ "display.none": "int",
1374
+ "display.pane": "int",
1375
+ "display.data_window": "int",
1376
+ "display.status_line": "int",
1377
+ "display.price_scale": "int"
1378
+ },
1379
+ "INPUT_SOURCE_SERIES_IDS": [
1380
+ "close",
1381
+ "high",
1382
+ "hl2",
1383
+ "hlc3",
1384
+ "hlcc4",
1385
+ "low",
1386
+ "ohlc4",
1387
+ "open",
1388
+ "volume"
1389
+ ],
1390
+ "INPUT_TIMEFRAME_CHOICES": [
1391
+ "",
1392
+ "1",
1393
+ "10",
1394
+ "120",
1395
+ "12M",
1396
+ "15",
1397
+ "15S",
1398
+ "180",
1399
+ "1D",
1400
+ "1M",
1401
+ "1S",
1402
+ "1W",
1403
+ "2",
1404
+ "240",
1405
+ "2D",
1406
+ "2M",
1407
+ "2W",
1408
+ "3",
1409
+ "30",
1410
+ "30S",
1411
+ "360",
1412
+ "3D",
1413
+ "3M",
1414
+ "3W",
1415
+ "4",
1416
+ "45",
1417
+ "45S",
1418
+ "5",
1419
+ "5S",
1420
+ "60",
1421
+ "6M",
1422
+ "720",
1423
+ "90",
1424
+ "D",
1425
+ "M",
1426
+ "W"
1427
+ ],
1428
+ "INPUT_SESSION_PRESETS": [
1429
+ "",
1430
+ "0000-2359",
1431
+ "24x7"
1432
+ ],
1433
+ "HARD_REJECT_FUNC": {
1434
+ "request.financial": "External fundamentals data not available in PineForge.",
1435
+ "request.dividends": "External corporate-action data not available in PineForge.",
1436
+ "request.earnings": "External corporate-action data not available in PineForge.",
1437
+ "request.splits": "External corporate-action data not available in PineForge.",
1438
+ "request.seed": "External seed data feeds not available in PineForge.",
1439
+ "request.quandl": "External Quandl data not available in PineForge.",
1440
+ "request.currency_rate": "Currency conversion data not available in PineForge.",
1441
+ "color.from_gradient": "Charting helpers not available in PineForge backtests.",
1442
+ "ticker.heikinashi": "ticker.heikinashi() chart-type modifier / cross-symbol construction not supported — PineForge runs same-symbol MTF only via request.security with the chart's own tickerid.",
1443
+ "ticker.renko": "ticker.renko() chart-type modifier / cross-symbol construction not supported — PineForge runs same-symbol MTF only via request.security with the chart's own tickerid.",
1444
+ "ticker.kagi": "ticker.kagi() chart-type modifier / cross-symbol construction not supported — PineForge runs same-symbol MTF only via request.security with the chart's own tickerid.",
1445
+ "ticker.linebreak": "ticker.linebreak() chart-type modifier / cross-symbol construction not supported — PineForge runs same-symbol MTF only via request.security with the chart's own tickerid.",
1446
+ "ticker.pointfigure": "ticker.pointfigure() chart-type modifier / cross-symbol construction not supported — PineForge runs same-symbol MTF only via request.security with the chart's own tickerid.",
1447
+ "ticker.new": "ticker.new() chart-type modifier / cross-symbol construction not supported — PineForge runs same-symbol MTF only via request.security with the chart's own tickerid.",
1448
+ "ticker.modify": "ticker.modify() chart-type modifier / cross-symbol construction not supported — PineForge runs same-symbol MTF only via request.security with the chart's own tickerid."
1449
+ },
1450
+ "HARD_REJECT_NAMESPACE": {},
1451
+ "NOT_YET_FUNC": {
1452
+ "max_bars_back": "max_bars_back is silently dropped by the codegen.",
1453
+ "timeframe.from_seconds": "timeframe.from_seconds is not yet implemented; codegen would emit 'false' and silently produce wrong TF strings."
1454
+ },
1455
+ "DIVERGENT_VARS": {
1456
+ "bar_index": "bar_index depends on the data window; PineForge and TradingView produce different values for the same script.",
1457
+ "last_bar_index": "last_bar_index is incorrectly aliased to the current bar index in PineForge codegen.",
1458
+ "timenow": "timenow is aliased to the current bar timestamp in PineForge; it is not real wall-clock time.",
1459
+ "time_close": "time_close is aliased to the bar open timestamp in PineForge; it does not represent the bar close time."
1460
+ },
1461
+ "BARSTATE_APPROX_VARS": {
1462
+ "barstate.islast": "barstate.islast is always false in PineForge batch backtests.",
1463
+ "barstate.ishistory": "barstate.ishistory is always true in PineForge batch backtests.",
1464
+ "barstate.isrealtime": "barstate.isrealtime is always false in PineForge batch backtests.",
1465
+ "barstate.isnew": "barstate.isnew follows PineForge first-tick execution state.",
1466
+ "barstate.isconfirmed": "barstate.isconfirmed follows PineForge last-tick execution state.",
1467
+ "barstate.islastconfirmedhistory": "barstate.islastconfirmedhistory is always false in PineForge batch backtests."
1468
+ },
1469
+ "STRATEGY_UNSUPPORTED_PARAMS": {
1470
+ "entry": [
1471
+ "alert_message",
1472
+ "disable_alert"
1473
+ ],
1474
+ "order": [
1475
+ "alert_message",
1476
+ "comment",
1477
+ "disable_alert",
1478
+ "qty_type"
1479
+ ],
1480
+ "exit": [
1481
+ "alert_loss",
1482
+ "alert_message",
1483
+ "alert_profit",
1484
+ "alert_trailing",
1485
+ "comment_loss",
1486
+ "comment_profit",
1487
+ "comment_trailing",
1488
+ "disable_alert"
1489
+ ],
1490
+ "close": [
1491
+ "alert_message",
1492
+ "disable_alert"
1493
+ ],
1494
+ "close_all": [
1495
+ "alert_message",
1496
+ "comment",
1497
+ "disable_alert",
1498
+ "immediately"
1499
+ ]
1500
+ },
1501
+ "CLOSED_TRADE_ACCESSOR_METHODS": [
1502
+ "commission",
1503
+ "entry_bar_index",
1504
+ "entry_comment",
1505
+ "entry_id",
1506
+ "entry_price",
1507
+ "entry_time",
1508
+ "exit_bar_index",
1509
+ "exit_comment",
1510
+ "exit_id",
1511
+ "exit_price",
1512
+ "exit_time",
1513
+ "max_drawdown",
1514
+ "max_drawdown_percent",
1515
+ "max_runup",
1516
+ "max_runup_percent",
1517
+ "profit",
1518
+ "profit_percent",
1519
+ "size"
1520
+ ],
1521
+ "OPEN_TRADE_ACCESSOR_METHODS": [
1522
+ "commission",
1523
+ "entry_bar_index",
1524
+ "entry_comment",
1525
+ "entry_id",
1526
+ "entry_price",
1527
+ "entry_time",
1528
+ "max_drawdown",
1529
+ "max_drawdown_percent",
1530
+ "max_runup",
1531
+ "max_runup_percent",
1532
+ "profit",
1533
+ "profit_percent",
1534
+ "size"
1535
+ ],
1536
+ "STRATEGY_EXIT_PRICE_PARAMS": [
1537
+ "limit",
1538
+ "loss",
1539
+ "profit",
1540
+ "stop",
1541
+ "trail_offset",
1542
+ "trail_points",
1543
+ "trail_price"
1544
+ ],
1545
+ "UNSUPPORTED_BARE_FUNCS": {
1546
+ "color": "Bare color(...) cast is not supported. Use color.new(c, alpha) or color.rgb(r, g, b, transp)."
1547
+ },
1548
+ "UNSUPPORTED_NAMESPACES": {
1549
+ "footprint": "footprint.* (bid/ask volume rows) is not supported in PineForge batch backtests; it requires tick-level data the engine does not consume.",
1550
+ "volume_row": "volume_row.* is not supported in PineForge batch backtests; same reason as footprint.*."
1551
+ },
1552
+ "UNSUPPORTED_CONST_NAMESPACES": {
1553
+ "extend": "is a visual/style constant with no runtime value in PineForge backtests; it is only accepted as an argument to visual calls (plot, plotshape, hline, label.new, table.cell, ...), which PineForge parses and skips.",
1554
+ "font": "is a visual/style constant with no runtime value in PineForge backtests; it is only accepted as an argument to visual calls (plot, plotshape, hline, label.new, table.cell, ...), which PineForge parses and skips.",
1555
+ "hline": "is a visual/style constant with no runtime value in PineForge backtests; it is only accepted as an argument to visual calls (plot, plotshape, hline, label.new, table.cell, ...), which PineForge parses and skips.",
1556
+ "location": "is a visual/style constant with no runtime value in PineForge backtests; it is only accepted as an argument to visual calls (plot, plotshape, hline, label.new, table.cell, ...), which PineForge parses and skips.",
1557
+ "plot": "is a visual/style constant with no runtime value in PineForge backtests; it is only accepted as an argument to visual calls (plot, plotshape, hline, label.new, table.cell, ...), which PineForge parses and skips.",
1558
+ "scale": "is a visual/style constant with no runtime value in PineForge backtests; it is only accepted as an argument to visual calls (plot, plotshape, hline, label.new, table.cell, ...), which PineForge parses and skips.",
1559
+ "shape": "is a visual/style constant with no runtime value in PineForge backtests; it is only accepted as an argument to visual calls (plot, plotshape, hline, label.new, table.cell, ...), which PineForge parses and skips.",
1560
+ "text": "is a visual/style constant with no runtime value in PineForge backtests; it is only accepted as an argument to visual calls (plot, plotshape, hline, label.new, table.cell, ...), which PineForge parses and skips.",
1561
+ "xloc": "is a visual/style constant with no runtime value in PineForge backtests; it is only accepted as an argument to visual calls (plot, plotshape, hline, label.new, table.cell, ...), which PineForge parses and skips.",
1562
+ "yloc": "is a visual/style constant with no runtime value in PineForge backtests; it is only accepted as an argument to visual calls (plot, plotshape, hline, label.new, table.cell, ...), which PineForge parses and skips.",
1563
+ "barmerge": "is only valid as the gaps/lookahead argument of request.security(...); it has no runtime value as a free expression in PineForge.",
1564
+ "alert": "is only valid as the freq argument of alert(...); it has no runtime value as a free expression in PineForge."
1565
+ },
1566
+ "UNSUPPORTED_MEMBERS": {
1567
+ "chart.left_visible_bar_time": "chart.left_visible_bar_time has no meaning in a batch backtest (no viewport).",
1568
+ "chart.right_visible_bar_time": "chart.right_visible_bar_time has no meaning in a batch backtest (no viewport).",
1569
+ "chart.bg_color": "chart.bg_color has no meaning in a batch backtest (no chart theme).",
1570
+ "chart.fg_color": "chart.fg_color has no meaning in a batch backtest (no chart theme)."
1571
+ },
1572
+ "UNSUPPORTED_NAMESPACE_VARS": {
1573
+ "dividends": "dividends.* is not available in PineForge — fundamental dividend data is not loaded.",
1574
+ "earnings": "earnings.* is not available in PineForge — fundamental earnings data is not loaded.",
1575
+ "splits": "splits.* is not available in PineForge — corporate-action split data is not loaded."
1576
+ },
1577
+ "TA_PROPERTY_VARIABLES": [
1578
+ "accdist",
1579
+ "iii",
1580
+ "nvi",
1581
+ "obv",
1582
+ "pvi",
1583
+ "pvt",
1584
+ "wad",
1585
+ "wvad"
1586
+ ],
1587
+ "SECURITY_ALLOWED_PARAMS": [
1588
+ "adjustment",
1589
+ "backadjustment",
1590
+ "expression",
1591
+ "gaps",
1592
+ "lookahead",
1593
+ "settlement_as_close",
1594
+ "symbol",
1595
+ "timeframe"
1596
+ ],
1597
+ "SECURITY_ADJUSTMENT_ALLOWED_VALUES": {
1598
+ "backadjustment": [
1599
+ "inherit",
1600
+ "off"
1601
+ ],
1602
+ "settlement_as_close": [
1603
+ "inherit",
1604
+ "off"
1605
+ ],
1606
+ "adjustment": [
1607
+ "inherit",
1608
+ "none"
1609
+ ]
1610
+ },
1611
+ "SECURITY_CURRENT_SYMBOL_NAMES": [
1612
+ "syminfo.ticker",
1613
+ "syminfo.tickerid"
1614
+ ],
1615
+ "SECURITY_MAX_POSITIONAL": 5,
1616
+ "SECURITY_PARAM_ORDER": [
1617
+ "symbol",
1618
+ "timeframe",
1619
+ "expression",
1620
+ "gaps",
1621
+ "lookahead",
1622
+ "ignore_invalid_symbol",
1623
+ "currency"
1624
+ ],
1625
+ "SYMINFO_SILENT_GAP_FIELDS": [
1626
+ "current_contract",
1627
+ "employees",
1628
+ "expiration_date",
1629
+ "industry",
1630
+ "isin",
1631
+ "mincontract",
1632
+ "minmove",
1633
+ "pricescale",
1634
+ "recommendations_buy",
1635
+ "recommendations_buy_strong",
1636
+ "recommendations_date",
1637
+ "recommendations_hold",
1638
+ "recommendations_sell",
1639
+ "recommendations_sell_strong",
1640
+ "recommendations_total",
1641
+ "root",
1642
+ "sector",
1643
+ "shareholders",
1644
+ "shares_outstanding_float",
1645
+ "shares_outstanding_total",
1646
+ "target_price_average",
1647
+ "target_price_date",
1648
+ "target_price_estimates",
1649
+ "target_price_high",
1650
+ "target_price_low",
1651
+ "target_price_median"
1652
+ ]
1653
+ }