Wolne USDC:
Całość USDC:
| Equity Now | $0.00 |
| Free USDC | $0.00 |
| Position Notional | $0.00 |
| Cycle Invested Cost | $0.00 |
| Realized PnL (cycle) | $0.00 |
| Unrealized PnL (cycle) | $0.00 |
| Time | Event | Qty | Price | PnL |
|---|---|---|---|---|
| No events yet. Waiting for 1m signals... | ||||
| Bucket | Cap | Used | Used% | Remain | Status |
|---|---|---|---|---|---|
| Loading... | |||||
| Bucket | Qty | Cost | Avg Entry |
|---|---|---|---|
| Loading... | |||
| Time | Action | Result | Reason |
|---|---|---|---|
| No recent decisions | |||
| Time | Type | Module | TF | Qty | Price | P&L | Note |
|---|---|---|---|---|---|---|---|
| No events today | |||||||
Package-based capital allocation with global TP, trailing profit, and price DCA modules. Best for trending markets and swing trades.
Capital is divided into "packages" - fixed portions used for each buy.
| Parameter | Default | Description |
|---|---|---|
| capitalPercentage | 50% | % of account balance to allocate |
| maxExposure | 80% | Maximum capital in position |
| bigPackageSize | 5% | Package size when exposure < 50% |
| smallPackageSize | 3% | Package size when exposure ≥ 50% |
| maxBigPackages | 10 | Max big packages per cycle |
| maxSmallPackages | 10 | Max small packages per cycle |
A session tracks trading activity between module resets. Reset occurs when exposure drops below 2%.
Locks profits when unrealized PnL hits threshold.
Protects profits with dynamic trailing stop.
Auto-buys on significant price drops.
Average entry price weighted by quantity at each price level.
Timeframe-weighted capital budgets with quick exits for probe positions. Best for multi-timeframe signals and scalping.
V2 allocates capital based on signal timeframe. Lower timeframes (5m, 15m) are "probes" with quick exits, while higher timeframes (1h, 4h) are "core" positions with DCA support.
Each timeframe has a hard cap on capital allocation.
| Timeframe | Type | Max Budget | Per Buy | Example ($2500) |
|---|---|---|---|---|
| 5m | Probe | 5% | 1% | $125 max, $25/buy |
| 15m | Probe | 15% | 5% | $375 max, $125/buy |
| 1h | Core | 30% | 10% | $750 max, $250/buy |
| 4h | Core | 50% | 15% | $1250 max, $375/buy |
Probe positions (5m/15m) have automatic exit triggers evaluated every price update.
| Take Profit: | +1.5% |
| Stop Loss: | -1.2% |
| Time Exit: | 12 candles (60 min) |
| Take Profit: | +3.0% |
| Stop Loss: | -2.0% |
| Time Exit: | 8 candles (120 min) |
{"signal": "BUY", "timeframe": "15m"}
Exit automatically via Quick Exit rules. SELL signals have no effect on probes.
Exit via SELL signal (same as V1). Must be profitable to sell.
V2 tracks positions per timeframe separately.
| Feature | V1 (DCA-Grid) | V2 (Multi-TF) |
|---|---|---|
| Capital Allocation | Package-based (big/small) | Timeframe budgets |
| Position Tracking | Single VWAP | Per-timeframe |
| Risk Modules | Global TP, Trailing, Price DCA | Quick Exits (TP/SL/Time) |
| DCA Support | All positions | Core only (1h/4h) |
| Exit Strategy | SELL signal + profit check | Probes: Auto exit Core: SELL signal |
| Best For | Trending markets, swing trades | Multi-timeframe signals, scalping |
You can switch between V1 and V2 strategies, but only when no position is open.
The "Close All" button performs an emergency liquidation of all positions regardless of profit/loss.
POST /api/v0rt3x/signal
Send BUY/SELL signal. Body: {"signal": "BUY", "timeframe": "15m"}
GET /api/v0rt3x/strategy
Get active strategy info and switch availability
POST /api/v0rt3x/strategy/switch
Switch strategy. Body: {"strategyId": "v2"}
GET /api/v0rt3x/v2/budgets
Get V2 timeframe budget usage
GET /api/v0rt3x/v2/probes
Get active probe positions with exit rules
POST /api/closeAll
Emergency close all positions
Engine state is automatically saved and restored across restarts.
| File | Description |
|---|---|
| v0rt3x-state.json | Live mode state (V1 + V2) |
| v0rt3x-state-paper.json | Paper mode state |
| v0rt3x-cycles.jsonl | Cycle history (append-only) |
| v0rt3x-config.json | User configuration overrides |
Complete technical documentation of all V2 engine modules with state models, data flows, and decision logic.
Frozen capital reference computed on first BUY of new cycle. Used for budget calculations.
capitalBase| valueUSDC | Frozen capital value |
| percent | Config % (default 50%) |
| source | 'portfolio' | 'config' |
| frozen | true when cycle active |
| isValid | Validation status |
| computedAt | ISO timestamp |
Timeframe-weighted budget allocation with hard caps per bucket.
| Bucket | Type | Weight | Cap % | Example ($2500) |
|---|---|---|---|---|
| 5m_probe | Probe | 5% | 5% | $125 |
| 15m_probe | Probe | 10% | 10% | $250 |
| 1h_core | Core | 35% | 35% | $875 |
| 4h_core | Core | 50% | 50% | $1250 |
v2Budgets| baseUSDC | From capitalBase |
| buckets.*.capUSDC | Hard cap per bucket |
| buckets.*.usedUSDC | Currently used |
| buckets.*.usedPct | Used % of cap |
| buckets.*.remainingUSDC | Available to buy |
Per-timeframe position tracking with qty, cost, and avgEntry.
v2Buckets| 5m_probe.qty | FET quantity |
| 5m_probe.costUSDC | Total cost |
| 5m_probe.avgEntry | VWAP entry |
| 5m_probe.active | qty > 0.0001 |
Monitors exposure and triggers module reset when exposure drops below threshold (2%).
thresholdMonitor| resetThreshold | 0.02 (2%) |
| activeThreshold | 0.10 (10%) |
| wasActive | true if was > 10% |
| lastExposure | Last checked exposure |
| lastResetTime | ISO timestamp |
| resetCount | Number of resets |
| sessionMetrics | Current session stats |
DCA only allowed for core positions (1h/4h) with anchor price tracking.
v2Dca| lastCoreBuyPrice | DCA anchor price |
| lastCoreBuyTf | '1h' | '4h' |
| lastCoreBuyAt | ISO timestamp |
| dcaCount1h | DCA counter 1h |
| dcaCount4h | DCA counter 4h |
Automatic exits for probe positions (5m/15m) via TP, SL, or TIME rules.
| Timeframe | TP % | SL % | Max Hold |
|---|---|---|---|
| 5m | +0.6% | -0.4% | 15 min |
| 15m | +1.2% | -0.8% | 60 min |
v2ProbeExit| 5m.active | Timer running |
| 5m.startedAt | Timer start |
| 5m.deadlineAt | TIME exit deadline |
| 5m.lastReason | Exit reason if triggered |
Prevents premature cycle close. Triggers final sell when remaining% drops below threshold.
| V2_FINAL_CLOSE_THRESHOLD | 30% (default) |
| V2_MIN_NOTIONAL | 5 USDC |
v2FinalCloseGate| gateActive | Watching for trigger |
| coreRemainingPct | Current core % |
| wouldTrigger | Next sell triggers |
| reason | 'BELOW_THRESHOLD' |
Emergency liquidation of ALL buckets (probes + core) via single market sell.
v2CloseAll| lastStatus | 'SUCCESS' | 'FAILED' | 'NOOP' |
| lastReason | Error or null |
| lastAt | ISO timestamp |
| lastSoldQty | Total qty sold |
| lastRealizedPnl | Total PnL |
Detection-only layer for mismatches and sanity checks. No auto-fix.
v2Health| overall | 'OK' | 'WARN' | 'ERROR' |
| score | 0-100 (100 = healthy) |
| checks.qty | Binance vs logical qty |
| checks.budgets | Budget sanity |
| checks.buckets | Bucket sanity |
| checks.cycle | Cycle sanity |
| checks.capitalBase | Capital base sanity |
| recommendations | Top 3 issues |
| Condition | Result | Log Event |
|---|---|---|
| Engine not running | REJECT | BUY_REJECTED_NOT_RUNNING |
| Budget exceeded for TF | REJECT | V2_BUY_REJECTED_BUDGET_EXCEEDED |
| CapitalBase invalid | REJECT | V2_BUY_REJECTED_NO_CAPITAL_BASE |
| All checks pass | EXECUTE | BUY_EXECUTED |
| Condition | Result | Action |
|---|---|---|
| TF is probe (5m/15m) | IGNORE | Probes exit via M6 only |
| Core bucket empty | SKIP | Nothing to sell |
| After sell, remaining% ≥ 30% | PARTIAL | Sell fraction, keep cycle |
| After sell, remaining% < 30% | FINAL | Sell ALL remaining, close cycle |
| Condition | Result | Log Event |
|---|---|---|
| TF is probe (5m/15m) | SKIP | V2_DCA_SKIPPED_NOT_CORE_TF |
| Price above anchor × (1-drop%) | SKIP | V2_DCA_SKIPPED_PRICE_ABOVE |
| dcaCount >= maxCount | SKIP | V2_DCA_SKIPPED_MAX_COUNT |
| Budget exceeded | SKIP | V2_DCA_SKIPPED_BUDGET |
| All checks pass | EXECUTE | V2_DCA_EXECUTED |
Automatic profit protection and DCA modules evaluated on every price tick (5s interval).
Higher priority module blocks lower ones when triggered.
Triggered when unrealized PnL% reaches threshold. Sells 60% proportionally from all buckets.
| triggerPct | 12% (0.12) |
| realizationPct | 60% (0.60) |
Trailing TP może triggerować MAKSYMALNIE RAZ w jednym cyklu V2. Po pierwszym triggerze jest ZABLOKOWANY do końca cyklu.
PnL-based trailing stop that activates at 3%, maintains a lock level 1% below peak, and sells 60% when price drops to lock.
| activationPct | 3% (0.03) |
| gapPct | 1% (0.01) |
| stepPct | 0.5% (0.005) |
| realizationPct | 60% (0.60) |
trailing| active | Trailing is active |
| maxPnlPct | Peak PnL% seen |
| lockLevelPct | Current lock level |
| triggeredInCycle | ONE-SHOT flag |
| Poprzednie zachowanie | Nowe zachowanie (ONE-SHOT) |
|---|---|
| Wielokrotne triggery w cyklu | Maksymalnie 1 trigger per cykl |
| Po triggerze trailing mógł reaktywować się | Po triggerze trailing ZABLOKOWANY |
| Kaskadowe sprzedaże 60% → 60% → 60%... | Jedna sprzedaż 60%, reszta przez inne moduły |
triggeredInCycle = true → BLOKADA
triggeredInCycle = falseAutomatic dollar-cost averaging when price drops significantly from reference price.
| dropPct | 3% (0.03) |
| minCandlesSinceLastBuy | 4 candles |
| maxPerCycle | 3 DCA buys |
| Module | Trigger Condition | Action | Can Re-trigger? |
|---|---|---|---|
| Global TP | PnL% ≥ 12% | Sell 60% proportionally | ✓ Yes (multiple per cycle) |
| Trailing TP | Active && PnL% ≤ lockLevel | Sell 60% proportionally | ✗ ONE-SHOT (1× per cycle) |
| Price DCA | Price ≤ ref × (1 - 3%) | Buy with budget | ✓ Yes (max 3 per cycle) |
Deterministic exit logic for 1h/4h SELL signals - sells fraction of TOTAL core proportionally from both buckets.
Sygnały SELL 1h/4h z TradingView sprzedają PROPORCJONALNIE z obu bucketów core (1h_core + 4h_core), nie tylko z jednego.
External SELL signals for 1h and 4h timeframes trigger proportional sells from TOTAL core exposure (1h_core + 4h_core combined).
| Signal | Sell Fraction | Buckets Affected | Cycle State |
|---|---|---|---|
| SELL 1h | 75% of TOTAL core | 1h_core + 4h_core (proportionally) | Remains ACTIVE |
| SELL 4h | 100% of TOTAL core | 1h_core + 4h_core (proportionally) | → FLAT (closes cycle) |
| fraction | 0.75 (1h) or 1.0 (4h) |
| reason | CORE_SELL_1H_75 / CORE_SELL_4H_FULL |
| source | signal_1h / signal_4h |
| 1h_core | 600 FET |
| 4h_core | 400 FET |
| Total Core | 1000 FET |
| Target (75%) | 750 FET |
| 1h share | 450 FET (60%) |
| 4h share | 300 FET (40%) |
| 1h_core | 150 FET |
| 4h_core | 100 FET |
| Remaining | 250 FET (25%) |
| Signal | Handler | Action | Buckets |
|---|---|---|---|
| SELL 5m | closeProbePosition() | Close probe via Quick Exit | 5m_probe only |
| SELL 15m | closeProbePosition() | Close probe via Quick Exit | 15m_probe only |
| SELL 1h | _sellCoreFractionFromSignal(0.75) | Sell 75% of total core | 1h_core + 4h_core |
| SELL 4h | _sellCoreFractionFromSignal(1.0) | Sell 100% of total core | 1h_core + 4h_core |
| SELL (no tf) | Final Close Gate → 20% partial | Legacy behavior | Proportional |