Announcement

Collapse
No announcement yet.

Partner 728x90

Collapse

Strategy doesnt take orders

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Strategy doesnt take orders

    Hello, my strategy doesnt take orders. Could anybody help me whit it?
    PHP Code:
    #region Using declarations
    using System;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Xml.Serialization;
    using NinjaTrader.Cbi;
    using NinjaTrader.Data;
    using NinjaTrader.Indicator;
    using NinjaTrader.Gui.Chart;
    using NinjaTrader.Strategy;
    #endregion
    
    // This namespace holds all strategies and is required. Do not change it.
    namespace NinjaTrader.Strategy
    {
        /// <summary>
        /// Enter the description of your strategy here
        /// </summary>
        [Description("Enter the description of your strategy here")]
        public class Amelie3 : Strategy
        {
           
            #region Variables
            private IOrder entryOrder     = null; // This variable holds an object representing our entry order
            private IOrder stopOrder     = null; // This variable holds an object representing our stop loss order
            private IOrder targetOrder     = null; // This variable holds an object representing our profit target order
            private double diff = 1; // Default setting for Diff
            private int perioda = 1; // Default setting for Perioda
            private int hranice = 1; // Default setting for Hranice
            private int profitTarget = 1; // Default setting for ProfitTarget
            
            private IOrder entryOrder1     = null; // This variable holds an object representing our stop loss order
            // User defined variables (add any user defined variables below)
            #endregion
    
            /// <summary>
            /// This method is used to configure the strategy and is called once before any strategy method is called.
            /// </summary>
            protected override void Initialize()
            {
                CalculateOnBarClose = true;
                
                
            }
            
            /// <summary>
            /// Called on each bar update event (incoming tick)
            /// </summary>
            protected override void OnBarUpdate()
            {
                // Submit an entry limit order if we currently don't have an entry order open
                if (CrossAbove(CCI(Perioda), Hranice, 1)&& entryOrder == null && Close[0] > Open[0])
                {
                    /* The entryOrder object will take on a unique ID from our EnterLong()
                    that we can use later for order identification purposes in the OnOrderUpdate() method. */
                    entryOrder = EnterLong(1, "MyEntry");
                    
                    
                }
                
                if (CrossAbove(CCI(Perioda), Hranice, 1)&& (entryOrder != null||entryOrder1 != null) && Close[0] > Open[0] && High[0] < Variable0 - Diff * TickSize)
                {
                    /* The entryOrder object will take on a unique ID from our EnterLong()
                    that we can use later for order identification purposes in the OnOrderUpdate() method. */
                    entryOrder1 = EnterLong(1, "MyEntry1");
                }
                
                
            }
    
            /// <summary>
            /// Called on each incoming order event
            /// </summary>
            protected override void OnOrderUpdate(IOrder order)
                
            {
                
                if (entryOrder != null && entryOrder.OrderState == OrderState.Filled) 
                {
    //                ExitLongLimit(Position.AvgPrice + ProfitTarget* TickSize);
                    ExitLongLimit(Position.AvgPrice + ProfitTarget* TickSize, "MyFlat", "MyEntry ");
                    
                    
                }
                if ((entryOrder != null && entryOrder.OrderState == OrderState.Filled) && (entryOrder1 != null && entryOrder1.OrderState == OrderState.Filled)) 
                {
    //                ExitLongLimit(Position.AvgPrice + ProfitTarget* TickSize);
                    ExitLongLimit(Position.AvgPrice + ProfitTarget* TickSize, "MyFlat", "MyEntry ");
                    ExitLongLimit(Position.AvgPrice + ProfitTarget* TickSize, "MyFlat1", "MyEntry" );
                    
                }    
    
                if ((entryOrder != null && entryOrder == order) || (entryOrder1 != null && entryOrder1 == order))
                {    
                    
                    if (order.OrderState == OrderState.Cancelled && order.Filled == 0)
                    {
                        
                    entryOrder1 = null;
                    entryOrder = null;
                    }
                }
            }
            
            /// <summary>
            /// Called on each incoming execution
            /// </summary>
            protected override void OnExecution(IExecution execution)
                
            {
                if ((entryOrder != null && entryOrder == execution.Order ) || (entryOrder1 != null && entryOrder1 == execution.Order))
                Variable0 = execution.Price;
                Print(Variable0);
                
            }
    
            /// <summary>
            /// 
            /// </summary>
            protected override void OnPositionUpdate(IPosition position)
            {
                if     (Position.MarketPosition == MarketPosition.Flat)
            {
                    entryOrder1 = null;
                    entryOrder = null;
            }
                
                DrawTextFixed("MyTag", position.ToString(), TextPosition.BottomRight);
            }
    
            #region Properties
            [Description("")]
            [GridCategory("Parameters")]
            public double Diff
            {
                get { return diff; }
                set { diff = Math.Max(0, value); }
            }
    
            [Description("")]
            [GridCategory("Parameters")]
            public int Perioda
            {
                get { return perioda; }
                set { perioda = Math.Max(0, value); }
            }
    
            [Description("")]
            [GridCategory("Parameters")]
            public int Hranice
            {
                get { return hranice; }
                set { hranice = Math.Max(-1000, value); }
            }
    
            [Description("")]
            [GridCategory("Parameters")]
            public int ProfitTarget
            {
                get { return profitTarget; }
                set { profitTarget = Math.Max(1, value); }
            }
            #endregion
        }
    } 
    

    #2
    On which instrument and timeframe do you test it? I've just given it a quick run on the ES Sep futures 5min chart over the last 100 days and just get relatively few trades happen, so might be just your observation span that doesn't trigger any.

    Comment


      #3
      Last question. Is way to unite this exits to one? My strategy enter into position and if price doesnt rech porfit target a price is under last entry x ticks, strategy enters to seconds entry etc. and Exit price = average position price + profit target.
      ExitLongLimit(Position.AvgPrice + ProfitTarget* TickSize, "MyFlat", "MyEntry");
      ExitLongLimit(Position.AvgPrice + ProfitTarget* TickSize, "MyFlat1", "MyEntry1");

      Comment


        #4
        tranta, yes if you don't want to scale out of the position (like it seems you don't since both exits use same target amount) you could just go with one entry and double your quantity taken. This would simplify your code as well.

        Comment


          #5
          Now output window prints
          :
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          **NT** Error on calling 'OnOrderUpdate' method for strategy 'Aranka/c992e0e99155453e9f3c772975e47737': More than 10000 subsequent user events
          code:
          PHP Code:
          #region Using declarations
          using System;
          using System.ComponentModel;
          using System.Diagnostics;
          using System.Drawing;
          using System.Drawing.Drawing2D;
          using System.Xml.Serialization;
          using NinjaTrader.Cbi;
          using NinjaTrader.Data;
          using NinjaTrader.Indicator;
          using NinjaTrader.Gui.Chart;
          using NinjaTrader.Strategy;
          #endregion
          
          // This namespace holds all strategies and is required. Do not change it.
          namespace NinjaTrader.Strategy
          {
              /// <summary>
              /// Enter the description of your strategy here
              /// </summary>
              [Description("Enter the description of your strategy here")]
              public class Aranka : Strategy
              {
                 
                  #region Variables
                  private IOrder entryOrder     = null; // This variable holds an object representing our entry order
                  private IOrder stopOrder     = null; // This variable holds an object representing our stop loss order
                  private IOrder targetOrder     = null; // This variable holds an object representing our profit target order
                  private double diff = 1; // Default setting for Diff
                 
                  private int profitTarget = 1; // Default setting for ProfitTarget
                  
                  private IOrder entryOrder1     = null; // This variable holds an object representing our stop loss order
                  // User defined variables (add any user defined variables below)
                  #endregion
          
                  /// <summary>
                  /// This method is used to configure the strategy and is called once before any strategy method is called.
                  /// </summary>
                  protected override void Initialize()
                  {
                      CalculateOnBarClose = true;
                      MaxProcessedEvents = 10000;
                  }
                  
                  /// <summary>
                  /// Called on each bar update event (incoming tick)
                  /// </summary>
                  protected override void OnBarUpdate()
                  {
                      // Submit an entry limit order if we currently don't have an entry order open
                      if (Low[0] == CurrentDayOHL().CurrentLow[0] && entryOrder == null && Close[0] > Open[0])
                      {
                          /* The entryOrder object will take on a unique ID from our EnterLong()
                          that we can use later for order identification purposes in the OnOrderUpdate() method. */
                          entryOrder = EnterLong(1, "MyEntry");
                          
                          
                      }
                      
                      if (Low[0] == CurrentDayOHL().CurrentLow[0]&& (entryOrder != null||entryOrder1 != null) && Close[0] > Open[0] && High[0] < Variable0 - Diff * TickSize)
                      {
                          /* The entryOrder object will take on a unique ID from our EnterLong()
                          that we can use later for order identification purposes in the OnOrderUpdate() method. */
                          entryOrder1 = EnterLong(1, "MyEntry1");
                      }
                      
                      
                  }
          
                  /// <summary>
                  /// Called on each incoming order event
                  /// </summary>
                  protected override void OnOrderUpdate(IOrder order)
                  {
                      if (entryOrder != null && entryOrder.OrderState == OrderState.Filled) 
                      {
          //                ExitLongLimit(Position.AvgPrice + ProfitTarget* TickSize);
          //                ExitLongLimit(Mn, Position.AvgPrice + ProfitTarget* TickSize, "Flat", "MyEntry" );
                          ExitLongLimit(Position.AvgPrice + ProfitTarget* TickSize, "MyFlat", "MyEntry");
          //                if (Close[0] > Position.AvgPrice + ProfitTarget* TickSize)
          //                {
          //                    ExitLong();
          //
          //                }    
          //                
                          
                          
                      }
                      if ((entryOrder != null && entryOrder.OrderState == OrderState.Filled) && (entryOrder1 != null && entryOrder1.OrderState == OrderState.Filled)) 
                      {
                          ExitLongLimit(Position.AvgPrice + ProfitTarget* TickSize);
          //                ExitLongLimit(Mn, Position.AvgPrice + ProfitTarget* TickSize, "Flat", "MyEntry" );
          //                ExitLongLimit(Mn, Position.AvgPrice + ProfitTarget* TickSize, "Flat1", "MyEntry1" );
                          ExitLongLimit(Position.AvgPrice + ProfitTarget* TickSize, "MyFlat", "MyEntry1" );
                          ExitLongLimit(Position.AvgPrice + ProfitTarget* TickSize, "MyFlat", "MyEntry");
                          
                          
                      }    
          
                      if ((entryOrder != null && entryOrder == order) || (entryOrder1 != null && entryOrder1 == order))
                      {    
                          
                          if (order.OrderState == OrderState.Cancelled && order.Filled == 0)
                          {
                              
                          entryOrder1 = null;
                          entryOrder = null;
                          }
                      }
                  }
                  
                  /// <summary>
                  /// Called on each incoming execution
                  /// </summary>
                  protected override void OnExecution(IExecution execution)
                      
                  {
                      if ((entryOrder != null && entryOrder == execution.Order ) || (entryOrder1 != null && entryOrder1 == execution.Order))
                      Variable0 = execution.Price;
                      Print(Variable0);
                      
                  }
          
                  /// <summary>
                  /// 
                  /// </summary>
                  protected override void OnPositionUpdate(IPosition position)
                  {
                      
                      if     (Position.MarketPosition == MarketPosition.Flat)
                  {
                          entryOrder1 = null;
                          entryOrder = null;
                  }
                      
                      DrawTextFixed("MyTag", position.ToString(), TextPosition.BottomRight);
                  }
          
                  #region Properties
                  [Description("")]
                  [GridCategory("Parameters")]
                  public double Diff
                  {
                      get { return diff; }
                      set { diff = Math.Max(0, value); }
                  }
                  
                  
          
                  [Description("")]
                  [GridCategory("Parameters")]
                  public int ProfitTarget
                  {
                      get { return profitTarget; }
                      set { profitTarget = Math.Max(1, value); }
                  }
                  #endregion
              }
          } 
          
          Last edited by tranta; 06-26-2014, 10:15 AM. Reason: Change of code

          Comment

          Latest Posts

          Collapse

          Topics Statistics Last Post
          Started by Geovanny Suaza, 02-11-2026, 06:32 PM
          0 responses
          646 views
          0 likes
          Last Post Geovanny Suaza  
          Started by Geovanny Suaza, 02-11-2026, 05:51 PM
          0 responses
          367 views
          1 like
          Last Post Geovanny Suaza  
          Started by Mindset, 02-09-2026, 11:44 AM
          0 responses
          107 views
          0 likes
          Last Post Mindset
          by Mindset
           
          Started by Geovanny Suaza, 02-02-2026, 12:30 PM
          0 responses
          569 views
          1 like
          Last Post Geovanny Suaza  
          Started by RFrosty, 01-28-2026, 06:49 PM
          0 responses
          573 views
          1 like
          Last Post RFrosty
          by RFrosty
           
          Working...
          X