Add pivot retest + engulfing strategy with dual take-profit

New strategy (pivot_retest_engulfing) that enters long/short trades at
pivot level retests confirmed by SMA 50 alignment and engulfing candle
patterns. Uses ATR-based stop loss with two take-profit levels — at TP1
half the position closes and SL moves to breakeven, at TP2 the rest closes.

- data_engine: add detect_engulfing() for bullish/bearish pattern detection
- backtester: add generate_signals_pivot_retest(), run_backtest_dual_tp(),
  update signal dispatcher and metrics for dual-TP trade format
- order_executor: support signal=-1 (SHORT), attach SL/TP levels
- config: switch to pivot_retest_engulfing with default params
- chart_trades: new mplfinance script to visualize entries on candlesticks
- README: rewrite with full setup guide, project structure, strategy docs
- requirements.txt: make portable (remove conda file:// paths), add mplfinance
- .env.example: add template for secrets

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Brent Neale
2026-02-17 15:18:02 +10:00
co-authored by Claude Opus 4.6
parent d843e63e7b
commit b1f3a919bf
11 changed files with 1017 additions and 114 deletions
+21
View File
@@ -37,6 +37,7 @@
(function() {
var ohlc = {{ ohlc_json | safe }};
var pivots = {{ pivot_json | safe }};
var smas = {{ sma_json | safe }};
if (!ohlc || ohlc.length === 0) {
document.getElementById('chart').innerHTML =
@@ -58,6 +59,26 @@
name: '{{ instrument }}'
}];
// SMA overlay lines
var smaColors = {
'sma_3': '#ff9800',
'sma_20': '#9c27b0',
'sma_21': '#673ab7',
'sma_50': '#00bcd4',
'sma_100': '#e91e63'
};
Object.keys(smas).forEach(function(key) {
traces.push({
x: times,
y: smas[key],
type: 'scatter',
mode: 'lines',
name: key.toUpperCase().replace('_', ' '),
line: {color: smaColors[key] || '#999', width: 1.5},
connectgaps: false
});
});
// Pivot level lines
var levelDefs = [
{key: 'r3', color: '#b71c1c', label: 'R3'},