fixparser-plugin-mcp 9.2.2 → 9.2.3-175e9b8c
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/build/cjs/RemoteServer.js +4 -4
- package/build/cjs/RemoteServer.js.map +3 -3
- package/build/cjs/StdioServer.js +1 -1
- package/build/cjs/StdioServer.js.map +2 -2
- package/build/esm/RemoteServer.mjs +4 -4
- package/build/esm/RemoteServer.mjs.map +3 -3
- package/build/esm/StdioServer.mjs +1 -1
- package/build/esm/StdioServer.mjs.map +2 -2
- package/package.json +7 -6
- package/types/RemoteServer.d.ts +1 -0
- package/types/StdioServer.d.ts +1 -0
- package/types/mcp/MCPBase.d.ts +46 -0
- package/types/mcp/MCPLocal.d.ts +32 -0
- package/types/mcp/MCPRemote.d.ts +58 -0
- package/types/mcp/PluginOptions.d.ts +6 -0
- package/types/mcp/index.d.ts +3 -0
- package/types/mcp/schemas/index.d.ts +16 -0
- package/types/mcp/schemas/indicatortypes.d.ts +413 -0
- package/types/mcp/schemas/marketData.d.ts +48 -0
- package/types/mcp/schemas/schemas.d.ts +181 -0
- package/types/mcp/tools/analytics.d.ts +5 -0
- package/types/mcp/tools/index.d.ts +3 -0
- package/types/mcp/tools/indicators/index.d.ts +11 -0
- package/types/mcp/tools/indicators/momentum.d.ts +27 -0
- package/types/mcp/tools/indicators/movingAverages.d.ts +18 -0
- package/types/mcp/tools/indicators/options.d.ts +102 -0
- package/types/mcp/tools/indicators/performance.d.ts +42 -0
- package/types/mcp/tools/indicators/signals.d.ts +23 -0
- package/types/mcp/tools/indicators/statistical.d.ts +102 -0
- package/types/mcp/tools/indicators/supportResistance.d.ts +51 -0
- package/types/mcp/tools/indicators/trend.d.ts +23 -0
- package/types/mcp/tools/indicators/volatility.d.ts +23 -0
- package/types/mcp/tools/indicators/volume.d.ts +26 -0
- package/types/mcp/tools/marketData.d.ts +16 -0
- package/types/mcp/tools/order.d.ts +5 -0
- package/types/mcp/tools/parse.d.ts +5 -0
- package/types/mcp/tools/parseToJSON.d.ts +5 -0
- package/types/mcp/utils/messageHandler.d.ts +5 -0
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fixparser-plugin-mcp",
|
|
3
|
-
"version": "9.2.
|
|
3
|
+
"version": "9.2.3-175e9b8c",
|
|
4
4
|
"description": "FIXParser MCP Plugin (Local/Remote)",
|
|
5
5
|
"files": [
|
|
6
6
|
"./build/",
|
|
7
7
|
"./types/",
|
|
8
|
-
"./LICENSE.md"
|
|
8
|
+
"./LICENSE.md",
|
|
9
|
+
"./README.md"
|
|
9
10
|
],
|
|
10
11
|
"main": "./build/cjs/MCPLocal.js",
|
|
11
12
|
"type": "module",
|
|
@@ -28,12 +29,12 @@
|
|
|
28
29
|
},
|
|
29
30
|
"author": "Victor Norgren",
|
|
30
31
|
"dependencies": {
|
|
31
|
-
"@modelcontextprotocol/sdk": "1.13.
|
|
32
|
+
"@modelcontextprotocol/sdk": "1.13.1",
|
|
32
33
|
"body-parser": "2.2.0",
|
|
33
34
|
"express": "5.1.0",
|
|
34
|
-
"fixparser": "^9.2.
|
|
35
|
-
"fixparser-common": "^9.2.
|
|
36
|
-
"fixparser-plugin-log-console": "^9.2.
|
|
35
|
+
"fixparser": "^9.2.2",
|
|
36
|
+
"fixparser-common": "^9.2.2",
|
|
37
|
+
"fixparser-plugin-log-console": "^9.2.2",
|
|
37
38
|
"quickchart-js": "3.1.3",
|
|
38
39
|
"zod": "3.25.67"
|
|
39
40
|
},
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { IFIXParser, Logger } from 'fixparser';
|
|
2
|
+
import type { IPlugin } from 'fixparser-common';
|
|
3
|
+
import type { VerifiedOrder } from './schemas';
|
|
4
|
+
import type { MarketDataPrices, PendingRequests } from './utils/messageHandler';
|
|
5
|
+
export declare abstract class MCPBase implements IPlugin<IFIXParser> {
|
|
6
|
+
/**
|
|
7
|
+
* Optional logger instance for diagnostics and output.
|
|
8
|
+
* @protected
|
|
9
|
+
*/
|
|
10
|
+
protected logger: Logger | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* FIXParser instance, set during plugin register().
|
|
13
|
+
* @protected
|
|
14
|
+
*/
|
|
15
|
+
protected parser: IFIXParser | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Called when server is setup and listening.
|
|
18
|
+
* @protected
|
|
19
|
+
*/
|
|
20
|
+
protected onReady: (() => void) | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Map to store verified orders before execution
|
|
23
|
+
* @protected
|
|
24
|
+
*/
|
|
25
|
+
protected verifiedOrders: Map<string, VerifiedOrder>;
|
|
26
|
+
/**
|
|
27
|
+
* Map to store pending market data requests
|
|
28
|
+
* @protected
|
|
29
|
+
*/
|
|
30
|
+
protected pendingRequests: PendingRequests;
|
|
31
|
+
/**
|
|
32
|
+
* Map to store market data prices
|
|
33
|
+
* @protected
|
|
34
|
+
*/
|
|
35
|
+
protected marketDataPrices: MarketDataPrices;
|
|
36
|
+
/**
|
|
37
|
+
* Maximum number of price history entries to keep per symbol
|
|
38
|
+
* @protected
|
|
39
|
+
*/
|
|
40
|
+
protected readonly MAX_PRICE_HISTORY = 100000;
|
|
41
|
+
constructor({ logger, onReady }: {
|
|
42
|
+
logger?: Logger;
|
|
43
|
+
onReady?: () => void;
|
|
44
|
+
});
|
|
45
|
+
abstract register(parser: IFIXParser): Promise<void>;
|
|
46
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { IFIXParser, Message } from 'fixparser';
|
|
2
|
+
import { MCPBase } from './MCPBase';
|
|
3
|
+
import type { PluginOptions } from './PluginOptions';
|
|
4
|
+
import type { VerifiedOrder } from './schemas';
|
|
5
|
+
import type { MarketDataEntry } from './schemas/marketData';
|
|
6
|
+
export declare class MCPLocal extends MCPBase {
|
|
7
|
+
/**
|
|
8
|
+
* Map to store verified orders before execution
|
|
9
|
+
* @private
|
|
10
|
+
*/
|
|
11
|
+
protected verifiedOrders: Map<string, VerifiedOrder>;
|
|
12
|
+
/**
|
|
13
|
+
* Map to store pending requests and their callbacks
|
|
14
|
+
* @private
|
|
15
|
+
*/
|
|
16
|
+
protected pendingRequests: Map<string, (data: Message) => void>;
|
|
17
|
+
/**
|
|
18
|
+
* Map to store market data prices for each symbol
|
|
19
|
+
* @private
|
|
20
|
+
*/
|
|
21
|
+
protected marketDataPrices: Map<string, MarketDataEntry[]>;
|
|
22
|
+
/**
|
|
23
|
+
* Maximum number of price history entries to keep per symbol
|
|
24
|
+
* @private
|
|
25
|
+
*/
|
|
26
|
+
protected readonly MAX_PRICE_HISTORY = 100000;
|
|
27
|
+
private server;
|
|
28
|
+
private transport;
|
|
29
|
+
constructor({ logger, onReady }: PluginOptions);
|
|
30
|
+
register(parser: IFIXParser): Promise<void>;
|
|
31
|
+
private addWorkflows;
|
|
32
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { IFIXParser, Message } from 'fixparser';
|
|
2
|
+
import { MCPBase } from './MCPBase';
|
|
3
|
+
import type { PluginOptions } from './PluginOptions';
|
|
4
|
+
import type { VerifiedOrder } from './schemas';
|
|
5
|
+
import type { MarketDataEntry } from './schemas/marketData';
|
|
6
|
+
export type RemotePluginOptions = PluginOptions & {
|
|
7
|
+
port: number;
|
|
8
|
+
};
|
|
9
|
+
export declare class MCPRemote extends MCPBase {
|
|
10
|
+
/**
|
|
11
|
+
* Port number the server will listen on.
|
|
12
|
+
* @private
|
|
13
|
+
*/
|
|
14
|
+
private port;
|
|
15
|
+
/**
|
|
16
|
+
* Node.js HTTP server instance created internally.
|
|
17
|
+
* @private
|
|
18
|
+
*/
|
|
19
|
+
private httpServer;
|
|
20
|
+
/**
|
|
21
|
+
* MCP server instance handling MCP protocol logic.
|
|
22
|
+
* @private
|
|
23
|
+
*/
|
|
24
|
+
private mcpServer;
|
|
25
|
+
/**
|
|
26
|
+
* Optional name of the plugin/server instance.
|
|
27
|
+
* @private
|
|
28
|
+
*/
|
|
29
|
+
private serverName;
|
|
30
|
+
/**
|
|
31
|
+
* Optional version string of the plugin/server.
|
|
32
|
+
* @private
|
|
33
|
+
*/
|
|
34
|
+
private serverVersion;
|
|
35
|
+
/**
|
|
36
|
+
* Map to store verified orders before execution
|
|
37
|
+
* @private
|
|
38
|
+
*/
|
|
39
|
+
protected verifiedOrders: Map<string, VerifiedOrder>;
|
|
40
|
+
/**
|
|
41
|
+
* Map to store pending requests and their callbacks
|
|
42
|
+
* @private
|
|
43
|
+
*/
|
|
44
|
+
protected pendingRequests: Map<string, (data: Message) => void>;
|
|
45
|
+
/**
|
|
46
|
+
* Map to store market data prices for each symbol
|
|
47
|
+
* @private
|
|
48
|
+
*/
|
|
49
|
+
protected marketDataPrices: Map<string, MarketDataEntry[]>;
|
|
50
|
+
/**
|
|
51
|
+
* Maximum number of price history entries to keep per symbol
|
|
52
|
+
* @private
|
|
53
|
+
*/
|
|
54
|
+
protected readonly MAX_PRICE_HISTORY = 100000;
|
|
55
|
+
constructor({ port, logger, onReady }: RemotePluginOptions);
|
|
56
|
+
register(parser: IFIXParser): Promise<void>;
|
|
57
|
+
private setupTools;
|
|
58
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
export type { MarketDataEntry } from './marketData';
|
|
3
|
+
export interface VerifiedOrder {
|
|
4
|
+
clOrdID: string;
|
|
5
|
+
handlInst: string;
|
|
6
|
+
quantity: number;
|
|
7
|
+
price: number;
|
|
8
|
+
ordType: string;
|
|
9
|
+
side: string;
|
|
10
|
+
symbol: string;
|
|
11
|
+
timeInForce: string;
|
|
12
|
+
}
|
|
13
|
+
export type ToolHandler = (args: any) => Promise<CallToolResult>;
|
|
14
|
+
export interface ToolHandlers {
|
|
15
|
+
[key: string]: ToolHandler;
|
|
16
|
+
}
|
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
export interface BollingerBands {
|
|
2
|
+
upper: number;
|
|
3
|
+
middle: number;
|
|
4
|
+
lower: number;
|
|
5
|
+
bandwidth: number;
|
|
6
|
+
percentB: number;
|
|
7
|
+
}
|
|
8
|
+
export interface KeltnerChannels {
|
|
9
|
+
upper: number;
|
|
10
|
+
middle: number;
|
|
11
|
+
lower: number;
|
|
12
|
+
}
|
|
13
|
+
export interface DonchianChannels {
|
|
14
|
+
upper: number;
|
|
15
|
+
middle: number;
|
|
16
|
+
lower: number;
|
|
17
|
+
}
|
|
18
|
+
export interface IchimokuCloud {
|
|
19
|
+
tenkan: number;
|
|
20
|
+
kijun: number;
|
|
21
|
+
senkouA: number;
|
|
22
|
+
senkouB: number;
|
|
23
|
+
chikou: number;
|
|
24
|
+
}
|
|
25
|
+
export interface MACD {
|
|
26
|
+
macd: number;
|
|
27
|
+
signal: number;
|
|
28
|
+
histogram: number;
|
|
29
|
+
}
|
|
30
|
+
export interface DMI {
|
|
31
|
+
plusDI: number;
|
|
32
|
+
minusDI: number;
|
|
33
|
+
adx: number;
|
|
34
|
+
}
|
|
35
|
+
export interface Stochastic {
|
|
36
|
+
k: number;
|
|
37
|
+
d: number;
|
|
38
|
+
}
|
|
39
|
+
export interface PivotPoints {
|
|
40
|
+
pp: number;
|
|
41
|
+
r1: number;
|
|
42
|
+
r2: number;
|
|
43
|
+
r3: number;
|
|
44
|
+
s1: number;
|
|
45
|
+
s2: number;
|
|
46
|
+
s3: number;
|
|
47
|
+
}
|
|
48
|
+
export interface FibonacciLevels {
|
|
49
|
+
retracement: {
|
|
50
|
+
level0: number;
|
|
51
|
+
level236: number;
|
|
52
|
+
level382: number;
|
|
53
|
+
level500: number;
|
|
54
|
+
level618: number;
|
|
55
|
+
level786: number;
|
|
56
|
+
level100: number;
|
|
57
|
+
};
|
|
58
|
+
extension: {
|
|
59
|
+
level1272: number;
|
|
60
|
+
level1618: number;
|
|
61
|
+
level2618: number;
|
|
62
|
+
level4236: number;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export interface ElliottWave {
|
|
66
|
+
waves: number[];
|
|
67
|
+
currentWave: number;
|
|
68
|
+
wavePosition: number;
|
|
69
|
+
}
|
|
70
|
+
export interface HarmonicPattern {
|
|
71
|
+
type: string;
|
|
72
|
+
completion: number;
|
|
73
|
+
target: number;
|
|
74
|
+
stopLoss: number;
|
|
75
|
+
}
|
|
76
|
+
export interface BlackScholes {
|
|
77
|
+
callPrice: number;
|
|
78
|
+
putPrice: number;
|
|
79
|
+
delta: number;
|
|
80
|
+
gamma: number;
|
|
81
|
+
theta: number;
|
|
82
|
+
vega: number;
|
|
83
|
+
rho: number;
|
|
84
|
+
}
|
|
85
|
+
export interface VARModel {
|
|
86
|
+
priceForecast: number[];
|
|
87
|
+
volumeForecast: number[];
|
|
88
|
+
coefficients: number[][];
|
|
89
|
+
residuals: number[][];
|
|
90
|
+
}
|
|
91
|
+
export interface GaussianProcess {
|
|
92
|
+
mean: number[];
|
|
93
|
+
variance: number[];
|
|
94
|
+
confidenceInterval: {
|
|
95
|
+
lower: number[];
|
|
96
|
+
upper: number[];
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
export interface PairsTrading {
|
|
100
|
+
spread: number[];
|
|
101
|
+
zScore: number[];
|
|
102
|
+
hedgeRatio: number;
|
|
103
|
+
entrySignal: string;
|
|
104
|
+
exitSignal: string;
|
|
105
|
+
position: string;
|
|
106
|
+
}
|
|
107
|
+
export interface FourierTransform {
|
|
108
|
+
frequencies: number[];
|
|
109
|
+
amplitudes: number[];
|
|
110
|
+
phases: number[];
|
|
111
|
+
dominantFrequencies: number[];
|
|
112
|
+
}
|
|
113
|
+
export interface EmpiricalModeDecomposition {
|
|
114
|
+
imfs: number[][];
|
|
115
|
+
residual: number[];
|
|
116
|
+
frequencies: number[];
|
|
117
|
+
}
|
|
118
|
+
export interface BinomialTree {
|
|
119
|
+
callPrice: number;
|
|
120
|
+
putPrice: number;
|
|
121
|
+
delta: number;
|
|
122
|
+
gamma: number;
|
|
123
|
+
theta: number;
|
|
124
|
+
vega: number;
|
|
125
|
+
rho: number;
|
|
126
|
+
}
|
|
127
|
+
export interface TrinomialTree {
|
|
128
|
+
callPrice: number;
|
|
129
|
+
putPrice: number;
|
|
130
|
+
delta: number;
|
|
131
|
+
gamma: number;
|
|
132
|
+
theta: number;
|
|
133
|
+
vega: number;
|
|
134
|
+
rho: number;
|
|
135
|
+
}
|
|
136
|
+
export interface MonteCarlo {
|
|
137
|
+
callPrice: number;
|
|
138
|
+
putPrice: number;
|
|
139
|
+
delta: number;
|
|
140
|
+
gamma: number;
|
|
141
|
+
theta: number;
|
|
142
|
+
vega: number;
|
|
143
|
+
rho: number;
|
|
144
|
+
confidenceInterval: {
|
|
145
|
+
lower: number;
|
|
146
|
+
upper: number;
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
export interface HestonModel {
|
|
150
|
+
callPrice: number;
|
|
151
|
+
putPrice: number;
|
|
152
|
+
impliedVolatility: number;
|
|
153
|
+
delta: number;
|
|
154
|
+
gamma: number;
|
|
155
|
+
theta: number;
|
|
156
|
+
vega: number;
|
|
157
|
+
rho: number;
|
|
158
|
+
}
|
|
159
|
+
export interface SABRModel {
|
|
160
|
+
callPrice: number;
|
|
161
|
+
putPrice: number;
|
|
162
|
+
impliedVolatility: number;
|
|
163
|
+
delta: number;
|
|
164
|
+
gamma: number;
|
|
165
|
+
theta: number;
|
|
166
|
+
vega: number;
|
|
167
|
+
rho: number;
|
|
168
|
+
}
|
|
169
|
+
export interface VarianceGamma {
|
|
170
|
+
callPrice: number;
|
|
171
|
+
putPrice: number;
|
|
172
|
+
impliedVolatility: number;
|
|
173
|
+
delta: number;
|
|
174
|
+
gamma: number;
|
|
175
|
+
theta: number;
|
|
176
|
+
vega: number;
|
|
177
|
+
rho: number;
|
|
178
|
+
}
|
|
179
|
+
export interface TechnicalIndicators {
|
|
180
|
+
sma5: number[];
|
|
181
|
+
sma10: number[];
|
|
182
|
+
sma20: number[];
|
|
183
|
+
sma50: number[];
|
|
184
|
+
sma200: number[];
|
|
185
|
+
ema8: number[];
|
|
186
|
+
ema12: number[];
|
|
187
|
+
ema21: number[];
|
|
188
|
+
ema26: number[];
|
|
189
|
+
wma20: number[];
|
|
190
|
+
vwma20: number[];
|
|
191
|
+
macd: MACD[];
|
|
192
|
+
adx: number[];
|
|
193
|
+
dmi: DMI[];
|
|
194
|
+
ichimoku: IchimokuCloud[];
|
|
195
|
+
parabolicSAR: number[];
|
|
196
|
+
rsi: number[];
|
|
197
|
+
stochastic: Stochastic[];
|
|
198
|
+
cci: number[];
|
|
199
|
+
roc: number[];
|
|
200
|
+
williamsR: number[];
|
|
201
|
+
momentum: number[];
|
|
202
|
+
bollinger: BollingerBands[];
|
|
203
|
+
atr: number[];
|
|
204
|
+
keltner: KeltnerChannels[];
|
|
205
|
+
donchian: DonchianChannels[];
|
|
206
|
+
chaikinVolatility: number[];
|
|
207
|
+
obv: number[];
|
|
208
|
+
cmf: number[];
|
|
209
|
+
adl: number[];
|
|
210
|
+
volumeROC: number[];
|
|
211
|
+
mfi: number[];
|
|
212
|
+
vwap: number[];
|
|
213
|
+
pivotPoints: PivotPoints[];
|
|
214
|
+
fibonacci: FibonacciLevels[];
|
|
215
|
+
gannLevels: number[];
|
|
216
|
+
elliottWave: ElliottWave[];
|
|
217
|
+
harmonicPatterns: HarmonicPattern[];
|
|
218
|
+
}
|
|
219
|
+
export interface MarketAnalysis {
|
|
220
|
+
currentPrice: number;
|
|
221
|
+
startPrice: number;
|
|
222
|
+
sessionHigh: number;
|
|
223
|
+
sessionLow: number;
|
|
224
|
+
totalVolume: number;
|
|
225
|
+
avgVolume: number;
|
|
226
|
+
volatility: number;
|
|
227
|
+
sessionReturn: number;
|
|
228
|
+
pricePosition: number;
|
|
229
|
+
trueVWAP: number;
|
|
230
|
+
momentum5: number;
|
|
231
|
+
momentum10: number;
|
|
232
|
+
maxDrawdown: number;
|
|
233
|
+
atr: number;
|
|
234
|
+
impliedVolatility: number;
|
|
235
|
+
realizedVolatility: number;
|
|
236
|
+
sharpeRatio: number;
|
|
237
|
+
sortinoRatio: number;
|
|
238
|
+
calmarRatio: number;
|
|
239
|
+
maxConsecutiveLosses: number;
|
|
240
|
+
winRate: number;
|
|
241
|
+
profitFactor: number;
|
|
242
|
+
}
|
|
243
|
+
export interface TradingSignals {
|
|
244
|
+
bullishSignals: number;
|
|
245
|
+
bearishSignals: number;
|
|
246
|
+
signals: string[];
|
|
247
|
+
overallSignal: string;
|
|
248
|
+
signalScore: number;
|
|
249
|
+
confidence: number;
|
|
250
|
+
riskLevel: string;
|
|
251
|
+
}
|
|
252
|
+
export interface StatisticalModels {
|
|
253
|
+
zScore: number;
|
|
254
|
+
ornsteinUhlenbeck: {
|
|
255
|
+
mean: number;
|
|
256
|
+
speed: number;
|
|
257
|
+
volatility: number;
|
|
258
|
+
currentValue: number;
|
|
259
|
+
};
|
|
260
|
+
kalmanFilter: {
|
|
261
|
+
state: number;
|
|
262
|
+
covariance: number;
|
|
263
|
+
gain: number;
|
|
264
|
+
};
|
|
265
|
+
pairsTrading: PairsTrading;
|
|
266
|
+
arima: {
|
|
267
|
+
forecast: number[];
|
|
268
|
+
residuals: number[];
|
|
269
|
+
aic: number;
|
|
270
|
+
};
|
|
271
|
+
garch: {
|
|
272
|
+
volatility: number;
|
|
273
|
+
persistence: number;
|
|
274
|
+
meanReversion: number;
|
|
275
|
+
};
|
|
276
|
+
var: VARModel;
|
|
277
|
+
gaussianProcess: GaussianProcess;
|
|
278
|
+
hilbertTransform: {
|
|
279
|
+
analytic: number[];
|
|
280
|
+
phase: number[];
|
|
281
|
+
amplitude: number[];
|
|
282
|
+
};
|
|
283
|
+
waveletTransform: {
|
|
284
|
+
coefficients: number[];
|
|
285
|
+
scales: number[];
|
|
286
|
+
};
|
|
287
|
+
fourierTransform: FourierTransform;
|
|
288
|
+
empiricalModeDecomposition: EmpiricalModeDecomposition;
|
|
289
|
+
}
|
|
290
|
+
export interface OptionsAnalysis {
|
|
291
|
+
blackScholes: BlackScholes;
|
|
292
|
+
binomialTree: BinomialTree;
|
|
293
|
+
trinomialTree: TrinomialTree;
|
|
294
|
+
monteCarlo: MonteCarlo;
|
|
295
|
+
hestonModel: HestonModel;
|
|
296
|
+
sabrModel: SABRModel;
|
|
297
|
+
varianceGamma: VarianceGamma;
|
|
298
|
+
impliedVolatility: number;
|
|
299
|
+
delta: number;
|
|
300
|
+
gamma: number;
|
|
301
|
+
theta: number;
|
|
302
|
+
vega: number;
|
|
303
|
+
rho: number;
|
|
304
|
+
greeks: {
|
|
305
|
+
delta: number;
|
|
306
|
+
gamma: number;
|
|
307
|
+
theta: number;
|
|
308
|
+
vega: number;
|
|
309
|
+
rho: number;
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
export interface TechnicalAnalysisOutput {
|
|
313
|
+
symbol: string;
|
|
314
|
+
timestamp: string;
|
|
315
|
+
marketStructure: {
|
|
316
|
+
currentPrice: number;
|
|
317
|
+
startPrice: number;
|
|
318
|
+
sessionHigh: number;
|
|
319
|
+
sessionLow: number;
|
|
320
|
+
rangeWidth: number;
|
|
321
|
+
totalVolume: number;
|
|
322
|
+
sessionPerformance: number;
|
|
323
|
+
positionInRange: number;
|
|
324
|
+
};
|
|
325
|
+
volatility: {
|
|
326
|
+
impliedVolatility: number;
|
|
327
|
+
realizedVolatility: number;
|
|
328
|
+
atr: number;
|
|
329
|
+
maxDrawdown: number;
|
|
330
|
+
currentDrawdown: number;
|
|
331
|
+
};
|
|
332
|
+
technicalIndicators: {
|
|
333
|
+
sma5: number | null;
|
|
334
|
+
sma10: number | null;
|
|
335
|
+
sma20: number | null;
|
|
336
|
+
sma50: number | null;
|
|
337
|
+
sma200: number | null;
|
|
338
|
+
ema8: number;
|
|
339
|
+
ema12: number;
|
|
340
|
+
ema21: number;
|
|
341
|
+
ema26: number;
|
|
342
|
+
wma20: number | null;
|
|
343
|
+
vwma20: number | null;
|
|
344
|
+
macd: MACD | null;
|
|
345
|
+
adx: number | null;
|
|
346
|
+
dmi: DMI | null;
|
|
347
|
+
ichimoku: IchimokuCloud | null;
|
|
348
|
+
parabolicSAR: number | null;
|
|
349
|
+
rsi: number | null;
|
|
350
|
+
stochastic: Stochastic | null;
|
|
351
|
+
cci: number | null;
|
|
352
|
+
roc: number | null;
|
|
353
|
+
williamsR: number | null;
|
|
354
|
+
momentum: number | null;
|
|
355
|
+
bollingerBands: BollingerBands | null;
|
|
356
|
+
atr: number | null;
|
|
357
|
+
keltnerChannels: KeltnerChannels | null;
|
|
358
|
+
donchianChannels: DonchianChannels | null;
|
|
359
|
+
chaikinVolatility: number | null;
|
|
360
|
+
obv: number | null;
|
|
361
|
+
cmf: number | null;
|
|
362
|
+
adl: number | null;
|
|
363
|
+
volumeROC: number | null;
|
|
364
|
+
mfi: number | null;
|
|
365
|
+
vwap: number | null;
|
|
366
|
+
};
|
|
367
|
+
volumeAnalysis: {
|
|
368
|
+
currentVolume: number;
|
|
369
|
+
averageVolume: number;
|
|
370
|
+
volumeRatio: number;
|
|
371
|
+
trueVWAP: number;
|
|
372
|
+
priceVsVWAP: number;
|
|
373
|
+
obv: number | null;
|
|
374
|
+
cmf: number | null;
|
|
375
|
+
mfi: number | null;
|
|
376
|
+
};
|
|
377
|
+
momentum: {
|
|
378
|
+
momentum5: number;
|
|
379
|
+
momentum10: number;
|
|
380
|
+
sessionROC: number;
|
|
381
|
+
rsi: number | null;
|
|
382
|
+
stochastic: Stochastic | null;
|
|
383
|
+
cci: number | null;
|
|
384
|
+
};
|
|
385
|
+
supportResistance: {
|
|
386
|
+
pivotPoints: PivotPoints | null;
|
|
387
|
+
fibonacci: FibonacciLevels | null;
|
|
388
|
+
gannLevels: number[];
|
|
389
|
+
elliottWave: ElliottWave | null;
|
|
390
|
+
harmonicPatterns: HarmonicPattern[];
|
|
391
|
+
};
|
|
392
|
+
tradingSignals: TradingSignals;
|
|
393
|
+
statisticalModels: StatisticalModels;
|
|
394
|
+
optionsAnalysis: OptionsAnalysis | null;
|
|
395
|
+
riskManagement: {
|
|
396
|
+
targetEntry: number;
|
|
397
|
+
stopLoss: number;
|
|
398
|
+
profitTarget: number;
|
|
399
|
+
riskRewardRatio: number;
|
|
400
|
+
positionSize: number;
|
|
401
|
+
maxRisk: number;
|
|
402
|
+
};
|
|
403
|
+
performance: {
|
|
404
|
+
sharpeRatio: number;
|
|
405
|
+
sortinoRatio: number;
|
|
406
|
+
calmarRatio: number;
|
|
407
|
+
maxDrawdown: number;
|
|
408
|
+
winRate: number;
|
|
409
|
+
profitFactor: number;
|
|
410
|
+
totalReturn: number;
|
|
411
|
+
volatility: number;
|
|
412
|
+
};
|
|
413
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export type MarketDataEntry = {
|
|
2
|
+
timestamp: number;
|
|
3
|
+
bid: number;
|
|
4
|
+
offer: number;
|
|
5
|
+
spread: number;
|
|
6
|
+
volume: number;
|
|
7
|
+
trade: number;
|
|
8
|
+
indexValue: number;
|
|
9
|
+
openingPrice: number;
|
|
10
|
+
closingPrice: number;
|
|
11
|
+
settlementPrice: number;
|
|
12
|
+
tradingSessionHighPrice: number;
|
|
13
|
+
tradingSessionLowPrice: number;
|
|
14
|
+
vwap: number;
|
|
15
|
+
imbalance: number;
|
|
16
|
+
openInterest: number;
|
|
17
|
+
compositeUnderlyingPrice: number;
|
|
18
|
+
simulatedSellPrice: number;
|
|
19
|
+
simulatedBuyPrice: number;
|
|
20
|
+
marginRate: number;
|
|
21
|
+
midPrice: number;
|
|
22
|
+
emptyBook: number;
|
|
23
|
+
settleHighPrice: number;
|
|
24
|
+
settleLowPrice: number;
|
|
25
|
+
priorSettlePrice: number;
|
|
26
|
+
sessionHighBid: number;
|
|
27
|
+
sessionLowOffer: number;
|
|
28
|
+
earlyPrices: number;
|
|
29
|
+
auctionClearingPrice: number;
|
|
30
|
+
swapValueFactor: number;
|
|
31
|
+
dailyValueAdjustmentForLongPositions: number;
|
|
32
|
+
cumulativeValueAdjustmentForLongPositions: number;
|
|
33
|
+
dailyValueAdjustmentForShortPositions: number;
|
|
34
|
+
cumulativeValueAdjustmentForShortPositions: number;
|
|
35
|
+
fixingPrice: number;
|
|
36
|
+
cashRate: number;
|
|
37
|
+
recoveryRate: number;
|
|
38
|
+
recoveryRateForLong: number;
|
|
39
|
+
recoveryRateForShort: number;
|
|
40
|
+
marketBid: number;
|
|
41
|
+
marketOffer: number;
|
|
42
|
+
shortSaleMinPrice: number;
|
|
43
|
+
previousClosingPrice: number;
|
|
44
|
+
thresholdLimitPriceBanding: number;
|
|
45
|
+
dailyFinancingValue: number;
|
|
46
|
+
accruedFinancingValue: number;
|
|
47
|
+
twap: number;
|
|
48
|
+
};
|