@gabriel3615/ta_analysis
Version:
stock ta analysis
27 lines (26 loc) • 1.19 kB
JavaScript
import { backtestStrategiesConfig } from '../strategyConfig.js';
import { analyzeRange } from '../../analyzer/range/rangeDetector.js';
export function RangeBreakoutStrategy(symbol, timeframe, params = {}) {
const { minQuality = backtestStrategiesConfig.rangeBreakout.minQuality, requireRetest = backtestStrategiesConfig.rangeBreakout.requireRetest, } = params;
return {
name: 'RangeBreakout',
generateSignal(history, i) {
if (i < 60)
return null;
const window = history.slice(Math.max(0, i - 200), i + 1);
const res = analyzeRange(symbol, window, timeframe);
if (!res.breakout)
return null;
if (requireRetest && !res.breakout.retested)
return null;
if ((res.breakout.qualityScore ?? 0) < minQuality)
return null;
return {
timestamp: history[i].timestamp,
direction: res.breakout.direction === 'up' ? 'long' : 'short',
strength: res.breakout.qualityScore,
reason: 'Range breakout' + (requireRetest ? ' with retest' : ''),
};
},
};
}