@timmeck/trading-brain 2.31.9 → 2.31.11
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/dashboard.html +486 -486
- package/dist/cli/commands/dashboard.js +1 -1
- package/dist/cli/commands/dashboard.js.map +1 -1
- package/dist/cli/commands/paper.d.ts +2 -0
- package/dist/cli/commands/paper.js +108 -0
- package/dist/cli/commands/paper.js.map +1 -0
- package/dist/config.js +22 -0
- package/dist/config.js.map +1 -1
- package/dist/dashboard/renderer.d.ts +2 -0
- package/dist/dashboard/renderer.js +25 -1
- package/dist/dashboard/renderer.js.map +1 -1
- package/dist/db/migrations/010_paper_trading.d.ts +2 -0
- package/dist/db/migrations/010_paper_trading.js +71 -0
- package/dist/db/migrations/010_paper_trading.js.map +1 -0
- package/dist/db/migrations/index.js +8 -6
- package/dist/db/migrations/index.js.map +1 -1
- package/dist/db/repositories/paper.repository.d.ts +43 -0
- package/dist/db/repositories/paper.repository.js +201 -0
- package/dist/db/repositories/paper.repository.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/ipc/router.d.ts +1 -0
- package/dist/ipc/router.js +8 -0
- package/dist/ipc/router.js.map +1 -1
- package/dist/mcp/tools.js +21 -0
- package/dist/mcp/tools.js.map +1 -1
- package/dist/paper/__tests__/indicators.test.d.ts +1 -0
- package/dist/paper/__tests__/indicators.test.js +126 -0
- package/dist/paper/__tests__/indicators.test.js.map +1 -0
- package/dist/paper/decision-engine.d.ts +41 -0
- package/dist/paper/decision-engine.js +151 -0
- package/dist/paper/decision-engine.js.map +1 -0
- package/dist/paper/indicators.d.ts +26 -0
- package/dist/paper/indicators.js +134 -0
- package/dist/paper/indicators.js.map +1 -0
- package/dist/paper/paper-engine.d.ts +31 -0
- package/dist/paper/paper-engine.js +175 -0
- package/dist/paper/paper-engine.js.map +1 -0
- package/dist/paper/paper.service.d.ts +30 -0
- package/dist/paper/paper.service.js +56 -0
- package/dist/paper/paper.service.js.map +1 -0
- package/dist/paper/portfolio-manager.d.ts +32 -0
- package/dist/paper/portfolio-manager.js +113 -0
- package/dist/paper/portfolio-manager.js.map +1 -0
- package/dist/paper/price-fetcher.d.ts +24 -0
- package/dist/paper/price-fetcher.js +189 -0
- package/dist/paper/price-fetcher.js.map +1 -0
- package/dist/paper/types.d.ts +82 -0
- package/dist/paper/types.js +2 -0
- package/dist/paper/types.js.map +1 -0
- package/dist/trading-core.d.ts +1 -0
- package/dist/trading-core.js +15 -0
- package/dist/trading-core.js.map +1 -1
- package/dist/types/config.types.d.ts +17 -0
- package/package.json +1 -1
package/dist/mcp/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { calcRSI, calcMACD, calcTrendScore, calcVolatility, calcAllIndicators } from '../indicators.js';
|
|
3
|
+
function makeCandles(closes, base = 100) {
|
|
4
|
+
return closes.map((close, i) => ({
|
|
5
|
+
timestamp: Date.now() - (closes.length - i) * 300_000,
|
|
6
|
+
open: close - 0.5,
|
|
7
|
+
high: close + 1,
|
|
8
|
+
low: close - 1,
|
|
9
|
+
close,
|
|
10
|
+
volume: 1000,
|
|
11
|
+
}));
|
|
12
|
+
}
|
|
13
|
+
describe('calcRSI', () => {
|
|
14
|
+
it('returns 50 when not enough data', () => {
|
|
15
|
+
expect(calcRSI(makeCandles([100, 101, 102]))).toBe(50);
|
|
16
|
+
});
|
|
17
|
+
it('returns high RSI for consistent uptrend', () => {
|
|
18
|
+
const prices = Array.from({ length: 30 }, (_, i) => 100 + i);
|
|
19
|
+
const rsi = calcRSI(makeCandles(prices));
|
|
20
|
+
expect(rsi).toBeGreaterThan(70);
|
|
21
|
+
});
|
|
22
|
+
it('returns low RSI for consistent downtrend', () => {
|
|
23
|
+
const prices = Array.from({ length: 30 }, (_, i) => 130 - i);
|
|
24
|
+
const rsi = calcRSI(makeCandles(prices));
|
|
25
|
+
expect(rsi).toBeLessThan(30);
|
|
26
|
+
});
|
|
27
|
+
it('returns ~50 for flat market', () => {
|
|
28
|
+
const prices = Array.from({ length: 30 }, (_, i) => 100 + (i % 2 === 0 ? 0.5 : -0.5));
|
|
29
|
+
const rsi = calcRSI(makeCandles(prices));
|
|
30
|
+
expect(rsi).toBeGreaterThan(30);
|
|
31
|
+
expect(rsi).toBeLessThan(70);
|
|
32
|
+
});
|
|
33
|
+
it('returns 100 when all gains', () => {
|
|
34
|
+
const prices = Array.from({ length: 20 }, (_, i) => 100 + i * 2);
|
|
35
|
+
const rsi = calcRSI(makeCandles(prices));
|
|
36
|
+
expect(rsi).toBe(100);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
describe('calcMACD', () => {
|
|
40
|
+
it('returns zeroes when not enough data', () => {
|
|
41
|
+
const result = calcMACD(makeCandles([100, 101, 102]));
|
|
42
|
+
expect(result.line).toBe(0);
|
|
43
|
+
expect(result.signal).toBe(0);
|
|
44
|
+
expect(result.histogram).toBe(0);
|
|
45
|
+
});
|
|
46
|
+
it('returns positive MACD for uptrend', () => {
|
|
47
|
+
const prices = Array.from({ length: 50 }, (_, i) => 100 + i);
|
|
48
|
+
const result = calcMACD(makeCandles(prices));
|
|
49
|
+
expect(result.line).toBeGreaterThan(0);
|
|
50
|
+
});
|
|
51
|
+
it('returns negative MACD for downtrend', () => {
|
|
52
|
+
const prices = Array.from({ length: 50 }, (_, i) => 150 - i);
|
|
53
|
+
const result = calcMACD(makeCandles(prices));
|
|
54
|
+
expect(result.line).toBeLessThan(0);
|
|
55
|
+
});
|
|
56
|
+
it('histogram equals line minus signal', () => {
|
|
57
|
+
const prices = Array.from({ length: 50 }, (_, i) => 100 + Math.sin(i / 5) * 10);
|
|
58
|
+
const result = calcMACD(makeCandles(prices));
|
|
59
|
+
expect(result.histogram).toBeCloseTo(result.line - result.signal, 10);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe('calcTrendScore', () => {
|
|
63
|
+
it('returns 0 when not enough data', () => {
|
|
64
|
+
expect(calcTrendScore(makeCandles([100, 101]))).toBe(0);
|
|
65
|
+
});
|
|
66
|
+
it('returns positive score for uptrend', () => {
|
|
67
|
+
const prices = Array.from({ length: 40 }, (_, i) => 100 + i * 2);
|
|
68
|
+
const score = calcTrendScore(makeCandles(prices));
|
|
69
|
+
expect(score).toBeGreaterThan(0);
|
|
70
|
+
});
|
|
71
|
+
it('returns negative score for downtrend', () => {
|
|
72
|
+
const prices = Array.from({ length: 40 }, (_, i) => 200 - i * 2);
|
|
73
|
+
const score = calcTrendScore(makeCandles(prices));
|
|
74
|
+
expect(score).toBeLessThan(0);
|
|
75
|
+
});
|
|
76
|
+
it('clamps to -5..+5 range', () => {
|
|
77
|
+
const prices = Array.from({ length: 40 }, (_, i) => 100 + i * 20);
|
|
78
|
+
const score = calcTrendScore(makeCandles(prices));
|
|
79
|
+
expect(score).toBeLessThanOrEqual(5);
|
|
80
|
+
expect(score).toBeGreaterThanOrEqual(-5);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
describe('calcVolatility', () => {
|
|
84
|
+
it('returns default when not enough data', () => {
|
|
85
|
+
expect(calcVolatility(makeCandles([100, 101]))).toBe(30);
|
|
86
|
+
});
|
|
87
|
+
it('returns low volatility for stable prices', () => {
|
|
88
|
+
const prices = Array.from({ length: 20 }, () => 100);
|
|
89
|
+
const candles = prices.map((close, i) => ({
|
|
90
|
+
timestamp: Date.now() - (prices.length - i) * 300_000,
|
|
91
|
+
open: close,
|
|
92
|
+
high: close + 0.1,
|
|
93
|
+
low: close - 0.1,
|
|
94
|
+
close,
|
|
95
|
+
volume: 1000,
|
|
96
|
+
}));
|
|
97
|
+
const vol = calcVolatility(candles);
|
|
98
|
+
expect(vol).toBeLessThan(5);
|
|
99
|
+
});
|
|
100
|
+
it('returns high volatility for wild swings', () => {
|
|
101
|
+
const candles = Array.from({ length: 20 }, (_, i) => ({
|
|
102
|
+
timestamp: Date.now() - (20 - i) * 300_000,
|
|
103
|
+
open: 100,
|
|
104
|
+
high: 120,
|
|
105
|
+
low: 80,
|
|
106
|
+
close: 100,
|
|
107
|
+
volume: 1000,
|
|
108
|
+
}));
|
|
109
|
+
const vol = calcVolatility(candles);
|
|
110
|
+
expect(vol).toBeGreaterThan(20);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
describe('calcAllIndicators', () => {
|
|
114
|
+
it('returns all four indicators', () => {
|
|
115
|
+
const prices = Array.from({ length: 50 }, (_, i) => 100 + i);
|
|
116
|
+
const result = calcAllIndicators(makeCandles(prices));
|
|
117
|
+
expect(result).toHaveProperty('rsi14');
|
|
118
|
+
expect(result).toHaveProperty('macd');
|
|
119
|
+
expect(result).toHaveProperty('trendScore');
|
|
120
|
+
expect(result).toHaveProperty('volatility');
|
|
121
|
+
expect(result.macd).toHaveProperty('line');
|
|
122
|
+
expect(result.macd).toHaveProperty('signal');
|
|
123
|
+
expect(result.macd).toHaveProperty('histogram');
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
//# sourceMappingURL=indicators.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indicators.test.js","sourceRoot":"","sources":["../../../src/paper/__tests__/indicators.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { PaperConfig, PaperPosition, IndicatorResult } from './types.js';
|
|
2
|
+
import type { SignalService } from '../services/signal.service.js';
|
|
3
|
+
export interface EntrySignal {
|
|
4
|
+
symbol: string;
|
|
5
|
+
price: number;
|
|
6
|
+
indicators: IndicatorResult;
|
|
7
|
+
fingerprint: string;
|
|
8
|
+
confidence: number;
|
|
9
|
+
score: number;
|
|
10
|
+
regime: string;
|
|
11
|
+
signalsJson: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ExitSignal {
|
|
14
|
+
position: PaperPosition;
|
|
15
|
+
reason: string;
|
|
16
|
+
currentPrice: number;
|
|
17
|
+
}
|
|
18
|
+
export declare class DecisionEngine {
|
|
19
|
+
private config;
|
|
20
|
+
private signalService;
|
|
21
|
+
private logger;
|
|
22
|
+
private totalClosedTrades;
|
|
23
|
+
constructor(config: PaperConfig, signalService: SignalService);
|
|
24
|
+
/** Update closed trade count for cold-start logic. */
|
|
25
|
+
setTradeCount(count: number): void;
|
|
26
|
+
/**
|
|
27
|
+
* Detect market regime from indicators.
|
|
28
|
+
*/
|
|
29
|
+
detectRegime(indicators: IndicatorResult): string;
|
|
30
|
+
/**
|
|
31
|
+
* Check all positions for exit conditions.
|
|
32
|
+
*/
|
|
33
|
+
checkExits(positions: PaperPosition[], prices: Map<string, number>): ExitSignal[];
|
|
34
|
+
/**
|
|
35
|
+
* Check which symbols qualify for entry.
|
|
36
|
+
*/
|
|
37
|
+
checkEntries(symbols: string[], prices: Map<string, number>, indicatorMap: Map<string, IndicatorResult>, openSymbols: Set<string>): EntrySignal[];
|
|
38
|
+
private getExitReason;
|
|
39
|
+
private shouldEnter;
|
|
40
|
+
private calcScore;
|
|
41
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { fingerprint } from '../signals/fingerprint.js';
|
|
2
|
+
import { getLogger } from '../utils/logger.js';
|
|
3
|
+
export class DecisionEngine {
|
|
4
|
+
config;
|
|
5
|
+
signalService;
|
|
6
|
+
logger = getLogger();
|
|
7
|
+
totalClosedTrades = 0;
|
|
8
|
+
constructor(config, signalService) {
|
|
9
|
+
this.config = config;
|
|
10
|
+
this.signalService = signalService;
|
|
11
|
+
}
|
|
12
|
+
/** Update closed trade count for cold-start logic. */
|
|
13
|
+
setTradeCount(count) {
|
|
14
|
+
this.totalClosedTrades = count;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Detect market regime from indicators.
|
|
18
|
+
*/
|
|
19
|
+
detectRegime(indicators) {
|
|
20
|
+
if (indicators.trendScore > 2)
|
|
21
|
+
return 'bullish_trend';
|
|
22
|
+
if (indicators.trendScore < -2)
|
|
23
|
+
return 'bearish_trend';
|
|
24
|
+
if (indicators.volatility > 60)
|
|
25
|
+
return 'volatile';
|
|
26
|
+
return 'ranging';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Check all positions for exit conditions.
|
|
30
|
+
*/
|
|
31
|
+
checkExits(positions, prices) {
|
|
32
|
+
const exits = [];
|
|
33
|
+
for (const pos of positions) {
|
|
34
|
+
const currentPrice = prices.get(pos.symbol);
|
|
35
|
+
if (currentPrice === undefined)
|
|
36
|
+
continue;
|
|
37
|
+
const pnlPct = ((currentPrice - pos.entryPrice) / pos.entryPrice) * 100;
|
|
38
|
+
const reason = this.getExitReason(pos, currentPrice, pnlPct);
|
|
39
|
+
if (reason) {
|
|
40
|
+
exits.push({ position: pos, reason, currentPrice });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return exits;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Check which symbols qualify for entry.
|
|
47
|
+
*/
|
|
48
|
+
checkEntries(symbols, prices, indicatorMap, openSymbols) {
|
|
49
|
+
const entries = [];
|
|
50
|
+
for (const symbol of symbols) {
|
|
51
|
+
if (openSymbols.has(symbol))
|
|
52
|
+
continue;
|
|
53
|
+
const price = prices.get(symbol);
|
|
54
|
+
const indicators = indicatorMap.get(symbol);
|
|
55
|
+
if (!price || !indicators)
|
|
56
|
+
continue;
|
|
57
|
+
const regime = this.detectRegime(indicators);
|
|
58
|
+
const signals = {
|
|
59
|
+
rsi14: indicators.rsi14,
|
|
60
|
+
macd: indicators.macd.line,
|
|
61
|
+
trendScore: indicators.trendScore,
|
|
62
|
+
volatility: indicators.volatility,
|
|
63
|
+
regime,
|
|
64
|
+
};
|
|
65
|
+
const fp = fingerprint(signals);
|
|
66
|
+
const confidence = this.signalService.getConfidence(signals, regime);
|
|
67
|
+
const weights = this.signalService.getSignalWeights(signals, regime);
|
|
68
|
+
const score = this.calcScore(weights);
|
|
69
|
+
// Entry conditions
|
|
70
|
+
if (!this.shouldEnter(indicators, confidence, score, regime))
|
|
71
|
+
continue;
|
|
72
|
+
entries.push({
|
|
73
|
+
symbol,
|
|
74
|
+
price,
|
|
75
|
+
indicators,
|
|
76
|
+
fingerprint: fp,
|
|
77
|
+
confidence,
|
|
78
|
+
score,
|
|
79
|
+
regime,
|
|
80
|
+
signalsJson: JSON.stringify(signals),
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
// Sort by confidence descending, take best ones
|
|
84
|
+
entries.sort((a, b) => b.confidence - a.confidence);
|
|
85
|
+
return entries;
|
|
86
|
+
}
|
|
87
|
+
getExitReason(pos, currentPrice, pnlPct) {
|
|
88
|
+
// Stop-Loss
|
|
89
|
+
if (pnlPct <= this.config.stopLossPct) {
|
|
90
|
+
return 'stop_loss';
|
|
91
|
+
}
|
|
92
|
+
// Take-Profit
|
|
93
|
+
if (pnlPct >= this.config.takeProfitPct) {
|
|
94
|
+
return 'take_profit';
|
|
95
|
+
}
|
|
96
|
+
// Trailing Stop: activate at +trailingStopActivation%, trail by trailingStopDistance%
|
|
97
|
+
if (pnlPct >= this.config.trailingStopActivation) {
|
|
98
|
+
const drawdownFromHigh = ((pos.highWaterMark - currentPrice) / pos.highWaterMark) * 100;
|
|
99
|
+
if (drawdownFromHigh >= this.config.trailingStopDistance) {
|
|
100
|
+
return 'trailing_stop';
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Time Exit
|
|
104
|
+
const openTime = new Date(pos.openedAt).getTime();
|
|
105
|
+
const holdHours = (Date.now() - openTime) / 3600000;
|
|
106
|
+
if (holdHours > this.config.timeExitHours) {
|
|
107
|
+
return 'time_exit';
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
shouldEnter(indicators, confidence, score, regime) {
|
|
112
|
+
// Don't enter in bearish regime
|
|
113
|
+
if (regime === 'bearish_trend')
|
|
114
|
+
return false;
|
|
115
|
+
// Cold-start mode: relaxed thresholds when Brain has <20 closed trades
|
|
116
|
+
const coldStart = this.totalClosedTrades < 20;
|
|
117
|
+
const confThreshold = coldStart ? 0.0 : this.config.confidenceThreshold;
|
|
118
|
+
// Confidence threshold
|
|
119
|
+
if (confidence < confThreshold) {
|
|
120
|
+
const hasBullishDiv = indicators.rsi14 < 30 && indicators.macd.line > 0;
|
|
121
|
+
const hasStrongTrend = indicators.trendScore > 2 && indicators.volatility < 60;
|
|
122
|
+
if (!hasBullishDiv && !hasStrongTrend)
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
// Score threshold (skip during cold-start — no learned data yet)
|
|
126
|
+
if (!coldStart && score > 0 && score < this.config.scoreThreshold) {
|
|
127
|
+
const hasBullishDiv = indicators.rsi14 < 30 && indicators.macd.line > 0;
|
|
128
|
+
if (!hasBullishDiv)
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
// At least one bullish condition must be true
|
|
132
|
+
// During cold-start, conditions are more relaxed to collect training data
|
|
133
|
+
const conditions = coldStart ? [
|
|
134
|
+
indicators.rsi14 < 45 && indicators.macd.line > 0, // Moderate RSI + MACD positive
|
|
135
|
+
indicators.trendScore > 1 && indicators.volatility < 80, // Mild trend, not too volatile
|
|
136
|
+
indicators.rsi14 < 35 && indicators.trendScore > 0, // Low RSI + any uptrend
|
|
137
|
+
indicators.macd.histogram > 0 && indicators.trendScore > 0, // MACD bullish + trend
|
|
138
|
+
indicators.rsi14 < 50 && indicators.trendScore > 2, // Normal RSI + strong trend
|
|
139
|
+
] : [
|
|
140
|
+
indicators.rsi14 < 30 && indicators.macd.line > 0, // Bullish divergence
|
|
141
|
+
indicators.trendScore > 2 && indicators.volatility < 60, // Strong trend, low vol
|
|
142
|
+
indicators.rsi14 < 40 && indicators.trendScore > 1, // Low RSI + uptrend
|
|
143
|
+
indicators.macd.histogram > 0 && indicators.trendScore > 0, // MACD bullish + trend
|
|
144
|
+
];
|
|
145
|
+
return conditions.some(c => c);
|
|
146
|
+
}
|
|
147
|
+
calcScore(weights) {
|
|
148
|
+
return Object.values(weights).reduce((sum, w) => sum + w, 0);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=decision-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-engine.js","sourceRoot":"","sources":["../../src/paper/decision-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { OHLCVCandle, IndicatorResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Wilder's smoothed RSI.
|
|
4
|
+
*/
|
|
5
|
+
export declare function calcRSI(candles: OHLCVCandle[], period?: number): number;
|
|
6
|
+
/**
|
|
7
|
+
* MACD (12, 26, 9): line, signal, histogram.
|
|
8
|
+
*/
|
|
9
|
+
export declare function calcMACD(candles: OHLCVCandle[], fastPeriod?: number, slowPeriod?: number, signalPeriod?: number): {
|
|
10
|
+
line: number;
|
|
11
|
+
signal: number;
|
|
12
|
+
histogram: number;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Trend score: SMA(10) vs SMA(30) crossover.
|
|
16
|
+
* Returns -5 to +5 range based on distance.
|
|
17
|
+
*/
|
|
18
|
+
export declare function calcTrendScore(candles: OHLCVCandle[]): number;
|
|
19
|
+
/**
|
|
20
|
+
* ATR-based volatility as percentage of close price.
|
|
21
|
+
*/
|
|
22
|
+
export declare function calcVolatility(candles: OHLCVCandle[], period?: number): number;
|
|
23
|
+
/**
|
|
24
|
+
* Calculate all indicators for a set of candles.
|
|
25
|
+
*/
|
|
26
|
+
export declare function calcAllIndicators(candles: OHLCVCandle[]): IndicatorResult;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wilder's smoothed RSI.
|
|
3
|
+
*/
|
|
4
|
+
export function calcRSI(candles, period = 14) {
|
|
5
|
+
if (candles.length < period + 1)
|
|
6
|
+
return 50;
|
|
7
|
+
let avgGain = 0;
|
|
8
|
+
let avgLoss = 0;
|
|
9
|
+
// Initial average
|
|
10
|
+
for (let i = 1; i <= period; i++) {
|
|
11
|
+
const change = candles[i].close - candles[i - 1].close;
|
|
12
|
+
if (change > 0)
|
|
13
|
+
avgGain += change;
|
|
14
|
+
else
|
|
15
|
+
avgLoss += Math.abs(change);
|
|
16
|
+
}
|
|
17
|
+
avgGain /= period;
|
|
18
|
+
avgLoss /= period;
|
|
19
|
+
// Wilder smoothing
|
|
20
|
+
for (let i = period + 1; i < candles.length; i++) {
|
|
21
|
+
const change = candles[i].close - candles[i - 1].close;
|
|
22
|
+
if (change > 0) {
|
|
23
|
+
avgGain = (avgGain * (period - 1) + change) / period;
|
|
24
|
+
avgLoss = (avgLoss * (period - 1)) / period;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
avgGain = (avgGain * (period - 1)) / period;
|
|
28
|
+
avgLoss = (avgLoss * (period - 1) + Math.abs(change)) / period;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (avgLoss === 0)
|
|
32
|
+
return 100;
|
|
33
|
+
const rs = avgGain / avgLoss;
|
|
34
|
+
return 100 - 100 / (1 + rs);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* MACD (12, 26, 9): line, signal, histogram.
|
|
38
|
+
*/
|
|
39
|
+
export function calcMACD(candles, fastPeriod = 12, slowPeriod = 26, signalPeriod = 9) {
|
|
40
|
+
if (candles.length < slowPeriod + signalPeriod) {
|
|
41
|
+
return { line: 0, signal: 0, histogram: 0 };
|
|
42
|
+
}
|
|
43
|
+
const closes = candles.map(c => c.close);
|
|
44
|
+
const emaFast = calcEMA(closes, fastPeriod);
|
|
45
|
+
const emaSlow = calcEMA(closes, slowPeriod);
|
|
46
|
+
const macdLine = [];
|
|
47
|
+
const startIdx = slowPeriod - 1;
|
|
48
|
+
for (let i = startIdx; i < closes.length; i++) {
|
|
49
|
+
const fastIdx = i - (closes.length - emaFast.length);
|
|
50
|
+
const slowIdx = i - (closes.length - emaSlow.length);
|
|
51
|
+
if (fastIdx >= 0 && slowIdx >= 0) {
|
|
52
|
+
macdLine.push(emaFast[fastIdx] - emaSlow[slowIdx]);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (macdLine.length < signalPeriod) {
|
|
56
|
+
return { line: macdLine[macdLine.length - 1] ?? 0, signal: 0, histogram: 0 };
|
|
57
|
+
}
|
|
58
|
+
const signalLine = calcEMA(macdLine, signalPeriod);
|
|
59
|
+
const line = macdLine[macdLine.length - 1];
|
|
60
|
+
const signal = signalLine[signalLine.length - 1];
|
|
61
|
+
return { line, signal, histogram: line - signal };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Trend score: SMA(10) vs SMA(30) crossover.
|
|
65
|
+
* Returns -5 to +5 range based on distance.
|
|
66
|
+
*/
|
|
67
|
+
export function calcTrendScore(candles) {
|
|
68
|
+
if (candles.length < 30)
|
|
69
|
+
return 0;
|
|
70
|
+
const closes = candles.map(c => c.close);
|
|
71
|
+
const sma10 = calcSMA(closes, 10);
|
|
72
|
+
const sma30 = calcSMA(closes, 30);
|
|
73
|
+
if (sma30 === 0)
|
|
74
|
+
return 0;
|
|
75
|
+
const diff = ((sma10 - sma30) / sma30) * 100;
|
|
76
|
+
// Clamp to -5..+5
|
|
77
|
+
return Math.max(-5, Math.min(5, diff));
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* ATR-based volatility as percentage of close price.
|
|
81
|
+
*/
|
|
82
|
+
export function calcVolatility(candles, period = 14) {
|
|
83
|
+
if (candles.length < period + 1)
|
|
84
|
+
return 30;
|
|
85
|
+
let atrSum = 0;
|
|
86
|
+
for (let i = candles.length - period; i < candles.length; i++) {
|
|
87
|
+
const current = candles[i];
|
|
88
|
+
const prev = candles[i - 1];
|
|
89
|
+
const tr = Math.max(current.high - current.low, Math.abs(current.high - prev.close), Math.abs(current.low - prev.close));
|
|
90
|
+
atrSum += tr;
|
|
91
|
+
}
|
|
92
|
+
const atr = atrSum / period;
|
|
93
|
+
const lastClose = candles[candles.length - 1].close;
|
|
94
|
+
if (lastClose === 0)
|
|
95
|
+
return 30;
|
|
96
|
+
return (atr / lastClose) * 100;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Calculate all indicators for a set of candles.
|
|
100
|
+
*/
|
|
101
|
+
export function calcAllIndicators(candles) {
|
|
102
|
+
return {
|
|
103
|
+
rsi14: calcRSI(candles, 14),
|
|
104
|
+
macd: calcMACD(candles),
|
|
105
|
+
trendScore: calcTrendScore(candles),
|
|
106
|
+
volatility: calcVolatility(candles),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
// ─── Helpers ────────────────────────────────────────────
|
|
110
|
+
function calcEMA(values, period) {
|
|
111
|
+
if (values.length < period)
|
|
112
|
+
return [];
|
|
113
|
+
const k = 2 / (period + 1);
|
|
114
|
+
const result = [];
|
|
115
|
+
// Seed with SMA
|
|
116
|
+
let sum = 0;
|
|
117
|
+
for (let i = 0; i < period; i++)
|
|
118
|
+
sum += values[i];
|
|
119
|
+
result.push(sum / period);
|
|
120
|
+
for (let i = period; i < values.length; i++) {
|
|
121
|
+
result.push(values[i] * k + result[result.length - 1] * (1 - k));
|
|
122
|
+
}
|
|
123
|
+
return result;
|
|
124
|
+
}
|
|
125
|
+
function calcSMA(values, period) {
|
|
126
|
+
if (values.length < period)
|
|
127
|
+
return 0;
|
|
128
|
+
let sum = 0;
|
|
129
|
+
for (let i = values.length - period; i < values.length; i++) {
|
|
130
|
+
sum += values[i];
|
|
131
|
+
}
|
|
132
|
+
return sum / period;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=indicators.js.map
|