small fixes for backtest

This commit is contained in:
Boki 2025-07-03 18:14:40 -04:00
parent 6df32dc18b
commit 6cf3179092
16 changed files with 2180 additions and 16 deletions

View file

@ -11,11 +11,11 @@ export class SimpleMovingAverageCrossover extends BaseStrategy {
private totalSignals = 0;
// Strategy parameters
private readonly FAST_PERIOD = 10;
private readonly SLOW_PERIOD = 20;
private readonly FAST_PERIOD = 5; // Changed from 10 to generate more signals
private readonly SLOW_PERIOD = 15; // Changed from 20 to generate more signals
private readonly POSITION_SIZE = 0.1; // 10% of capital per position
private readonly MIN_HOLDING_BARS = 1; // Minimum bars to hold position
private readonly DEBUG_INTERVAL = 20; // Log every N bars for debugging
private readonly DEBUG_INTERVAL = 10; // Log every N bars for debugging
constructor(config: any, modeManager?: any, executionService?: any) {
super(config, modeManager, executionService);
@ -119,8 +119,8 @@ export class SimpleMovingAverageCrossover extends BaseStrategy {
logger.info(` Current position: ${currentPosition} shares`);
// For golden cross, we want to be long
// If we're short, we need to close the short first
if (currentPosition < 0) {
// Close short position first
logger.info(` Closing short position of ${Math.abs(currentPosition)} shares`);
const signal: Signal = {
type: 'buy',
@ -206,10 +206,7 @@ export class SimpleMovingAverageCrossover extends BaseStrategy {
logger.info(`👉 Total signals generated: ${this.totalSignals}`);
return signal;
} else if (currentPosition === 0) {
// Optional: Open short position (comment out if long-only)
logger.info(` No position, staying flat (long-only strategy)`);
// Uncomment below for long/short strategy:
/*
// Open short position for long/short strategy
const positionSize = this.calculatePositionSize(currentPrice);
logger.info(` Opening short position: ${positionSize} shares`);
@ -233,7 +230,6 @@ export class SimpleMovingAverageCrossover extends BaseStrategy {
this.totalSignals++;
logger.info(`👉 Total signals generated: ${this.totalSignals}`);
return signal;
*/
} else {
logger.info(` ⚠️ Already short, skipping sell signal`);
}