TRADER Posted yesterday at 05:24 AM Report Posted yesterday at 05:24 AM https://workupload.com/file/x6U26vprjQr @redux @N9T
N9T Posted 10 hours ago Report Posted 10 hours ago Not fully working yet: https://ibb.co/gMLcSVwm Harrys 1
trader04 Posted 6 hours ago Report Posted 6 hours ago I ask chat gpt a diagnostic, @N9Ti hope that works 🧠 TYPICAL CASE: “Displays but never trades” When everything displays correctly, it means: ✅ OnBarUpdate() is running ✅ Conditions are being evaluated ❌ The execution path to EnterLong() / EnterShort() is NEVER reached There are 4 possible internal errors. I’ll list them in order of probability, with the exact fix. 🔴 PROBLEM 1 (MOST COMMON) A return; condition stops execution BEFORE the order Very common example: if (!IsRealtime) return; Or: if (State != State.Realtime) return; ➡️ Result: Backtest ❌ SIM ❌ Live ❌ BUT display works fine ✅ ✅ FIX Temporarily remove or comment it out: // if (!IsRealtime) // return; 📌 Many devs add this “just for testing”… and forget it. 🔴 PROBLEM 2 The bot is unintentionally blocked by Historical Example: if (Historical) return; 👉 NinjaTrader often still considers the strategy as historical even when you see the live market. ✅ SAFE FIX Replace with: if (State != State.Realtime && State != State.Transition) return; Or remove it entirely for testing. 🔴 PROBLEM 3 A “sentinel” variable is never initialized correctly Real example: bool canTrade; Later: if (!canTrade) return; ❌ BUT canTrade is NEVER set to true ➡️ Result: zero trades forever ✅ FIX In OnStateChange(): if (State == State.Configure) { canTrade = true; } OR before entry logic: canTrade = true; 🔴 PROBLEM 4 Orders are inside a condition that is never true Sneaky example: if (Position.MarketPosition != MarketPosition.Flat) { EnterLong(); } 😅 → never executed Or: if (BarsInProgress == 1) { EnterLong(); } But you only have one timeframe. ✅ FIX Make sure: BarsInProgress == 0 OR remove the condition to test. 🧪 DEFINITIVE TEST (TO LOCATE THE BUG) 👉 Do THIS test — it’s extremely important: At the very top of OnBarUpdate(): Print("OnBarUpdate OK"); Then JUST BEFORE EnterLong(): Print("ENTRY CONDITION REACHED"); Result: ❌ You never see “ENTRY CONDITION REACHED” ➡️ logic is blocked BEFORE the order ✅ You see it but no trade ➡️ order / state issue 🔥 NEXT STEP (LET’S FINISH THIS) To help you 100%, do ONE thing: 👉 paste the OnBarUpdate() block here (even if it’s long) OR tell me: do you see IsRealtime, Historical, canTrade, return; in the code? I’ll tell you exactly which line is blocking execution and what to fix, straight to the point 💪
N9T Posted 5 hours ago Report Posted 5 hours ago 43 minutes ago, trader04 said: I ask chat gpt a diagnostic, @N9Ti hope that works 🧠 TYPICAL CASE: “Displays but never trades” When everything displays correctly, it means: ✅ OnBarUpdate() is running ✅ Conditions are being evaluated ❌ The execution path to EnterLong() / EnterShort() is NEVER reached There are 4 possible internal errors. I’ll list them in order of probability, with the exact fix. 🔴 PROBLEM 1 (MOST COMMON) A return; condition stops execution BEFORE the order Very common example: if (!IsRealtime) return; Or: if (State != State.Realtime) return; ➡️ Result: Backtest ❌ SIM ❌ Live ❌ BUT display works fine ✅ ✅ FIX Temporarily remove or comment it out: // if (!IsRealtime) // return; 📌 Many devs add this “just for testing”… and forget it. 🔴 PROBLEM 2 The bot is unintentionally blocked by Historical Example: if (Historical) return; 👉 NinjaTrader often still considers the strategy as historical even when you see the live market. ✅ SAFE FIX Replace with: if (State != State.Realtime && State != State.Transition) return; Or remove it entirely for testing. 🔴 PROBLEM 3 A “sentinel” variable is never initialized correctly Real example: bool canTrade; Later: if (!canTrade) return; ❌ BUT canTrade is NEVER set to true ➡️ Result: zero trades forever ✅ FIX In OnStateChange(): if (State == State.Configure) { canTrade = true; } OR before entry logic: canTrade = true; 🔴 PROBLEM 4 Orders are inside a condition that is never true Sneaky example: if (Position.MarketPosition != MarketPosition.Flat) { EnterLong(); } 😅 → never executed Or: if (BarsInProgress == 1) { EnterLong(); } But you only have one timeframe. ✅ FIX Make sure: BarsInProgress == 0 OR remove the condition to test. 🧪 DEFINITIVE TEST (TO LOCATE THE BUG) 👉 Do THIS test — it’s extremely important: At the very top of OnBarUpdate(): Print("OnBarUpdate OK"); Then JUST BEFORE EnterLong(): Print("ENTRY CONDITION REACHED"); Result: ❌ You never see “ENTRY CONDITION REACHED” ➡️ logic is blocked BEFORE the order ✅ You see it but no trade ➡️ order / state issue 🔥 NEXT STEP (LET’S FINISH THIS) To help you 100%, do ONE thing: 👉 paste the OnBarUpdate() block here (even if it’s long) OR tell me: do you see IsRealtime, Historical, canTrade, return; in the code? I’ll tell you exactly which line is blocking execution and what to fix, straight to the point 💪 I dont need any help and you are welcome to try to educate yourself the file.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now