fix: Testdaten-Arithmetik im Trump-Cycle-Test (200 Candles = 50h < 60h Hold)
Plan-Bug: 300 Candles = 75h > holdHours — Position schloss innerhalb der Testdaten, Tests 1/3/4 erwarteten aber offene Positionen. Implementierung war korrekt. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -695,7 +695,7 @@ const fresh = (): TrumpLiveState => ({ cash: 10_000, positions: [], cursorTs: T0
|
||||
|
||||
describe('processTrumpCycle', () => {
|
||||
test('Event → Buy am Open der ersten Candle nach eventTs, 20% Equity', () => {
|
||||
const candles = new Map([['BTC_USDT' as Pair, flat('BTC_USDT', 300)]]);
|
||||
const candles = new Map([['BTC_USDT' as Pair, flat('BTC_USDT', 200)]]);
|
||||
const events = [{ id: 1, instrument: 'BTC_USDT' as Pair, eventTs: T0 + M15 + 1 }];
|
||||
const r = processTrumpCycle(candles, events, fresh(), CFG);
|
||||
expect(r.positions).toHaveLength(1);
|
||||
@@ -721,7 +721,7 @@ describe('processTrumpCycle', () => {
|
||||
});
|
||||
|
||||
test('Event verfällt, wenn Pair schon belegt (consumed, kein 2. Trade)', () => {
|
||||
const candles = new Map([['BTC_USDT' as Pair, flat('BTC_USDT', 300)]]);
|
||||
const candles = new Map([['BTC_USDT' as Pair, flat('BTC_USDT', 200)]]);
|
||||
const events = [
|
||||
{ id: 1, instrument: 'BTC_USDT' as Pair, eventTs: T0 + 1 },
|
||||
{ id: 2, instrument: 'BTC_USDT' as Pair, eventTs: T0 + M15 + 1 },
|
||||
@@ -734,8 +734,8 @@ describe('processTrumpCycle', () => {
|
||||
test('maxPositions blockiert, Event verfällt', () => {
|
||||
const cfg = { ...CFG, maxPositions: 1 };
|
||||
const candles = new Map([
|
||||
['BTC_USDT' as Pair, flat('BTC_USDT', 300)],
|
||||
['ETH_USDT' as Pair, flat('ETH_USDT', 300, 50)],
|
||||
['BTC_USDT' as Pair, flat('BTC_USDT', 200)],
|
||||
['ETH_USDT' as Pair, flat('ETH_USDT', 200, 50)],
|
||||
]);
|
||||
const events = [
|
||||
{ id: 1, instrument: 'BTC_USDT' as Pair, eventTs: T0 + 1 },
|
||||
|
||||
@@ -20,7 +20,7 @@ const fresh = (): TrumpLiveState => ({ cash: 10_000, positions: [], cursorTs: T0
|
||||
|
||||
describe('processTrumpCycle', () => {
|
||||
test('Event → Buy am Open der ersten Candle nach eventTs, 20% Equity', () => {
|
||||
const candles = new Map([['BTC_USDT' as Pair, flat('BTC_USDT', 300)]]);
|
||||
const candles = new Map([['BTC_USDT' as Pair, flat('BTC_USDT', 200)]]);
|
||||
const events = [{ id: 1, instrument: 'BTC_USDT' as Pair, eventTs: T0 + M15 + 1 }];
|
||||
const r = processTrumpCycle(candles, events, fresh(), CFG);
|
||||
expect(r.positions).toHaveLength(1);
|
||||
@@ -46,7 +46,7 @@ describe('processTrumpCycle', () => {
|
||||
});
|
||||
|
||||
test('Event verfällt, wenn Pair schon belegt (consumed, kein 2. Trade)', () => {
|
||||
const candles = new Map([['BTC_USDT' as Pair, flat('BTC_USDT', 300)]]);
|
||||
const candles = new Map([['BTC_USDT' as Pair, flat('BTC_USDT', 200)]]);
|
||||
const events = [
|
||||
{ id: 1, instrument: 'BTC_USDT' as Pair, eventTs: T0 + 1 },
|
||||
{ id: 2, instrument: 'BTC_USDT' as Pair, eventTs: T0 + M15 + 1 },
|
||||
@@ -59,8 +59,8 @@ describe('processTrumpCycle', () => {
|
||||
test('maxPositions blockiert, Event verfällt', () => {
|
||||
const cfg = { ...CFG, maxPositions: 1 };
|
||||
const candles = new Map([
|
||||
['BTC_USDT' as Pair, flat('BTC_USDT', 300)],
|
||||
['ETH_USDT' as Pair, flat('ETH_USDT', 300, 50)],
|
||||
['BTC_USDT' as Pair, flat('BTC_USDT', 200)],
|
||||
['ETH_USDT' as Pair, flat('ETH_USDT', 200, 50)],
|
||||
]);
|
||||
const events = [
|
||||
{ id: 1, instrument: 'BTC_USDT' as Pair, eventTs: T0 + 1 },
|
||||
|
||||
Reference in New Issue
Block a user