README

FTM_OPENING_RANGE_BREAKOUT_MNQ_v1_8_0_RC3
=========================================
Release version: 1.8.0-rc.3
NT adapter version: 0.4.1-draft
Native validation status: UNCOMPILED_UNRECONCILED_DRAFT
This source package contains exactly one NinjaTrader strategy: FTM_OPENING_RANGE_BREAKOUT_MNQ_v1_8_0_RC3.cs.
The C# file is copied byte-for-byte from the repository's canonical source when
the package is built. Keep exactly this one FTM source installed in NinjaTrader.
DEFAULT OPERATOR PROFILE
- Default Sizing Mode: FixedDollar (editable selector)
- Validated default Fixed Risk Per Trade ($): 535 (editable)
- Validated default Fixed-Dollar Max Contracts: 2 (editable; minimum 1)
- Validated default Trading Start Date: 20210101 (editable)
- Validated default Strategy Slippage: 1 tick (editable)
- Validated default Stop Slippage Reserve: 1 tick (editable)
- Validated default Round-Turn Sizing Reserve: $2.50/contract
(editable; does not post commissions)
- Instrument: MNQ
- Bars: Minute / 1
- Trading Hours: CME US Index Futures ETH
- Display time zone: any correctly configured system zone; decisions use New
York time after conversion through UTC
AVAILABLE SIZING MODES
- FixedDollar: size from the fixed USD budget and Fixed-Dollar Max Contracts.
- ClosedEquityPercent: risk Base Risk Per Trade (%) of Starting Equity plus
this strategy instance's closed P&L, subject to Portfolio Max Contracts and
Max Raw-Notional Leverage.
- ConfidenceScaledPercent: use the same closed-equity and portfolio limits,
but map the causal 0/50/100 confidence score to the configured low/base/high
risk percentages.
Percentage-mode defaults: Starting Equity $50,000; confidence
low/base/high 0.5%/1.0%/2.0%.
Portfolio Max Contracts 10; Max Raw-Notional Leverage
4.0x. Stored rollover offsets are enabled for Merge back
adjusted MNQ through target 202609.
Closed equity is strategy-sleeve equity, not the live account balance, and
excludes open P&L. The round-turn value above is a sizing reserve; it does not
post commissions. Stored rollover offsets are valid only for Merge back
adjusted MNQ through MNQ 09-26.
MANUAL NINJATRADER 8 SOURCE IMPORT
1. Extract this package. It is a source package, not a NinjaTrader-generated
Tools > Import > NinjaScript Add-On archive.
2. Verify the account is flat and no MNQ strategy order is working. Never remove
or replace a strategy source while its position or orders are open.
3. Remove other FTM source files, then copy only FTM_OPENING_RANGE_BREAKOUT_MNQ_v1_8_0_RC3.cs to:
Documents\NinjaTrader 8\bin\Custom\Strategies\
4. In NinjaTrader, open New > NinjaScript Editor and compile (F5). Confirm RC3
is selectable exactly once.
5. Select FTM_OPENING_RANGE_BREAKOUT_MNQ_v1_8_0_RC3. Confirm the first options section reports:
Release Version = 1.8.0-rc.3
NT Adapter Version = 0.4.1-draft
Native Validation Status = UNCOMPILED_UNRECONCILED_DRAFT
6. Select the intended sizing mode and values. Confirm startup output includes
timeContract=PASS before allowing simulated orders.
REQUIRED NINJATRADER SETUP
- Instrument: MNQ; Price based on Last; primary bars Minute / 1.
- Trading Hours: CME US Index Futures ETH; Break at EOD enabled.
- Load enough complete data for 120 prior eligible opening ranges and 21 prior
eligible cash closes. Loading from 2020-01-01 is the standard setup when
Trading Start Date remains 20210101.
- Entries per direction 1; Unique entries; Set order quantity Strategy; Time in
force GTC; Calculate OnBarClose; Bars required to trade 15.
- Exit on session close enabled at 30 seconds; Realtime error handling
StopCancelClose; Start behavior ImmediatelySubmit without account
synchronization.
- The display time zone does not need to be Eastern. Madrid, UTC, and other
valid system zones are acceptable because the strategy converts bar time
through UTC and makes all session decisions in New York time. Do not change
the global time zone while an instance is enabled.
HOW THE STRATEGY WORKS
- It requires the prior-day 23:00 UTC reference-open bar and a continuous
09:30-16:00 ET one-minute cash window.
- It builds the 09:30-09:45 ET opening range, then checks completed 15-minute
closes from 10:00 through 15:45. A breakout must clear the range by one tick
and pass candle-shape, close-location, and touch-count admission.
- The first decision close near completed-session VWAP takes the direct route.
Other signals use prior-session direction, an online 15-neighbor direction
model, volatility, touch behavior, and short causal observation windows to
keep or reverse the side.
- At most one admitted breakout is acted on per cash date. Missing input blocks
the date instead of creating a late substitute entry.
- Initial risk is 1.25 times the opening range, clamped to 2-100 points. The
normal target is 3R; a high opening range uses 1.25R. Quarter-hour checks can
move the stop to break-even or +0.10R, depending on regime. A conditional
15:30 ET exit and mandatory 16:00 ET flatten are also enforced.
RESTART RECOVERY BOUNDARY
- Install and first enable RC3 only while the account is flat and no active MNQ
account order is working. A different strategy instance's open position or
orders must be reconciled manually before RC3 is enabled.
- ImmediatelySubmit uses loaded-data reconstruction to map a managed position
and its orders. GTC alone does not transfer ownership between instances.
- On an RC3 restart with exposure, reconstruction must match the exact side,
quantity, average price, entry signal, full-quantity GTC Working stop, and
full-quantity GTC Working target. The two exits must have the correct types,
actions, prices, and one non-empty OCO relationship. The read-only account
snapshot must contain exactly those two active MNQ orders; flat startup
requires no active MNQ account order.
- A successful audit prints RESTART RECOVERY PASS only after two snapshots with
the identical validated position/order fingerprint and the same stop/target
Order object identities, with the final confirmation on a distinct realtime
strategy bar. A changed field or reference becomes a new first snapshot.
Entries remain blocked until the recovered position is flat and a later New
York cash-date boundary passes.
- A mismatch may request the existing bounded managed administrative exit only
when both current-instance protective legs are full-quantity, zero-filled,
broker-confirmed Working orders, strategy/account positions match, the account
snapshot contains exactly those two orders, and no identity, fill, duplicate,
or earlier account-set ambiguity was observed. Every other mismatch prints
REQUIRES MANUAL RECONCILIATION without using account-level order APIs. Never
repeatedly disable/enable the strategy to clear that error.
- Protective fills are evaluated after OnExecutionUpdate has updated the
strategy position. Cancellation, Unknown state, and non-platform-terminal
outcomes queue a prompt strategy-thread re-audit. A rejection or qualifying
error may instead invoke NinjaTrader's StopCancelClose path before that audit.
- REQUIRES MANUAL RECONCILIATION is terminal for RC3-authored actions and state
transitions in that strategy instance. An Unknown administrative exit is
never retried because its live status cannot be proven; disable the strategy
and reconcile the account manually.
- A rejected or nonzero-error administrative exit permanently latches the
RC3-authored exit path closed before NinjaTrader's StopCancelClose action can
race a retry. Only Cancelled with NoError can enter the bounded retry path.
- A realtime entry execution moves the normal trade out of FlatReady so its
current-instance position and managed protection remain under lifecycle
supervision. An Unknown entry reference remains blocking across cash dates.
- ImmediatelySubmit can still cancel or replace orders when reconstructed and
live details do not match. RC3 does not promise unchanged broker order IDs or
a zero-gap restart. Run the complete Sim101 restart protocol and never use a
live account for the first restart test.
PLATFORM-OWNED SAFETY BACKSTOPS
- RC3 retains RealtimeErrorHandling.StopCancelClose and the
30-second NinjaTrader session-close exit. It does not use IgnoreAllErrors.
These platform engines remain outside RC3's manual-reconciliation state and
may cancel strategy orders or submit a Close after a qualifying error or at
the Trading Hours session end.
- Record the NT8 global settings for cancelling entry and exit orders when a
strategy is disabled. RC3 cannot override them. If the intended setting allows
protective exits to be cancelled on disable, restart continuity cannot pass.
- In Sim101, label every submit, change, cancellation, and Close as RC3-authored
or owned by NinjaTrader startup, StopCancelClose, session-close, disable, or
connection handling. Test every order-role rejection, manual state through
session end, normal 16:00 exit through later session end, protective-fill/OCO
races, and disable/restart under the exact intended global settings.
EXPECTED SKIPS AND ACTIONABLE FAULTS
- Weekends, exchange sessions ending before 16:00 ET, embedded data-quality
dates, and embedded rollover exclusions are planned no-trade dates. While
loaded data is processed, they are quiet unless Enable Detailed Output is on.
A planned early close encountered in realtime produces one warning.
- A missing 23:00 UTC reference bar, misaligned minute, cash-window gap, invalid
volume, or missing 16:00 completion on an otherwise eligible full session is
an actionable error. The date is blocked and the message must not be ignored
in realtime.
- For troubleshooting, enable Detailed Output for one reproduced session and
collect NinjaScript Output and Log rows. Startup output should identify the
instrument, Trading Hours template, platform and New York zones, sizing mode,
rollover settings, and timeContract=PASS.
Do not restore an old bin\Custom directory, compiled DLL, cache, or saved
strategy template over the working installation.
INTEGRITY
SHA256SUMS verifies the extracted files, including the restart protocol.
manifest.json records the canonical source and protocol hashes, editable fields,
and default profile. Rebuild with `make nt8-package`; verify package construction
with `make nt8-package-check`.
添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论