@tradejs/strategies 1.0.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.
package/README.md ADDED
@@ -0,0 +1,37 @@
1
+ # @tradejs/strategies
2
+
3
+ Built-in TradeJS strategy plugin package.
4
+
5
+ - Homepage: https://tradejs.dev
6
+ - Documentation: https://docs.tradejs.dev
7
+ - Quickstart: https://docs.tradejs.dev/getting-started/quickstart
8
+
9
+ ## What It Provides
10
+
11
+ This package contains the built-in strategy plugin catalog.
12
+
13
+ It is intended to be connected through `tradejs.config.ts` and used by CLI/runtime/app flows.
14
+
15
+ ## Install
16
+
17
+ ```bash
18
+ npm i @tradejs/strategies @tradejs/core @tradejs/node
19
+ ```
20
+
21
+ ## Usage
22
+
23
+ Most projects should not add this package manually. It is already included by `@tradejs/base`.
24
+
25
+ If you want to reference it explicitly:
26
+
27
+ ```ts
28
+ import { defineConfig } from '@tradejs/core/config';
29
+
30
+ export default defineConfig({
31
+ strategies: ['@tradejs/strategies'],
32
+ });
33
+ ```
34
+
35
+ ## For Custom Strategies
36
+
37
+ Use `defineStrategyPlugin(...)` from `@tradejs/core/config` in your own package and add that package to `strategies` in `tradejs.config.ts`.
@@ -0,0 +1,27 @@
1
+ // src/Breakout/adapters/ai.ts
2
+ var breakoutAiAdapter = {};
3
+
4
+ // src/Breakout/adapters/ml.ts
5
+ import { mapMlRuntimeFromConfig } from "@tradejs/core/strategies";
6
+ var breakoutMlAdapter = {
7
+ mapEntryRuntimeFromConfig: (config) => mapMlRuntimeFromConfig(config)
8
+ };
9
+
10
+ // src/Breakout/manifest.ts
11
+ var breakoutManifest = {
12
+ name: "Breakout",
13
+ entryRuntimeDefaults: {
14
+ ai: {
15
+ enabled: false
16
+ },
17
+ ml: {
18
+ enabled: false
19
+ }
20
+ },
21
+ aiAdapter: breakoutAiAdapter,
22
+ mlAdapter: breakoutMlAdapter
23
+ };
24
+
25
+ export {
26
+ breakoutManifest
27
+ };
@@ -0,0 +1,48 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
8
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
9
+ }) : x)(function(x) {
10
+ if (typeof require !== "undefined") return require.apply(this, arguments);
11
+ throw Error('Dynamic require of "' + x + '" is not supported');
12
+ });
13
+ var __esm = (fn, res) => function __init() {
14
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
15
+ };
16
+ var __commonJS = (cb, mod) => function __require2() {
17
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
18
+ };
19
+ var __export = (target, all) => {
20
+ for (var name in all)
21
+ __defProp(target, name, { get: all[name], enumerable: true });
22
+ };
23
+ var __copyProps = (to, from, except, desc) => {
24
+ if (from && typeof from === "object" || typeof from === "function") {
25
+ for (let key of __getOwnPropNames(from))
26
+ if (!__hasOwnProp.call(to, key) && key !== except)
27
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
28
+ }
29
+ return to;
30
+ };
31
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
32
+ // If the importer is in node compatibility mode or this is not an ESM
33
+ // file that has been converted to a CommonJS file using a Babel-
34
+ // compatible transform (i.e. "__esModule" has not been set), then set
35
+ // "default" to the CommonJS "module.exports" for node compatibility.
36
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
37
+ mod
38
+ ));
39
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
40
+
41
+ export {
42
+ __require,
43
+ __esm,
44
+ __commonJS,
45
+ __export,
46
+ __toESM,
47
+ __toCommonJS
48
+ };
@@ -0,0 +1,137 @@
1
+ // src/TrendLine/adapters/ai.ts
2
+ import { mapAiRuntimeFromConfig } from "@tradejs/core/strategies";
3
+ var TRENDLINE_CONTEXT_PROMPT = `
4
+ \u0414\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u0434\u043B\u044F trendline-\u0441\u0435\u0442\u0430\u043F\u043E\u0432:
5
+ - \u042D\u0442\u043E \u0441\u0435\u0442\u0430\u043F \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u043F\u0440\u043E\u0431\u043E\u044F/\u0440\u0435\u0430\u043A\u0446\u0438\u0438 \u043E\u0442 \u0442\u0440\u0435\u043D\u0434\u043E\u0432\u043E\u0439 \u043B\u0438\u043D\u0438\u0438; \u043F\u043E\u043B\u0435 figures.trendline \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u0433\u0435\u043E\u043C\u0435\u0442\u0440\u0438\u044E \u044D\u0442\u043E\u0439 \u043B\u0438\u043D\u0438\u0438.
6
+ - \u0414\u043B\u044F TrendLine \u0440\u043E\u043B\u044C \u0433\u0435\u043E\u043C\u0435\u0442\u0440\u0438\u0438/\u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B \u0446\u0435\u043D\u044B \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u043D\u0435\u0435 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u043D\u044B\u0445 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0439.
7
+ `;
8
+ var TRENDLINE_PAYLOAD_PROMPT = `
9
+ - \u0412 payload.figures.trendline \u043F\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044F \u043F\u043E\u043B\u043D\u0430\u044F \u0433\u0435\u043E\u043C\u0435\u0442\u0440\u0438\u044F \u0442\u0440\u0435\u043D\u0434\u043E\u0432\u043E\u0439 \u043B\u0438\u043D\u0438\u0438 (\u0431\u0435\u0437 trim), \u0447\u0442\u043E\u0431\u044B \u043C\u043E\u0436\u043D\u043E \u0431\u044B\u043B\u043E \u043E\u0446\u0435\u043D\u0438\u0432\u0430\u0442\u044C \u043A\u0430\u0441\u0430\u043D\u0438\u044F/\u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0443.
10
+ `;
11
+ var trendLineAiAdapter = {
12
+ // Shared builder trims nested series/figures; TrendLine keeps trendline geometry untrimmed on purpose.
13
+ buildPayload: ({ signal, basePayload }) => ({
14
+ ...basePayload,
15
+ figures: {
16
+ ...basePayload.figures,
17
+ // Keep trendline geometry untrimmed for LLM reasoning.
18
+ trendline: signal.figures?.trendLine ?? null
19
+ }
20
+ }),
21
+ buildSystemPromptAddon: () => `
22
+ ${TRENDLINE_CONTEXT_PROMPT}
23
+ ${TRENDLINE_PAYLOAD_PROMPT}
24
+ `,
25
+ mapEntryRuntimeFromConfig: (config2) => mapAiRuntimeFromConfig(
26
+ config2
27
+ )
28
+ // Intentionally omitted now: base human prompt is sufficient.
29
+ // buildHumanPromptAddon: () => '',
30
+ };
31
+
32
+ // src/TrendLine/adapters/ml.ts
33
+ import { mapMlRuntimeFromConfig } from "@tradejs/core/strategies";
34
+ var toTrendLineMlStrategyConfig = (input) => {
35
+ if (!input) return void 0;
36
+ return {
37
+ ...input,
38
+ TRENDLINE_CONFIG: input.TRENDLINE_CONFIG ?? input.TRENDLINE ?? {}
39
+ };
40
+ };
41
+ var trendLineMlAdapter = {
42
+ normalizeSignal: (signal) => {
43
+ const nextSignal = {
44
+ ...signal,
45
+ indicators: {
46
+ ...signal.indicators ?? {}
47
+ }
48
+ };
49
+ const additional = signal.additionalIndicators ?? {};
50
+ if (nextSignal.indicators.touches == null && additional.touches != null) {
51
+ nextSignal.indicators.touches = additional.touches;
52
+ }
53
+ if (nextSignal.indicators.distance == null && additional.distance != null) {
54
+ nextSignal.indicators.distance = additional.distance;
55
+ }
56
+ return nextSignal;
57
+ },
58
+ normalizeStrategyConfig: (strategyConfig) => {
59
+ return toTrendLineMlStrategyConfig(strategyConfig);
60
+ },
61
+ mapEntryRuntimeFromConfig: (config2) => mapMlRuntimeFromConfig(config2, {
62
+ strategyConfig: toTrendLineMlStrategyConfig(
63
+ config2
64
+ )
65
+ })
66
+ };
67
+
68
+ // src/TrendLine/hooks.ts
69
+ import { createCloseOppositeBeforePlaceOrderHook } from "@tradejs/node/strategies";
70
+ var trendLineBeforePlaceOrderHook = createCloseOppositeBeforePlaceOrderHook({
71
+ isEnabled: (config2) => Boolean(config2.CLOSE_OPPOSITE_POSITIONS)
72
+ });
73
+
74
+ // src/TrendLine/manifest.ts
75
+ var trendLineManifest = {
76
+ name: "TrendLine",
77
+ hooks: {
78
+ beforePlaceOrder: trendLineBeforePlaceOrderHook
79
+ },
80
+ aiAdapter: trendLineAiAdapter,
81
+ mlAdapter: trendLineMlAdapter
82
+ };
83
+
84
+ // src/TrendLine/config.ts
85
+ var config = {
86
+ ENV: "BACKTEST",
87
+ INTERVAL: "15",
88
+ MAKE_ORDERS: true,
89
+ CLOSE_OPPOSITE_POSITIONS: false,
90
+ BACKTEST_PRICE_MODE: "mid",
91
+ AI_ENABLED: false,
92
+ ML_ENABLED: false,
93
+ ML_THRESHOLD: 0.1,
94
+ MIN_AI_QUALITY: 3,
95
+ FEE_PERCENT: 5e-3,
96
+ MAX_LOSS_VALUE: 10,
97
+ MAX_CORRELATION: 0.45,
98
+ MA_FAST: 14,
99
+ MA_MEDIUM: 49,
100
+ MA_SLOW: 50,
101
+ OBV_SMA: 10,
102
+ ATR: 14,
103
+ ATR_PCT_SHORT: 7,
104
+ ATR_PCT_LONG: 30,
105
+ BB: 20,
106
+ BB_STD: 2,
107
+ MACD_FAST: 12,
108
+ MACD_SLOW: 26,
109
+ MACD_SIGNAL: 9,
110
+ LEVEL_LOOKBACK: 20,
111
+ LEVEL_DELAY: 2,
112
+ TRENDLINE: {
113
+ minTouches: 4,
114
+ offset: 3,
115
+ epsilon: 3e-3,
116
+ epsilonOffset: 4e-3
117
+ },
118
+ HIGHS: {
119
+ enable: true,
120
+ direction: "LONG",
121
+ TP: 4,
122
+ SL: 1.3,
123
+ minRiskRatio: 2
124
+ },
125
+ LOWS: {
126
+ enable: true,
127
+ direction: "SHORT",
128
+ TP: 4,
129
+ SL: 1.3,
130
+ minRiskRatio: 2
131
+ }
132
+ };
133
+
134
+ export {
135
+ trendLineManifest,
136
+ config
137
+ };
@@ -0,0 +1,28 @@
1
+ // src/MaStrategy/adapters/ai.ts
2
+ import { mapAiRuntimeFromConfig } from "@tradejs/core/strategies";
3
+ var maStrategyAiAdapter = {
4
+ mapEntryRuntimeFromConfig: (config) => mapAiRuntimeFromConfig(
5
+ config
6
+ )
7
+ };
8
+
9
+ // src/MaStrategy/adapters/ml.ts
10
+ import { mapMlRuntimeFromConfig } from "@tradejs/core/strategies";
11
+ var maStrategyMlAdapter = {
12
+ mapEntryRuntimeFromConfig: (config) => mapMlRuntimeFromConfig(
13
+ config
14
+ )
15
+ };
16
+
17
+ // src/MaStrategy/manifest.ts
18
+ var maStrategyManifest = {
19
+ name: "MaStrategy",
20
+ aiAdapter: maStrategyAiAdapter,
21
+ mlAdapter: maStrategyMlAdapter
22
+ };
23
+
24
+ export {
25
+ maStrategyAiAdapter,
26
+ maStrategyMlAdapter,
27
+ maStrategyManifest
28
+ };
@@ -0,0 +1,28 @@
1
+ // src/AdaptiveMomentumRibbon/adapters/ai.ts
2
+ import { mapAiRuntimeFromConfig } from "@tradejs/core/strategies";
3
+ var adaptiveMomentumRibbonAiAdapter = {
4
+ mapEntryRuntimeFromConfig: (config) => mapAiRuntimeFromConfig(
5
+ config
6
+ )
7
+ };
8
+
9
+ // src/AdaptiveMomentumRibbon/adapters/ml.ts
10
+ import { mapMlRuntimeFromConfig } from "@tradejs/core/strategies";
11
+ var adaptiveMomentumRibbonMlAdapter = {
12
+ mapEntryRuntimeFromConfig: (config) => mapMlRuntimeFromConfig(
13
+ config
14
+ )
15
+ };
16
+
17
+ // src/AdaptiveMomentumRibbon/manifest.ts
18
+ var adaptiveMomentumRibbonManifest = {
19
+ name: "AdaptiveMomentumRibbon",
20
+ aiAdapter: adaptiveMomentumRibbonAiAdapter,
21
+ mlAdapter: adaptiveMomentumRibbonMlAdapter
22
+ };
23
+
24
+ export {
25
+ adaptiveMomentumRibbonAiAdapter,
26
+ adaptiveMomentumRibbonMlAdapter,
27
+ adaptiveMomentumRibbonManifest
28
+ };
@@ -0,0 +1,67 @@
1
+ // src/VolumeDivergence/adapters/ai.ts
2
+ import { mapAiRuntimeFromConfig } from "@tradejs/core/strategies";
3
+ var VOLUME_DIVERGENCE_CONTEXT_PROMPT = `
4
+ \u0414\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u0434\u043B\u044F Volume Divergence Reversal Signals:
5
+ - \u0421\u0438\u0433\u043D\u0430\u043B \u0441\u0442\u0440\u043E\u0438\u0442\u0441\u044F \u043D\u0430 \u0434\u0438\u0432\u0435\u0440\u0433\u0435\u043D\u0446\u0438\u0438 \u0446\u0435\u043D\u044B \u0438 \u043D\u043E\u0440\u043C\u0430\u043B\u0438\u0437\u043E\u0432\u0430\u043D\u043D\u043E\u0433\u043E \u043E\u0431\u044A\u0435\u043C\u0430 (0-100).
6
+ - Bullish divergence: price \u0434\u0435\u043B\u0430\u0435\u0442 lower low, volume \u0434\u0435\u043B\u0430\u0435\u0442 higher low.
7
+ - Bearish divergence: price \u0434\u0435\u043B\u0430\u0435\u0442 higher high, volume \u0434\u0435\u043B\u0430\u0435\u0442 lower high.
8
+ - \u0412 additionalIndicators.deltaAtPivot \u043F\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044F proxy net-volume (\u043E\u0446\u0435\u043D\u043A\u0430 \u043F\u043E \u0442\u0435\u043B\u0443 \u0441\u0432\u0435\u0447\u0438), \u044D\u0442\u043E \u043D\u0435 lower-timeframe volume delta TradingView.
9
+ `;
10
+ var volumeDivergenceAiAdapter = {
11
+ buildSystemPromptAddon: () => `
12
+ ${VOLUME_DIVERGENCE_CONTEXT_PROMPT}
13
+ `,
14
+ mapEntryRuntimeFromConfig: (config) => mapAiRuntimeFromConfig(
15
+ config
16
+ )
17
+ };
18
+
19
+ // src/VolumeDivergence/adapters/ml.ts
20
+ import { mapMlRuntimeFromConfig } from "@tradejs/core/strategies";
21
+ var toVolumeDivergenceMlStrategyConfig = (input) => {
22
+ if (!input) return void 0;
23
+ return {
24
+ ...input,
25
+ VOLUME_DIVERGENCE_CONFIG: input.VOLUME_DIVERGENCE_CONFIG ?? {
26
+ normalizationLength: input.NORMALIZATION_LENGTH,
27
+ pivotLookbackLeft: input.PIVOT_LOOKBACK_LEFT,
28
+ pivotLookbackRight: input.PIVOT_LOOKBACK_RIGHT,
29
+ maxBarsBetweenPivots: input.MAX_BARS_BETWEEN_PIVOTS,
30
+ minBarsBetweenPivots: input.MIN_BARS_BETWEEN_PIVOTS,
31
+ bullish: input.BULLISH,
32
+ bearish: input.BEARISH
33
+ }
34
+ };
35
+ };
36
+ var volumeDivergenceMlAdapter = {
37
+ normalizeStrategyConfig: (strategyConfig) => {
38
+ return toVolumeDivergenceMlStrategyConfig(strategyConfig);
39
+ },
40
+ mapEntryRuntimeFromConfig: (config) => mapMlRuntimeFromConfig(config, {
41
+ strategyConfig: toVolumeDivergenceMlStrategyConfig(
42
+ config
43
+ )
44
+ })
45
+ };
46
+
47
+ // src/VolumeDivergence/hooks.ts
48
+ import { createCloseOppositeBeforePlaceOrderHook } from "@tradejs/node/strategies";
49
+ var volumeDivergenceBeforePlaceOrderHook = createCloseOppositeBeforePlaceOrderHook({
50
+ isEnabled: (config) => Boolean(config.CLOSE_OPPOSITE_POSITIONS)
51
+ });
52
+
53
+ // src/VolumeDivergence/manifest.ts
54
+ var volumeDivergenceManifest = {
55
+ name: "VolumeDivergence",
56
+ hooks: {
57
+ beforePlaceOrder: volumeDivergenceBeforePlaceOrderHook
58
+ },
59
+ aiAdapter: volumeDivergenceAiAdapter,
60
+ mlAdapter: volumeDivergenceMlAdapter
61
+ };
62
+
63
+ export {
64
+ volumeDivergenceAiAdapter,
65
+ volumeDivergenceMlAdapter,
66
+ volumeDivergenceManifest
67
+ };
@@ -0,0 +1,65 @@
1
+ import { Interval, TrendLineOptions, StrategyAiAdapter, StrategyMlAdapter, StrategyRegistryEntry } from '@tradejs/types';
2
+
3
+ declare const config: {
4
+ readonly ENV: "BACKTEST";
5
+ readonly INTERVAL: Interval;
6
+ readonly MAKE_ORDERS: true;
7
+ readonly CLOSE_OPPOSITE_POSITIONS: false;
8
+ readonly BACKTEST_PRICE_MODE: "mid";
9
+ readonly AI_ENABLED: false;
10
+ readonly ML_ENABLED: false;
11
+ readonly ML_THRESHOLD: 0.1;
12
+ readonly MIN_AI_QUALITY: 3;
13
+ readonly FEE_PERCENT: 0.005;
14
+ readonly MAX_LOSS_VALUE: 10;
15
+ readonly MAX_CORRELATION: 0.45;
16
+ readonly MA_FAST: 14;
17
+ readonly MA_MEDIUM: 49;
18
+ readonly MA_SLOW: 50;
19
+ readonly OBV_SMA: 10;
20
+ readonly ATR: 14;
21
+ readonly ATR_PCT_SHORT: 7;
22
+ readonly ATR_PCT_LONG: 30;
23
+ readonly BB: 20;
24
+ readonly BB_STD: 2;
25
+ readonly MACD_FAST: 12;
26
+ readonly MACD_SLOW: 26;
27
+ readonly MACD_SIGNAL: 9;
28
+ readonly LEVEL_LOOKBACK: 20;
29
+ readonly LEVEL_DELAY: 2;
30
+ readonly TRENDLINE: Partial<TrendLineOptions>;
31
+ readonly HIGHS: {
32
+ readonly enable: true;
33
+ readonly direction: "LONG";
34
+ readonly TP: 4;
35
+ readonly SL: 1.3;
36
+ readonly minRiskRatio: 2;
37
+ };
38
+ readonly LOWS: {
39
+ readonly enable: true;
40
+ readonly direction: "SHORT";
41
+ readonly TP: 4;
42
+ readonly SL: 1.3;
43
+ readonly minRiskRatio: 2;
44
+ };
45
+ };
46
+
47
+ declare const adaptiveMomentumRibbonAiAdapter: StrategyAiAdapter;
48
+
49
+ declare const adaptiveMomentumRibbonMlAdapter: StrategyMlAdapter;
50
+
51
+ declare const maStrategyAiAdapter: StrategyAiAdapter;
52
+
53
+ declare const maStrategyMlAdapter: StrategyMlAdapter;
54
+
55
+ declare const volumeDivergenceAiAdapter: StrategyAiAdapter;
56
+
57
+ declare const volumeDivergenceMlAdapter: StrategyMlAdapter;
58
+
59
+ declare const strategyEntries: StrategyRegistryEntry[];
60
+
61
+ declare const _default: {
62
+ strategyEntries: StrategyRegistryEntry[];
63
+ };
64
+
65
+ export { adaptiveMomentumRibbonAiAdapter, adaptiveMomentumRibbonMlAdapter, _default as default, maStrategyAiAdapter, maStrategyMlAdapter, strategyEntries, config as trendLineDefaultConfig, volumeDivergenceAiAdapter, volumeDivergenceMlAdapter };
@@ -0,0 +1,65 @@
1
+ import { Interval, TrendLineOptions, StrategyAiAdapter, StrategyMlAdapter, StrategyRegistryEntry } from '@tradejs/types';
2
+
3
+ declare const config: {
4
+ readonly ENV: "BACKTEST";
5
+ readonly INTERVAL: Interval;
6
+ readonly MAKE_ORDERS: true;
7
+ readonly CLOSE_OPPOSITE_POSITIONS: false;
8
+ readonly BACKTEST_PRICE_MODE: "mid";
9
+ readonly AI_ENABLED: false;
10
+ readonly ML_ENABLED: false;
11
+ readonly ML_THRESHOLD: 0.1;
12
+ readonly MIN_AI_QUALITY: 3;
13
+ readonly FEE_PERCENT: 0.005;
14
+ readonly MAX_LOSS_VALUE: 10;
15
+ readonly MAX_CORRELATION: 0.45;
16
+ readonly MA_FAST: 14;
17
+ readonly MA_MEDIUM: 49;
18
+ readonly MA_SLOW: 50;
19
+ readonly OBV_SMA: 10;
20
+ readonly ATR: 14;
21
+ readonly ATR_PCT_SHORT: 7;
22
+ readonly ATR_PCT_LONG: 30;
23
+ readonly BB: 20;
24
+ readonly BB_STD: 2;
25
+ readonly MACD_FAST: 12;
26
+ readonly MACD_SLOW: 26;
27
+ readonly MACD_SIGNAL: 9;
28
+ readonly LEVEL_LOOKBACK: 20;
29
+ readonly LEVEL_DELAY: 2;
30
+ readonly TRENDLINE: Partial<TrendLineOptions>;
31
+ readonly HIGHS: {
32
+ readonly enable: true;
33
+ readonly direction: "LONG";
34
+ readonly TP: 4;
35
+ readonly SL: 1.3;
36
+ readonly minRiskRatio: 2;
37
+ };
38
+ readonly LOWS: {
39
+ readonly enable: true;
40
+ readonly direction: "SHORT";
41
+ readonly TP: 4;
42
+ readonly SL: 1.3;
43
+ readonly minRiskRatio: 2;
44
+ };
45
+ };
46
+
47
+ declare const adaptiveMomentumRibbonAiAdapter: StrategyAiAdapter;
48
+
49
+ declare const adaptiveMomentumRibbonMlAdapter: StrategyMlAdapter;
50
+
51
+ declare const maStrategyAiAdapter: StrategyAiAdapter;
52
+
53
+ declare const maStrategyMlAdapter: StrategyMlAdapter;
54
+
55
+ declare const volumeDivergenceAiAdapter: StrategyAiAdapter;
56
+
57
+ declare const volumeDivergenceMlAdapter: StrategyMlAdapter;
58
+
59
+ declare const strategyEntries: StrategyRegistryEntry[];
60
+
61
+ declare const _default: {
62
+ strategyEntries: StrategyRegistryEntry[];
63
+ };
64
+
65
+ export { adaptiveMomentumRibbonAiAdapter, adaptiveMomentumRibbonMlAdapter, _default as default, maStrategyAiAdapter, maStrategyMlAdapter, strategyEntries, config as trendLineDefaultConfig, volumeDivergenceAiAdapter, volumeDivergenceMlAdapter };