@tradejs/strategy-trend-follow 3.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/LICENSE +96 -0
- package/README.md +34 -0
- package/dist/index.cjs +1299 -0
- package/dist/index.d.cts +93 -0
- package/dist/index.d.ts +93 -0
- package/dist/index.js +1275 -0
- package/package.json +65 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { StrategyConfig, Interval, BacktestPriceMode, Direction, StrategyRegistryEntry, StrategyManifest, StrategyAiAdapter } from '@tradejs/types';
|
|
2
|
+
|
|
3
|
+
interface TrendFollowSideConfig {
|
|
4
|
+
enable: boolean;
|
|
5
|
+
direction: Direction;
|
|
6
|
+
minRiskRatio: number;
|
|
7
|
+
}
|
|
8
|
+
declare const config: {
|
|
9
|
+
readonly ENV: "BACKTEST";
|
|
10
|
+
readonly INTERVAL: Interval;
|
|
11
|
+
readonly MAKE_ORDERS: true;
|
|
12
|
+
readonly CLOSE_OPPOSITE_POSITIONS: false;
|
|
13
|
+
readonly BACKTEST_PRICE_MODE: "open";
|
|
14
|
+
readonly AI_ENABLED: false;
|
|
15
|
+
readonly AI_MODE: "llm";
|
|
16
|
+
readonly ML_ENABLED: false;
|
|
17
|
+
readonly ML_THRESHOLD: 0.1;
|
|
18
|
+
readonly MIN_AI_QUALITY: 3;
|
|
19
|
+
readonly FEE_PERCENT: 0.001;
|
|
20
|
+
readonly MAX_LOSS_VALUE: 10;
|
|
21
|
+
readonly MA_FAST: 14;
|
|
22
|
+
readonly MA_MEDIUM: 49;
|
|
23
|
+
readonly MA_SLOW: 50;
|
|
24
|
+
readonly OBV_SMA: 10;
|
|
25
|
+
readonly ATR: 14;
|
|
26
|
+
readonly ATR_PCT_SHORT: 7;
|
|
27
|
+
readonly ATR_PCT_LONG: 30;
|
|
28
|
+
readonly BB: 20;
|
|
29
|
+
readonly BB_STD: 2;
|
|
30
|
+
readonly MACD_FAST: 12;
|
|
31
|
+
readonly MACD_SLOW: 26;
|
|
32
|
+
readonly MACD_SIGNAL: 9;
|
|
33
|
+
readonly TRENDFOLLOW_PIVOT_LENGTH: 10;
|
|
34
|
+
readonly TRENDFOLLOW_MIN_BARS_BETWEEN_SIGNALS: 0;
|
|
35
|
+
readonly TRENDFOLLOW_ATR_LENGTH: 14;
|
|
36
|
+
readonly TRENDFOLLOW_ATR_MULT: 4;
|
|
37
|
+
readonly TRENDFOLLOW_SIGNAL_OFFSET_ATR: 0.35;
|
|
38
|
+
readonly TRENDFOLLOW_REQUIRE_STRUCTURE_BREAKOUT: false;
|
|
39
|
+
readonly TRENDFOLLOW_REQUIRE_TREND_ALIGNMENT: false;
|
|
40
|
+
readonly TRENDFOLLOW_REQUIRE_BENCHMARK_ALIGNMENT: false;
|
|
41
|
+
readonly TRENDFOLLOW_MIN_VOLUME_REL20: 0;
|
|
42
|
+
readonly TRENDFOLLOW_MIN_STRUCTURE_ACCEPTANCE_CLOSES: 0;
|
|
43
|
+
readonly TRENDFOLLOW_MIN_BREAKOUT_BODY_ATR: 0;
|
|
44
|
+
readonly TRENDFOLLOW_MIN_TREND_PERSISTENCE: 0;
|
|
45
|
+
readonly TRENDFOLLOW_MIN_TREND_PERSISTENCE_LONG: 0.5;
|
|
46
|
+
readonly TRENDFOLLOW_MIN_TREND_PERSISTENCE_SHORT: 0.5;
|
|
47
|
+
readonly TRENDFOLLOW_MAX_RSI: 0;
|
|
48
|
+
readonly TRENDFOLLOW_MAX_RSI_LONG: 75;
|
|
49
|
+
readonly TRENDFOLLOW_MAX_RSI_SHORT: 0;
|
|
50
|
+
readonly TRENDFOLLOW_MAX_BB_WIDTH_PCT: 0;
|
|
51
|
+
readonly TRENDFOLLOW_MAX_BB_WIDTH_PCT_LONG: 0;
|
|
52
|
+
readonly TRENDFOLLOW_MAX_BB_WIDTH_PCT_SHORT: 8;
|
|
53
|
+
readonly TRENDFOLLOW_MIN_BREAKOUT_DISTANCE_PCT: 0;
|
|
54
|
+
readonly TRENDFOLLOW_MIN_BREAKOUT_DISTANCE_PCT_LONG: 3;
|
|
55
|
+
readonly TRENDFOLLOW_MIN_BREAKOUT_DISTANCE_PCT_SHORT: 2;
|
|
56
|
+
readonly TRENDFOLLOW_MAX_BREAKOUT_DISTANCE_PCT: 0;
|
|
57
|
+
readonly TRENDFOLLOW_TARGET_R_MULT: 2;
|
|
58
|
+
readonly TRENDFOLLOW_TARGET_R_MULT_LONG: 1.4;
|
|
59
|
+
readonly TRENDFOLLOW_TARGET_R_MULT_SHORT: 1.2;
|
|
60
|
+
readonly TRENDFOLLOW_EXIT_ON_TRAIL_STOP: true;
|
|
61
|
+
readonly TRENDFOLLOW_EXIT_ON_OPPOSITE_SIGNAL: true;
|
|
62
|
+
readonly TRENDFOLLOW_MAX_FIGURE_POINTS: 180;
|
|
63
|
+
readonly LONG: {
|
|
64
|
+
readonly enable: true;
|
|
65
|
+
readonly direction: "LONG";
|
|
66
|
+
readonly minRiskRatio: 0.8;
|
|
67
|
+
};
|
|
68
|
+
readonly SHORT: {
|
|
69
|
+
readonly enable: true;
|
|
70
|
+
readonly direction: "SHORT";
|
|
71
|
+
readonly minRiskRatio: 0.8;
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
type TrendFollowConfig = StrategyConfig & Omit<typeof config, "BACKTEST_PRICE_MODE" | "LONG" | "SHORT"> & {
|
|
75
|
+
BACKTEST_PRICE_MODE: BacktestPriceMode;
|
|
76
|
+
LONG: TrendFollowSideConfig;
|
|
77
|
+
SHORT: TrendFollowSideConfig;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
declare const TrendFollowStrategyDefinition: StrategyRegistryEntry<TrendFollowConfig>;
|
|
81
|
+
|
|
82
|
+
declare const trendFollowManifest: StrategyManifest;
|
|
83
|
+
|
|
84
|
+
declare const trendFollowAiAdapter: StrategyAiAdapter;
|
|
85
|
+
|
|
86
|
+
declare const strategyEntries: StrategyRegistryEntry[];
|
|
87
|
+
declare const getBuiltInStrategyDefaultConfig: (strategyName: string) => StrategyConfig | undefined;
|
|
88
|
+
|
|
89
|
+
declare const _default: {
|
|
90
|
+
strategyEntries: StrategyRegistryEntry<any>[];
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
export { TrendFollowStrategyDefinition, _default as default, getBuiltInStrategyDefaultConfig, strategyEntries, trendFollowAiAdapter, config as trendFollowDefaultConfig, trendFollowManifest };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { StrategyConfig, Interval, BacktestPriceMode, Direction, StrategyRegistryEntry, StrategyManifest, StrategyAiAdapter } from '@tradejs/types';
|
|
2
|
+
|
|
3
|
+
interface TrendFollowSideConfig {
|
|
4
|
+
enable: boolean;
|
|
5
|
+
direction: Direction;
|
|
6
|
+
minRiskRatio: number;
|
|
7
|
+
}
|
|
8
|
+
declare const config: {
|
|
9
|
+
readonly ENV: "BACKTEST";
|
|
10
|
+
readonly INTERVAL: Interval;
|
|
11
|
+
readonly MAKE_ORDERS: true;
|
|
12
|
+
readonly CLOSE_OPPOSITE_POSITIONS: false;
|
|
13
|
+
readonly BACKTEST_PRICE_MODE: "open";
|
|
14
|
+
readonly AI_ENABLED: false;
|
|
15
|
+
readonly AI_MODE: "llm";
|
|
16
|
+
readonly ML_ENABLED: false;
|
|
17
|
+
readonly ML_THRESHOLD: 0.1;
|
|
18
|
+
readonly MIN_AI_QUALITY: 3;
|
|
19
|
+
readonly FEE_PERCENT: 0.001;
|
|
20
|
+
readonly MAX_LOSS_VALUE: 10;
|
|
21
|
+
readonly MA_FAST: 14;
|
|
22
|
+
readonly MA_MEDIUM: 49;
|
|
23
|
+
readonly MA_SLOW: 50;
|
|
24
|
+
readonly OBV_SMA: 10;
|
|
25
|
+
readonly ATR: 14;
|
|
26
|
+
readonly ATR_PCT_SHORT: 7;
|
|
27
|
+
readonly ATR_PCT_LONG: 30;
|
|
28
|
+
readonly BB: 20;
|
|
29
|
+
readonly BB_STD: 2;
|
|
30
|
+
readonly MACD_FAST: 12;
|
|
31
|
+
readonly MACD_SLOW: 26;
|
|
32
|
+
readonly MACD_SIGNAL: 9;
|
|
33
|
+
readonly TRENDFOLLOW_PIVOT_LENGTH: 10;
|
|
34
|
+
readonly TRENDFOLLOW_MIN_BARS_BETWEEN_SIGNALS: 0;
|
|
35
|
+
readonly TRENDFOLLOW_ATR_LENGTH: 14;
|
|
36
|
+
readonly TRENDFOLLOW_ATR_MULT: 4;
|
|
37
|
+
readonly TRENDFOLLOW_SIGNAL_OFFSET_ATR: 0.35;
|
|
38
|
+
readonly TRENDFOLLOW_REQUIRE_STRUCTURE_BREAKOUT: false;
|
|
39
|
+
readonly TRENDFOLLOW_REQUIRE_TREND_ALIGNMENT: false;
|
|
40
|
+
readonly TRENDFOLLOW_REQUIRE_BENCHMARK_ALIGNMENT: false;
|
|
41
|
+
readonly TRENDFOLLOW_MIN_VOLUME_REL20: 0;
|
|
42
|
+
readonly TRENDFOLLOW_MIN_STRUCTURE_ACCEPTANCE_CLOSES: 0;
|
|
43
|
+
readonly TRENDFOLLOW_MIN_BREAKOUT_BODY_ATR: 0;
|
|
44
|
+
readonly TRENDFOLLOW_MIN_TREND_PERSISTENCE: 0;
|
|
45
|
+
readonly TRENDFOLLOW_MIN_TREND_PERSISTENCE_LONG: 0.5;
|
|
46
|
+
readonly TRENDFOLLOW_MIN_TREND_PERSISTENCE_SHORT: 0.5;
|
|
47
|
+
readonly TRENDFOLLOW_MAX_RSI: 0;
|
|
48
|
+
readonly TRENDFOLLOW_MAX_RSI_LONG: 75;
|
|
49
|
+
readonly TRENDFOLLOW_MAX_RSI_SHORT: 0;
|
|
50
|
+
readonly TRENDFOLLOW_MAX_BB_WIDTH_PCT: 0;
|
|
51
|
+
readonly TRENDFOLLOW_MAX_BB_WIDTH_PCT_LONG: 0;
|
|
52
|
+
readonly TRENDFOLLOW_MAX_BB_WIDTH_PCT_SHORT: 8;
|
|
53
|
+
readonly TRENDFOLLOW_MIN_BREAKOUT_DISTANCE_PCT: 0;
|
|
54
|
+
readonly TRENDFOLLOW_MIN_BREAKOUT_DISTANCE_PCT_LONG: 3;
|
|
55
|
+
readonly TRENDFOLLOW_MIN_BREAKOUT_DISTANCE_PCT_SHORT: 2;
|
|
56
|
+
readonly TRENDFOLLOW_MAX_BREAKOUT_DISTANCE_PCT: 0;
|
|
57
|
+
readonly TRENDFOLLOW_TARGET_R_MULT: 2;
|
|
58
|
+
readonly TRENDFOLLOW_TARGET_R_MULT_LONG: 1.4;
|
|
59
|
+
readonly TRENDFOLLOW_TARGET_R_MULT_SHORT: 1.2;
|
|
60
|
+
readonly TRENDFOLLOW_EXIT_ON_TRAIL_STOP: true;
|
|
61
|
+
readonly TRENDFOLLOW_EXIT_ON_OPPOSITE_SIGNAL: true;
|
|
62
|
+
readonly TRENDFOLLOW_MAX_FIGURE_POINTS: 180;
|
|
63
|
+
readonly LONG: {
|
|
64
|
+
readonly enable: true;
|
|
65
|
+
readonly direction: "LONG";
|
|
66
|
+
readonly minRiskRatio: 0.8;
|
|
67
|
+
};
|
|
68
|
+
readonly SHORT: {
|
|
69
|
+
readonly enable: true;
|
|
70
|
+
readonly direction: "SHORT";
|
|
71
|
+
readonly minRiskRatio: 0.8;
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
type TrendFollowConfig = StrategyConfig & Omit<typeof config, "BACKTEST_PRICE_MODE" | "LONG" | "SHORT"> & {
|
|
75
|
+
BACKTEST_PRICE_MODE: BacktestPriceMode;
|
|
76
|
+
LONG: TrendFollowSideConfig;
|
|
77
|
+
SHORT: TrendFollowSideConfig;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
declare const TrendFollowStrategyDefinition: StrategyRegistryEntry<TrendFollowConfig>;
|
|
81
|
+
|
|
82
|
+
declare const trendFollowManifest: StrategyManifest;
|
|
83
|
+
|
|
84
|
+
declare const trendFollowAiAdapter: StrategyAiAdapter;
|
|
85
|
+
|
|
86
|
+
declare const strategyEntries: StrategyRegistryEntry[];
|
|
87
|
+
declare const getBuiltInStrategyDefaultConfig: (strategyName: string) => StrategyConfig | undefined;
|
|
88
|
+
|
|
89
|
+
declare const _default: {
|
|
90
|
+
strategyEntries: StrategyRegistryEntry<any>[];
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
export { TrendFollowStrategyDefinition, _default as default, getBuiltInStrategyDefaultConfig, strategyEntries, trendFollowAiAdapter, config as trendFollowDefaultConfig, trendFollowManifest };
|