openalgo-script 0.5.0 → 0.6.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 (242) hide show
  1. package/CHANGELOG.md +121 -0
  2. package/README.md +53 -22
  3. package/dist/adapters/charts/run.d.ts.map +1 -1
  4. package/dist/adapters/charts/run.js +6 -0
  5. package/dist/adapters/charts/run.js.map +1 -1
  6. package/dist/adapters/charts/tables.d.ts +6 -19
  7. package/dist/adapters/charts/tables.d.ts.map +1 -1
  8. package/dist/adapters/charts/tables.js.map +1 -1
  9. package/dist/adapters/charts/undrawable.d.ts +4 -0
  10. package/dist/adapters/charts/undrawable.d.ts.map +1 -0
  11. package/dist/adapters/charts/undrawable.js +47 -0
  12. package/dist/adapters/charts/undrawable.js.map +1 -0
  13. package/dist/core/backtest/drive.d.ts +36 -1
  14. package/dist/core/backtest/drive.d.ts.map +1 -1
  15. package/dist/core/backtest/drive.js +13 -107
  16. package/dist/core/backtest/drive.js.map +1 -1
  17. package/dist/core/backtest/index.d.ts +2 -0
  18. package/dist/core/backtest/index.d.ts.map +1 -1
  19. package/dist/core/backtest/index.js.map +1 -1
  20. package/dist/core/backtest/walk.d.ts +39 -0
  21. package/dist/core/backtest/walk.d.ts.map +1 -0
  22. package/dist/core/backtest/walk.js +125 -0
  23. package/dist/core/backtest/walk.js.map +1 -0
  24. package/dist/core/catalogue/catalogue.generated.d.ts +178 -1
  25. package/dist/core/catalogue/catalogue.generated.d.ts.map +1 -1
  26. package/dist/core/catalogue/catalogue.generated.js +18 -1
  27. package/dist/core/catalogue/catalogue.generated.js.map +1 -1
  28. package/dist/core/catalogue/types.d.ts +8 -2
  29. package/dist/core/catalogue/types.d.ts.map +1 -1
  30. package/dist/core/catalogue/values.generated.d.ts +51 -0
  31. package/dist/core/catalogue/values.generated.d.ts.map +1 -1
  32. package/dist/core/check/assigned.d.ts +19 -0
  33. package/dist/core/check/assigned.d.ts.map +1 -0
  34. package/dist/core/check/assigned.js +14 -0
  35. package/dist/core/check/assigned.js.map +1 -0
  36. package/dist/core/check/call-sites.d.ts.map +1 -1
  37. package/dist/core/check/call-sites.js +9 -4
  38. package/dist/core/check/call-sites.js.map +1 -1
  39. package/dist/core/check/calls.d.ts.map +1 -1
  40. package/dist/core/check/calls.js +12 -4
  41. package/dist/core/check/calls.js.map +1 -1
  42. package/dist/core/check/check.d.ts.map +1 -1
  43. package/dist/core/check/check.js +15 -2
  44. package/dist/core/check/check.js.map +1 -1
  45. package/dist/core/check/checker.d.ts +26 -0
  46. package/dist/core/check/checker.d.ts.map +1 -1
  47. package/dist/core/check/checker.js +38 -2
  48. package/dist/core/check/checker.js.map +1 -1
  49. package/dist/core/check/constant.d.ts +16 -0
  50. package/dist/core/check/constant.d.ts.map +1 -1
  51. package/dist/core/check/constant.js +52 -0
  52. package/dist/core/check/constant.js.map +1 -1
  53. package/dist/core/check/deleted.d.ts +3 -0
  54. package/dist/core/check/deleted.d.ts.map +1 -0
  55. package/dist/core/check/deleted.js +109 -0
  56. package/dist/core/check/deleted.js.map +1 -0
  57. package/dist/core/check/expressions.js +1 -1
  58. package/dist/core/check/expressions.js.map +1 -1
  59. package/dist/core/check/library-output.d.ts.map +1 -1
  60. package/dist/core/check/library-output.js +1 -0
  61. package/dist/core/check/library-output.js.map +1 -1
  62. package/dist/core/check/library-prose.generated.js +10 -10
  63. package/dist/core/check/library-prose.generated.js.map +1 -1
  64. package/dist/core/check/library.d.ts +7 -0
  65. package/dist/core/check/library.d.ts.map +1 -1
  66. package/dist/core/check/library.js +1 -0
  67. package/dist/core/check/library.js.map +1 -1
  68. package/dist/core/check/surface.d.ts +9 -0
  69. package/dist/core/check/surface.d.ts.map +1 -1
  70. package/dist/core/check/surface.js +13 -0
  71. package/dist/core/check/surface.js.map +1 -1
  72. package/dist/core/engine/bar-source.d.ts +65 -0
  73. package/dist/core/engine/bar-source.d.ts.map +1 -0
  74. package/dist/core/engine/bar-source.js +58 -0
  75. package/dist/core/engine/bar-source.js.map +1 -0
  76. package/dist/core/engine/engine.d.ts +9 -11
  77. package/dist/core/engine/engine.d.ts.map +1 -1
  78. package/dist/core/engine/engine.js +24 -24
  79. package/dist/core/engine/engine.js.map +1 -1
  80. package/dist/core/engine/guard.d.ts.map +1 -1
  81. package/dist/core/engine/guard.js +10 -0
  82. package/dist/core/engine/guard.js.map +1 -1
  83. package/dist/core/engine/host.d.ts +4 -2
  84. package/dist/core/engine/host.d.ts.map +1 -1
  85. package/dist/core/engine/host.js.map +1 -1
  86. package/dist/core/engine/index.d.ts +1 -0
  87. package/dist/core/engine/index.d.ts.map +1 -1
  88. package/dist/core/engine/index.js.map +1 -1
  89. package/dist/core/engine/library/binding.d.ts +2 -0
  90. package/dist/core/engine/library/binding.d.ts.map +1 -1
  91. package/dist/core/engine/library/binding.js.map +1 -1
  92. package/dist/core/engine/library/index.d.ts +8 -0
  93. package/dist/core/engine/library/index.d.ts.map +1 -1
  94. package/dist/core/engine/library/index.js +10 -0
  95. package/dist/core/engine/library/index.js.map +1 -1
  96. package/dist/core/engine/library/objects.d.ts.map +1 -1
  97. package/dist/core/engine/library/objects.js +1 -1
  98. package/dist/core/engine/library/objects.js.map +1 -1
  99. package/dist/core/engine/request-body.d.ts +3 -1
  100. package/dist/core/engine/request-body.d.ts.map +1 -1
  101. package/dist/core/engine/request-body.js +3 -1
  102. package/dist/core/engine/request-body.js.map +1 -1
  103. package/dist/core/engine/request-plan.d.ts +3 -3
  104. package/dist/core/engine/request-plan.js +3 -3
  105. package/dist/core/engine/requests.d.ts +2 -2
  106. package/dist/core/engine/requests.d.ts.map +1 -1
  107. package/dist/core/engine/requests.js +5 -4
  108. package/dist/core/engine/requests.js.map +1 -1
  109. package/dist/core/engine/series.d.ts +18 -6
  110. package/dist/core/engine/series.d.ts.map +1 -1
  111. package/dist/core/engine/series.js +24 -5
  112. package/dist/core/engine/series.js.map +1 -1
  113. package/dist/core/engine/session/record.d.ts +4 -4
  114. package/dist/core/engine/session/record.js +4 -4
  115. package/dist/core/importer/calls.d.ts +29 -0
  116. package/dist/core/importer/calls.d.ts.map +1 -0
  117. package/dist/core/importer/calls.js +267 -0
  118. package/dist/core/importer/calls.js.map +1 -0
  119. package/dist/core/importer/context.d.ts +118 -0
  120. package/dist/core/importer/context.d.ts.map +1 -0
  121. package/dist/core/importer/context.js +120 -0
  122. package/dist/core/importer/context.js.map +1 -0
  123. package/dist/core/importer/expressions.d.ts +44 -0
  124. package/dist/core/importer/expressions.d.ts.map +1 -0
  125. package/dist/core/importer/expressions.js +223 -0
  126. package/dist/core/importer/expressions.js.map +1 -0
  127. package/dist/core/importer/importer.d.ts +13 -0
  128. package/dist/core/importer/importer.d.ts.map +1 -0
  129. package/dist/core/importer/importer.js +220 -0
  130. package/dist/core/importer/importer.js.map +1 -0
  131. package/dist/core/importer/index.d.ts +20 -0
  132. package/dist/core/importer/index.d.ts.map +1 -0
  133. package/dist/core/importer/index.js +18 -0
  134. package/dist/core/importer/index.js.map +1 -0
  135. package/dist/core/importer/lexer.d.ts +68 -0
  136. package/dist/core/importer/lexer.d.ts.map +1 -0
  137. package/dist/core/importer/lexer.js +207 -0
  138. package/dist/core/importer/lexer.js.map +1 -0
  139. package/dist/core/importer/names.d.ts +41 -0
  140. package/dist/core/importer/names.d.ts.map +1 -0
  141. package/dist/core/importer/names.js +78 -0
  142. package/dist/core/importer/names.js.map +1 -0
  143. package/dist/core/importer/orders.d.ts +8 -0
  144. package/dist/core/importer/orders.d.ts.map +1 -0
  145. package/dist/core/importer/orders.js +332 -0
  146. package/dist/core/importer/orders.js.map +1 -0
  147. package/dist/core/importer/outputs.d.ts +19 -0
  148. package/dist/core/importer/outputs.d.ts.map +1 -0
  149. package/dist/core/importer/outputs.js +266 -0
  150. package/dist/core/importer/outputs.js.map +1 -0
  151. package/dist/core/importer/parser.d.ts +5 -0
  152. package/dist/core/importer/parser.d.ts.map +1 -0
  153. package/dist/core/importer/parser.js +439 -0
  154. package/dist/core/importer/parser.js.map +1 -0
  155. package/dist/core/importer/presence.d.ts +32 -0
  156. package/dist/core/importer/presence.d.ts.map +1 -0
  157. package/dist/core/importer/presence.js +146 -0
  158. package/dist/core/importer/presence.js.map +1 -0
  159. package/dist/core/importer/settle.d.ts +23 -0
  160. package/dist/core/importer/settle.d.ts.map +1 -0
  161. package/dist/core/importer/settle.js +135 -0
  162. package/dist/core/importer/settle.js.map +1 -0
  163. package/dist/core/importer/statements.d.ts +4 -0
  164. package/dist/core/importer/statements.d.ts.map +1 -0
  165. package/dist/core/importer/statements.js +339 -0
  166. package/dist/core/importer/statements.js.map +1 -0
  167. package/dist/core/importer/syntax.d.ts +182 -0
  168. package/dist/core/importer/syntax.d.ts.map +1 -0
  169. package/dist/core/importer/syntax.js +14 -0
  170. package/dist/core/importer/syntax.js.map +1 -0
  171. package/dist/core/importer/table.d.ts +52 -0
  172. package/dist/core/importer/table.d.ts.map +1 -0
  173. package/dist/core/importer/table.js +156 -0
  174. package/dist/core/importer/table.js.map +1 -0
  175. package/dist/core/importer/values.d.ts +27 -0
  176. package/dist/core/importer/values.d.ts.map +1 -0
  177. package/dist/core/importer/values.js +236 -0
  178. package/dist/core/importer/values.js.map +1 -0
  179. package/dist/core/index.d.ts +12 -0
  180. package/dist/core/index.d.ts.map +1 -1
  181. package/dist/core/index.js +11 -0
  182. package/dist/core/index.js.map +1 -1
  183. package/dist/core/stdlib/calendar/civil.d.ts.map +1 -1
  184. package/dist/core/stdlib/calendar/civil.js +5 -2
  185. package/dist/core/stdlib/calendar/civil.js.map +1 -1
  186. package/dist/core/version/version.generated.d.ts +1 -1
  187. package/dist/core/version/version.generated.js +1 -1
  188. package/package.json +5 -2
  189. package/spec/errors.json +380 -20
  190. package/src/adapters/charts/run.ts +6 -0
  191. package/src/adapters/charts/tables.ts +6 -19
  192. package/src/adapters/charts/undrawable.ts +51 -0
  193. package/src/core/backtest/drive.ts +66 -154
  194. package/src/core/backtest/index.ts +2 -0
  195. package/src/core/backtest/walk.ts +182 -0
  196. package/src/core/catalogue/catalogue.generated.ts +18 -1
  197. package/src/core/catalogue/types.ts +8 -2
  198. package/src/core/catalogue/values.generated.ts +16 -0
  199. package/src/core/check/assigned.ts +31 -0
  200. package/src/core/check/call-sites.ts +11 -4
  201. package/src/core/check/calls.ts +13 -4
  202. package/src/core/check/check.ts +14 -2
  203. package/src/core/check/checker.ts +39 -2
  204. package/src/core/check/constant.ts +57 -0
  205. package/src/core/check/deleted.ts +135 -0
  206. package/src/core/check/expressions.ts +1 -1
  207. package/src/core/check/library-output.ts +1 -0
  208. package/src/core/check/library-prose.generated.ts +10 -10
  209. package/src/core/check/library.ts +8 -0
  210. package/src/core/check/surface.ts +16 -0
  211. package/src/core/engine/bar-source.ts +113 -0
  212. package/src/core/engine/engine.ts +26 -25
  213. package/src/core/engine/guard.ts +12 -1
  214. package/src/core/engine/host.ts +4 -2
  215. package/src/core/engine/index.ts +1 -0
  216. package/src/core/engine/library/binding.ts +2 -0
  217. package/src/core/engine/library/index.ts +11 -0
  218. package/src/core/engine/library/objects.ts +1 -6
  219. package/src/core/engine/request-body.ts +5 -7
  220. package/src/core/engine/request-plan.ts +3 -3
  221. package/src/core/engine/requests.ts +11 -8
  222. package/src/core/engine/series.ts +30 -6
  223. package/src/core/engine/session/record.ts +4 -4
  224. package/src/core/importer/calls.ts +274 -0
  225. package/src/core/importer/context.ts +197 -0
  226. package/src/core/importer/expressions.ts +247 -0
  227. package/src/core/importer/importer.ts +226 -0
  228. package/src/core/importer/index.ts +19 -0
  229. package/src/core/importer/lexer.ts +285 -0
  230. package/src/core/importer/names.ts +104 -0
  231. package/src/core/importer/orders.ts +307 -0
  232. package/src/core/importer/outputs.ts +245 -0
  233. package/src/core/importer/parser.ts +436 -0
  234. package/src/core/importer/presence.ts +164 -0
  235. package/src/core/importer/settle.ts +141 -0
  236. package/src/core/importer/statements.ts +331 -0
  237. package/src/core/importer/syntax.ts +144 -0
  238. package/src/core/importer/table.ts +191 -0
  239. package/src/core/importer/values.ts +241 -0
  240. package/src/core/index.ts +13 -0
  241. package/src/core/stdlib/calendar/civil.ts +5 -2
  242. package/src/core/version/version.generated.ts +1 -1
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Scopes, and the name each source name is written as.
3
+ *
4
+ * Two rules of the source dialect differ from OpenScript's, and both are about
5
+ * meaning rather than spelling. A declaration inside a block or a function
6
+ * always makes a new name there, hiding any outer name it shares a spelling
7
+ * with, where OpenScript updates the outer name instead and refuses to hide one
8
+ * (`language.md` 12.2 and 12.3). And the source dialect's built-ins live behind
9
+ * namespaces, so `rsi` or `step` is an ordinary name there and a library name or
10
+ * a reserved word here.
11
+ *
12
+ * So a declaration that would hide a visible name is renamed with a number, and
13
+ * a name OpenScript reserves or defines is renamed with `Value` after it. Every
14
+ * new spelling is checked against every name the source uses anywhere and every
15
+ * name OpenScript has, so a rename can never land on another name. Nothing
16
+ * else is renamed: a name that collides with neither keeps its spelling, and
17
+ * two sibling blocks may both declare it, as both languages allow.
18
+ */
19
+ import { NAMESPACES, isLibraryName } from '../check/index.js';
20
+ import { canonicalNumber } from '../emit/index.js';
21
+ import { RESERVED_WORDS } from '../tokens/index.js';
22
+ /** Words OpenScript gives a meaning of its own outside the library. */
23
+ const DECLARATION_WORDS = ['study', 'strategy', 'limits', 'version'];
24
+ export class Scope {
25
+ names = new Map();
26
+ parent;
27
+ constructor(parent) {
28
+ this.parent = parent;
29
+ }
30
+ find(name) {
31
+ return this.names.get(name) ?? this.parent?.find(name);
32
+ }
33
+ get isGlobal() {
34
+ return this.parent === undefined;
35
+ }
36
+ }
37
+ export class Namer {
38
+ #taken;
39
+ /** `used` is every identifier the source writes, anywhere. */
40
+ constructor(used) {
41
+ this.#taken = new Set(used);
42
+ }
43
+ /** Whether OpenScript already means something by this name. */
44
+ static reserved(name) {
45
+ return (RESERVED_WORDS.includes(name) ||
46
+ isLibraryName(name) ||
47
+ NAMESPACES.includes(name) ||
48
+ DECLARATION_WORDS.includes(name));
49
+ }
50
+ /** A spelling no source name and no OpenScript name has, starting from `base`. */
51
+ fresh(base) {
52
+ let candidate = base;
53
+ for (let n = 2; this.#taken.has(candidate) || Namer.reserved(candidate); n += 1) {
54
+ candidate = `${base}${canonicalNumber(n)}`;
55
+ }
56
+ this.#taken.add(candidate);
57
+ return candidate;
58
+ }
59
+ /**
60
+ * The spelling of a source name declared in `scope`.
61
+ *
62
+ * `hides` says whether an enclosing scope can already see the name, which is
63
+ * the case the source dialect reads as a new name and OpenScript would read
64
+ * as an update of the old one.
65
+ */
66
+ declare(name, hides) {
67
+ if (Namer.reserved(name))
68
+ return this.fresh(`${name}Value`);
69
+ if (hides)
70
+ return this.fresh(name);
71
+ return name;
72
+ }
73
+ }
74
+ /** A binding with the defaults a plain declaration has. */
75
+ export function binding(output, kind, topLevel) {
76
+ return { output, kind, topLevel, handle: undefined, present: false, whole: false, labels: undefined };
77
+ }
78
+ //# sourceMappingURL=names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.js","sourceRoot":"","sources":["../../../src/core/importer/names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAkBpD,uEAAuE;AACvE,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAErE,MAAM,OAAO,KAAK;IACP,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;IACnC,MAAM,CAAoB;IAEnC,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,IAAI,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,KAAK;IACP,MAAM,CAAc;IAE7B,8DAA8D;IAC9D,YAAY,IAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,+DAA+D;IAC/D,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,OAAO,CACJ,cAAoC,CAAC,QAAQ,CAAC,IAAI,CAAC;YACpD,aAAa,CAAC,IAAI,CAAC;YACnB,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;YACzB,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CACjC,CAAC;IACJ,CAAC;IAED,kFAAkF;IAClF,KAAK,CAAC,IAAY;QAChB,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAChF,SAAS,GAAG,GAAG,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,IAAY,EAAE,KAAc;QAClC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;QAC5D,IAAI,KAAK;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,2DAA2D;AAC3D,MAAM,UAAU,OAAO,CAAC,MAAc,EAAE,IAAiB,EAAE,QAAiB;IAC1E,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACxG,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Context, OutLine } from './context.js';
2
+ import type { CallExpr } from './syntax.js';
3
+ /** The declaration line, with every option it can carry. */
4
+ export declare function declarationLine(ctx: Context, call: CallExpr, path: string): string;
5
+ export declare function entryLines(ctx: Context, call: CallExpr, path: string, depth: number): OutLine[];
6
+ export declare function closeLines(ctx: Context, call: CallExpr, path: string, depth: number): OutLine[];
7
+ export declare function exitLines(ctx: Context, call: CallExpr, path: string, depth: number): OutLine[];
8
+ //# sourceMappingURL=orders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../../src/core/importer/orders.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGrD,OAAO,KAAK,EAAO,QAAQ,EAAQ,MAAM,aAAa,CAAC;AA4CvD,4DAA4D;AAC5D,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAsHlF;AAmCD,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CA4B/F;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAY/F;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAoC9F"}
@@ -0,0 +1,332 @@
1
+ /**
2
+ * The declaration, and the calls that trade.
3
+ *
4
+ * **The declaration** is written from the source's options where OpenScript
5
+ * has the same option (`language.md` 13.2 and 13.3), and every default the two
6
+ * languages disagree about is written out rather than left to the default: the
7
+ * source dialect starts a strategy with a million in capital where OpenScript
8
+ * starts with a hundred thousand, so a strategy that names no capital is given
9
+ * the source's. An option with no equivalent is left out of the declaration,
10
+ * because the file needs it, with OS9006 where it changes what is computed or
11
+ * traded and OS9009 where it changes only what is shown.
12
+ *
13
+ * **An entry** in the source dialect closes an opposite position before it
14
+ * opens its own, and is ignored while a position on its side is already held at
15
+ * the default pyramiding. It is written as exactly that: a `close()` behind a
16
+ * guard on the opposite side, then the entry behind a guard on its own side.
17
+ * **An exit** that names its entry is guarded by that entry's side, so that the
18
+ * levels of a long exit and a short exit do not replace each other on every
19
+ * bar, and a profit or loss given in ticks is converted to a price distance by
20
+ * the instrument's tick size. Every order call raises OS9010 once, because the
21
+ * two order models are close and are not the same.
22
+ */
23
+ import { diagnosticFor } from '../diagnostics/index.js';
24
+ import { bind } from './calls.js';
25
+ import { quoted } from './context.js';
26
+ import { pathOf } from './syntax.js';
27
+ import { PREC, numberText, translate, wrap } from './values.js';
28
+ /** The capital a source strategy starts with when it names none. */
29
+ const SOURCE_CAPITAL = '1000000';
30
+ const DECLARATION_POSITIONAL = ['title', 'shorttitle', 'overlay', 'format', 'precision'];
31
+ const DISPLAY = new Set([
32
+ 'max_bars_back', 'explicit_plot_zorder', 'max_lines_count', 'max_labels_count', 'max_boxes_count',
33
+ 'max_polylines_count', 'dynamic_requests', 'behind_chart', 'risk_free_rate', 'calc_bars_count',
34
+ ]);
35
+ /** Options that change what is computed or traded, with the literal that changes nothing. */
36
+ const INERT = {
37
+ timeframe: '""',
38
+ timeframe_gaps: 'true',
39
+ calc_on_order_fills: 'false',
40
+ calc_on_every_tick: 'false',
41
+ use_bar_magnifier: 'false',
42
+ fill_orders_on_standard_ohlc: 'false',
43
+ backtest_fill_limits_assumption: '0',
44
+ close_entries_rule: '"FIFO"',
45
+ margin_long: 'margin',
46
+ margin_short: 'margin',
47
+ };
48
+ const QTY_TYPES = { fixed: 'units', cash: 'cash', percent_of_equity: 'equityPercent' };
49
+ const COMMISSIONS = { percent: 'percent', cash_per_order: 'perTrade', cash_per_contract: 'perUnit' };
50
+ function literalOf(expr) {
51
+ if (expr === undefined)
52
+ return undefined;
53
+ if (expr.kind === 'number')
54
+ return numberText(expr.text);
55
+ if (expr.kind === 'bool')
56
+ return String(expr.value);
57
+ if (expr.kind === 'string')
58
+ return quoted(expr.value);
59
+ if (expr.kind === 'unary' && expr.op === '-' && expr.operand.kind === 'number')
60
+ return `-${numberText(expr.operand.text)}`;
61
+ return undefined;
62
+ }
63
+ function constantOf(expr, prefix) {
64
+ const path = expr === undefined ? undefined : pathOf(expr);
65
+ return path?.startsWith(prefix) ? path.slice(prefix.length) : undefined;
66
+ }
67
+ /** The declaration line, with every option it can carry. */
68
+ export function declarationLine(ctx, call, path) {
69
+ const strategy = path === 'strategy';
70
+ const bound = bind(call, DECLARATION_POSITIONAL);
71
+ const cannot = (arg, name) => ctx.note(diagnosticFor('OS9006', ctx.span(arg.at), { argument: name, call: path }));
72
+ const shownOnly = (arg, name) => ctx.note(diagnosticFor('OS9009', ctx.span(arg.at), { argument: name, call: path }));
73
+ for (const one of bound.stray)
74
+ cannot(one.arg, one.name);
75
+ const titleArg = bound.byName.get('title');
76
+ let title = titleArg?.value.kind === 'string' ? titleArg.value.value : undefined;
77
+ if (title === undefined) {
78
+ if (titleArg !== undefined)
79
+ cannot(titleArg, 'title');
80
+ title = 'Imported script';
81
+ }
82
+ const options = [quoted(title)];
83
+ const put = (name, value) => {
84
+ options.push(`${name} = ${value}`);
85
+ };
86
+ const commission = { type: undefined, given: false };
87
+ for (const [name, arg] of bound.byName) {
88
+ const literal = literalOf(arg.value);
89
+ switch (name) {
90
+ case 'title':
91
+ continue;
92
+ case 'shorttitle':
93
+ if (arg.value.kind === 'string')
94
+ put('short', literal ?? '""');
95
+ else
96
+ shownOnly(arg, name);
97
+ continue;
98
+ case 'overlay':
99
+ if (arg.value.kind === 'bool')
100
+ put('overlay', literal ?? 'false');
101
+ else
102
+ shownOnly(arg, name);
103
+ continue;
104
+ case 'precision':
105
+ if (arg.value.kind === 'number')
106
+ put('precision', literal ?? '4');
107
+ else
108
+ shownOnly(arg, name);
109
+ continue;
110
+ case 'format':
111
+ case 'scale': {
112
+ const word = constantOf(arg.value, `${name}.`);
113
+ const known = name === 'format' ? ['price', 'percent', 'volume'] : ['right', 'left', 'none'];
114
+ if (word !== undefined && known.includes(word))
115
+ put(name, quoted(word));
116
+ else
117
+ shownOnly(arg, name);
118
+ continue;
119
+ }
120
+ }
121
+ if (DISPLAY.has(name)) {
122
+ shownOnly(arg, name);
123
+ continue;
124
+ }
125
+ const inert = INERT[name];
126
+ if (inert !== undefined) {
127
+ if (literal !== inert)
128
+ cannot(arg, name);
129
+ continue;
130
+ }
131
+ if (!strategy) {
132
+ cannot(arg, name);
133
+ continue;
134
+ }
135
+ const numeric = arg.value.kind === 'number' ? literal : undefined;
136
+ switch (name) {
137
+ case 'initial_capital':
138
+ if (numeric !== undefined)
139
+ put('capital', numeric);
140
+ else
141
+ cannot(arg, name);
142
+ break;
143
+ case 'default_qty_value':
144
+ if (numeric !== undefined)
145
+ put('qty', numeric);
146
+ else
147
+ cannot(arg, name);
148
+ break;
149
+ case 'default_qty_type': {
150
+ const type = QTY_TYPES[constantOf(arg.value, 'strategy.') ?? ''];
151
+ ctx.qtyInUnits = type === 'units';
152
+ if (type !== undefined)
153
+ put('qtyType', quoted(type));
154
+ else
155
+ cannot(arg, name);
156
+ break;
157
+ }
158
+ case 'pyramiding':
159
+ if (numeric !== undefined && Number(numeric) <= 1)
160
+ break;
161
+ if (numeric !== undefined) {
162
+ ctx.pyramiding = Number(numeric);
163
+ put('pyramiding', numeric);
164
+ }
165
+ cannot(arg, name);
166
+ break;
167
+ case 'currency': {
168
+ const code = constantOf(arg.value, 'currency.');
169
+ if (code === undefined)
170
+ shownOnly(arg, name);
171
+ else if (code !== 'NONE')
172
+ put('currency', quoted(code));
173
+ break;
174
+ }
175
+ case 'slippage':
176
+ if (numeric !== undefined)
177
+ put('slippage', numeric);
178
+ else
179
+ cannot(arg, name);
180
+ break;
181
+ case 'commission_type':
182
+ commission.type = COMMISSIONS[constantOf(arg.value, 'strategy.commission.') ?? ''];
183
+ if (commission.type === undefined)
184
+ cannot(arg, name);
185
+ break;
186
+ case 'commission_value':
187
+ if (numeric !== undefined) {
188
+ put('commission', numeric);
189
+ commission.given = true;
190
+ }
191
+ else
192
+ cannot(arg, name);
193
+ break;
194
+ case 'process_orders_on_close':
195
+ if (literal === 'true')
196
+ put('fillOn', '"close"');
197
+ else if (literal !== 'false')
198
+ cannot(arg, name);
199
+ break;
200
+ default:
201
+ cannot(arg, name);
202
+ }
203
+ }
204
+ if (strategy) {
205
+ if (!bound.byName.has('initial_capital'))
206
+ put('capital', SOURCE_CAPITAL);
207
+ if (commission.given)
208
+ put('commissionType', quoted(commission.type ?? 'percent'));
209
+ }
210
+ return `${strategy ? 'strategy' : 'study'}(${options.join(', ')})`;
211
+ }
212
+ /** OS9010, once per order call. */
213
+ function orderNote(ctx, call, path) {
214
+ ctx.note(diagnosticFor('OS9010', ctx.span(call.callee.at), { call: path }), `OS9010 ${path}`);
215
+ }
216
+ /**
217
+ * Refuses the first argument that changes the order with no equivalent, and
218
+ * reports every one that changes only its label. Returns whether to go on.
219
+ */
220
+ function sortArguments(ctx, path, bound, carried, refused) {
221
+ const first = bound.stray[0];
222
+ if (first !== undefined) {
223
+ ctx.refuse(diagnosticFor('OS9006', ctx.span(first.arg.at), { argument: first.name, call: path }));
224
+ return false;
225
+ }
226
+ for (const [name, arg] of bound.byName) {
227
+ if (carried.includes(name))
228
+ continue;
229
+ if (refused.includes(name) || !(name.startsWith('comment') || name.startsWith('alert') || name === 'disable_alert')) {
230
+ ctx.refuse(diagnosticFor('OS9006', ctx.span(arg.at), { argument: name, call: path }));
231
+ return false;
232
+ }
233
+ ctx.note(diagnosticFor('OS9009', ctx.span(arg.at), { argument: name, call: path }));
234
+ }
235
+ return true;
236
+ }
237
+ function required(ctx, call, path, bound, name) {
238
+ const arg = bound.byName.get(name);
239
+ if (arg !== undefined)
240
+ return translate(ctx, arg.value).text;
241
+ ctx.refuse(diagnosticFor('OS9006', ctx.span(call.at), { argument: name, call: path }));
242
+ return undefined;
243
+ }
244
+ export function entryLines(ctx, call, path, depth) {
245
+ const bound = bind(call, ['id', 'direction', 'qty', 'limit', 'stop']);
246
+ if (!sortArguments(ctx, path, bound, ['id', 'direction', 'qty'], ['limit', 'stop', 'oca_name', 'oca_type']))
247
+ return [];
248
+ const tag = required(ctx, call, path, bound, 'id');
249
+ const direction = constantOf(bound.byName.get('direction')?.value, 'strategy.');
250
+ if (tag === undefined)
251
+ return [];
252
+ if (direction !== 'long' && direction !== 'short') {
253
+ ctx.refuse(diagnosticFor('OS9006', ctx.span(bound.byName.get('direction')?.at ?? call.at), { argument: 'direction', call: path }));
254
+ return [];
255
+ }
256
+ const qty = bound.byName.get('qty');
257
+ if (qty !== undefined && !ctx.qtyInUnits) {
258
+ ctx.refuse(diagnosticFor('OS9006', ctx.span(qty.at), { argument: 'qty', call: path }));
259
+ return [];
260
+ }
261
+ orderNote(ctx, call, path);
262
+ const args = qty === undefined ? `tag = ${tag}` : `qty = ${translate(ctx, qty.value).text}, tag = ${tag}`;
263
+ const long = direction === 'long';
264
+ const lines = [
265
+ { depth, text: `if pos.size ${long ? '<' : '>'} 0` },
266
+ { depth: depth + 1, text: 'close()' },
267
+ ];
268
+ if (ctx.pyramiding <= 1) {
269
+ lines.push({ depth, text: `if pos.size ${long ? '<=' : '>='} 0` }, { depth: depth + 1, text: `${long ? 'buy' : 'sell'}(${args})` });
270
+ }
271
+ else {
272
+ lines.push({ depth, text: `${long ? 'buy' : 'sell'}(${args})` });
273
+ }
274
+ return lines;
275
+ }
276
+ export function closeLines(ctx, call, path, depth) {
277
+ const all = path === 'strategy.close_all';
278
+ const bound = bind(call, all ? [] : ['id']);
279
+ if (!sortArguments(ctx, path, bound, ['id'], ['qty', 'qty_percent', 'immediately']))
280
+ return [];
281
+ if (all) {
282
+ orderNote(ctx, call, path);
283
+ return [{ depth, text: 'close()' }];
284
+ }
285
+ const tag = required(ctx, call, path, bound, 'id');
286
+ if (tag === undefined)
287
+ return [];
288
+ orderNote(ctx, call, path);
289
+ return [{ depth, text: `close(tag = ${tag})` }];
290
+ }
291
+ export function exitLines(ctx, call, path, depth) {
292
+ const bound = bind(call, ['id', 'from_entry', 'qty', 'qty_percent', 'profit', 'limit', 'loss', 'stop']);
293
+ const carried = ['id', 'from_entry', 'profit', 'limit', 'loss', 'stop'];
294
+ const refused = ['qty', 'qty_percent', 'trail_price', 'trail_points', 'trail_offset', 'oca_name'];
295
+ if (!sortArguments(ctx, path, bound, carried, refused))
296
+ return [];
297
+ for (const [distance, price] of [['profit', 'limit'], ['loss', 'stop']]) {
298
+ const both = bound.byName.get(distance);
299
+ if (both !== undefined && bound.byName.has(price)) {
300
+ ctx.refuse(diagnosticFor('OS9006', ctx.span(both.at), { argument: distance, call: path }));
301
+ return [];
302
+ }
303
+ }
304
+ const tag = required(ctx, call, path, bound, 'id');
305
+ if (tag === undefined)
306
+ return [];
307
+ let guard;
308
+ const from = bound.byName.get('from_entry');
309
+ if (from !== undefined) {
310
+ const side = from.value.kind === 'string' ? ctx.facts.entries.get(from.value.value) : undefined;
311
+ if (side === undefined) {
312
+ ctx.refuse(diagnosticFor('OS9006', ctx.span(from.at), { argument: 'from_entry', call: path }));
313
+ return [];
314
+ }
315
+ guard = side === 'long' ? 'if pos.size >= 0' : 'if pos.size <= 0';
316
+ }
317
+ const parts = [`tag = ${tag}`];
318
+ for (const name of ['stop', 'limit']) {
319
+ const arg = bound.byName.get(name);
320
+ if (arg !== undefined)
321
+ parts.push(`${name} = ${translate(ctx, arg.value).text}`);
322
+ }
323
+ for (const name of ['profit', 'loss']) {
324
+ const arg = bound.byName.get(name);
325
+ if (arg !== undefined)
326
+ parts.push(`${name} = ${wrap(translate(ctx, arg.value), PREC.multiplicative)} * chart.tickSize`);
327
+ }
328
+ orderNote(ctx, call, path);
329
+ const line = `exit(${parts.join(', ')})`;
330
+ return guard === undefined ? [{ depth, text: line }] : [{ depth, text: guard }, { depth: depth + 1, text: line }];
331
+ }
332
+ //# sourceMappingURL=orders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orders.js","sourceRoot":"","sources":["../../../src/core/importer/orders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { Context, OutLine } from './context.js';
2
+ import type { CallExpr } from './syntax.js';
3
+ import type { Out } from './values.js';
4
+ /**
5
+ * `input.int(14, "Length", minval = 1)` and its siblings, as one `input()`.
6
+ *
7
+ * `assigned` is whether the input is the whole value of a declaration, where
8
+ * OpenScript takes the name as the title and a title may be left out.
9
+ */
10
+ export declare function translateInput(ctx: Context, call: CallExpr, path: string, assigned: boolean): Out;
11
+ export declare function plotCall(ctx: Context, call: CallExpr, path: string): Out;
12
+ export declare function levelCall(ctx: Context, call: CallExpr, path: string): Out;
13
+ /** `fill` between two named plots; a level or an expression in either place is refused. */
14
+ export declare function fillLine(ctx: Context, call: CallExpr, path: string, depth: number): OutLine[];
15
+ /** `bgcolor` and `barcolor`, which paint one bar and take a colour. */
16
+ export declare function paintLine(ctx: Context, call: CallExpr, path: string, target: string, depth: number): OutLine[];
17
+ /** `plotshape(cond, ...)`, which draws on the bars its series holds: a marker behind an if. */
18
+ export declare function shapeLines(ctx: Context, call: CallExpr, path: string, depth: number): OutLine[];
19
+ //# sourceMappingURL=outputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputs.d.ts","sourceRoot":"","sources":["../../../src/core/importer/outputs.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGrD,OAAO,KAAK,EAAO,QAAQ,EAAQ,MAAM,aAAa,CAAC;AAEvD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAcvC;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,GAAG,CA+BjG;AAoCD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAsBxE;AAID,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAqBzE;AAED,2FAA2F;AAC3F,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAwB7F;AAED,uEAAuE;AACvE,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAU9G;AAkBD,+FAA+F;AAC/F,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CA8B/F"}