Announcement

Collapse
No announcement yet.

Partner 728x90

Collapse

Converting the Sample ATM Strategy

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

  • NinjaTrader_Ray
    replied
    You have to take programmatic responsibility for all entry orders generated by AtmStrategyCreate().

    Use AtmStrategyCancelEntryOrder().

    http://www.ninjatrader-support.com/H...egyActive.html

    Leave a comment:


  • daven
    replied
    Originally posted by daven View Post

    Now, after all that enthusiasm I still have a problem with the entry order enduring for more than one bar. I could change it to a market order, but frankly, the base strategy tests better when it is a limit order on the previous bar close. Is it possible to include the whole strategy for consideration? It might be helpful to others as well. If so, how could I do that, and can you suggest a method to close the open limit order after n bars, ('n' being an integer variable).

    daven

    I think the question above was missed because the post was so long. The Stategy/ATM strategy is working, but it leaves behind limit orders when conditions change. Is there a function I could use to cancel all existing limit orders on the close of the bar the orders occurred on? I get too many fills and it looks like I have stops and limits in both directions on the DOM.
    daven

    Leave a comment:


  • daven
    replied
    Strategy Executions on Chart

    Originally posted by NinjaTrader_Ray View Post
    Take a look at the executions tab of the Control Center window. If there are execution in there, open a new chart for the specific instrument ensuring that execution times are withing the session start/end time of the chart and ensuring plot executions are enabled. You will then see executions plotted on the chart.
    I see this, so just keep an extra chart open for the same instrument with no strategy on it, and I'll be able to monitor executions on the chart? A little funky as a work around but it tells me what I need to know.
    Thanks

    Leave a comment:


  • NinjaTrader_Ray
    replied
    Take a look at the executions tab of the Control Center window. If there are execution in there, open a new chart for the specific instrument ensuring that execution times are withing the session start/end time of the chart and ensuring plot executions are enabled. You will then see executions plotted on the chart.

    Leave a comment:


  • daven
    replied
    ATM Strategies

    I have the chart properties set to show text and markers but I'm getting no executions on the chart. It is the right instrument, the right sim account, and I know the strategy on the chart is the one I'm testing. Is there some other setting I should have changed.
    daven

    Leave a comment:


  • NinjaTrader_Ray
    replied
    ATM strategies do not plot on the chart like a native NinjaScript strategy. Executions themselves will plot on a chart --> Make sure you have this set correctly in the chart properties dialog window.

    Leave a comment:


  • daven
    replied
    Adapting Sample ATMStrategy

    I've noticed that while running the strategy, my positions aren't showing up on the chart. This isn't a big problem but I'm wondering, are there any plans to change this in the future or is it a fundamental platform issue (like Tradestation not being able to plot and execute orders in the same strategy)?
    daven

    Leave a comment:


  • daven
    replied
    Adapting the Sample ATM Strategy

    Originally posted by Josh View Post
    In your ENTER SHORT you did another buy order instead of a sell short order. Generally speaking you would need to copy the AtmStrategyCreate() part along with the several state resets after it. Use a unique variable for your atmStrategyId and orderId so it doesn't get confused which ATM order you are referring to. I just use atmStrategyId2, orderId2, etc.

    Thanks for the advice. I went through, renamed the two order entry strategies (atmStrategyID1 and atmStrategyID2, (same for orderID's). I then went carefully through the strategy, counted {}, counted (), and made sure they all agreed with the SampleATM strategy, and it worked. It's running now on EMD and ER2 and its working. I am stoked. THANK YOU SO MUCH FOR YOUR HELP!

    Now, after all that enthusiasm I still have a problem with the entry order enduring for more than one bar. I could change it to a market order, but frankly, the base strategy tests better when it is a limit order on the previous bar close. Is it possible to include the whole strategy for consideration? It might be helpful to others as well. If so, how could I do that, and can you suggest a method to close the open limit order after n bars, ('n' being an integer variable).

    Thanks again Josh, I feel like I've had a real breakthrough, and I have to tell you, learning C# is a lot like hacking through a nasty swamp. Hopefully the end is worth the trip.

    daven

    Leave a comment:


  • NinjaTrader_JoshP
    replied
    In your ENTER SHORT you did another buy order instead of a sell short order. Generally speaking you would need to copy the AtmStrategyCreate() part along with the several state resets after it. Use a unique variable for your atmStrategyId and orderId so it doesn't get confused which ATM order you are referring to. I just use atmStrategyId2, orderId2, etc.

    Leave a comment:


  • daven
    started a topic Converting the Sample ATM Strategy

    Converting the Sample ATM Strategy

    I've been able to adapt the Sample ATM strategy to one of my existing strategies but I'm having some problems with multiple entries. The SampleATM strategy only shows an entry in one direction. If I want to adapt it for both long or short entries do I need to duplicate everything after the entry for both directions:

    (See example below)

    If this isn't necessary perhaps you could point to what could be combined and what would need to be changed. When I adapted it, I was actually getting orders, the ATM was managing them, IT WAS REALLY COOL, but I started getting too many orders pumped out, and it appeared that entry limits which weren't hit, persisted. I think I need to add a method to remove entry orders if they didn't fill after one bar.

    Sorry for the long post.
    daven


    example:

    .....ENTER LONG
    atmStrategyId = GetAtmStrategyUniqueId();
    orderId = GetAtmStrategyUniqueId();
    AtmStrategyCreate(Action.Buy, OrderType.Limit, Low[0], 0, TimeInForce.Day, orderId, "AtmStrategyTemplate", atmStrategyId);
    }


    // Check for a pending entry order
    if (orderId.Length > 0)
    {
    string[] status = GetAtmStrategyEntryOrderStatus(orderId);

    // If the status call can't find the order specified, the return array length will be zero otherwise it will hold elements
    if (status.GetLength(0) > 0)
    {
    // Print out some information about the order to the output window
    Print("The entry order average fill price is: " + status[0]);
    Print("The entry order filled amount is: " + status[1]);
    Print("The entry order order state is: " + status[2]);

    // If the order state is terminal, reset the order id value
    if (status[2] == "Filled" || status[2] == "Cancelled" || status[2] == "Rejected")
    orderId = string.Empty;
    }
    } // If the strategy has terminated reset the strategy id
    else if (atmStrategyId.Length > 0 && GetAtmStrategyMarketPosition(atmStrategyId) == Cbi.MarketPosition.Flat)
    atmStrategyId = string.Empty;


    if (atmStrategyId.Length > 0)
    {
    // You can change the stop price
    if (GetAtmStrategyMarketPosition(atmStrategyId) != MarketPosition.Flat)
    AtmStrategyChangeStopTarget(0, Low[0] - 3 * TickSize, "STOP1", atmStrategyId);

    // Print some information about the strategy to the output window
    Print("The current ATM Strategy market position is: " + GetAtmStrategyMarketPosition(atmStrategyId));
    Print("The current ATM Strategy position quantity is: " + GetAtmStrategyPositionQuantity(atmStrategyId));
    Print("The current ATM Strategy average price is: " + GetAtmStrategyPositionAveragePrice(atmStrategyId)) ;
    Print("The current ATM Strategy Unrealized PnL is: " + GetAtmStrategyUnrealizedProfitLoss(atmStrategyId)) ;
    #region Properties
    #endregion


    .....ENTER SHORT
    atmStrategyId = GetAtmStrategyUniqueId();
    orderId = GetAtmStrategyUniqueId();
    AtmStrategyCreate(Action.Buy, OrderType.Limit, Low[0], 0, TimeInForce.Day, orderId, "AtmStrategyTemplate", atmStrategyId);
    }


    // Check for a pending entry order
    if (orderId.Length > 0)
    {
    string[] status = GetAtmStrategyEntryOrderStatus(orderId);

    // If the status call can't find the order specified, the return array length will be zero otherwise it will hold elements
    if (status.GetLength(0) > 0)
    {
    // Print out some information about the order to the output window
    Print("The entry order average fill price is: " + status[0]);
    Print("The entry order filled amount is: " + status[1]);
    Print("The entry order order state is: " + status[2]);

    // If the order state is terminal, reset the order id value
    if (status[2] == "Filled" || status[2] == "Cancelled" || status[2] == "Rejected")
    orderId = string.Empty;
    }
    } // If the strategy has terminated reset the strategy id
    else if (atmStrategyId.Length > 0 && GetAtmStrategyMarketPosition(atmStrategyId) == Cbi.MarketPosition.Flat)
    atmStrategyId = string.Empty;


    if (atmStrategyId.Length > 0)
    {
    // You can change the stop price
    if (GetAtmStrategyMarketPosition(atmStrategyId) != MarketPosition.Flat)
    AtmStrategyChangeStopTarget(0, Low[0] - 3 * TickSize, "STOP1", atmStrategyId);

    // Print some information about the strategy to the output window
    Print("The current ATM Strategy market position is: " + GetAtmStrategyMarketPosition(atmStrategyId));
    Print("The current ATM Strategy position quantity is: " + GetAtmStrategyPositionQuantity(atmStrategyId));
    Print("The current ATM Strategy average price is: " + GetAtmStrategyPositionAveragePrice(atmStrategyId)) ;
    Print("The current ATM Strategy Unrealized PnL is: " + GetAtmStrategyUnrealizedProfitLoss(atmStrategyId)) ;
    #region Properties
    #endregion

Latest Posts

Collapse

Topics Statistics Last Post
Started by TheBean236, Today, 12:57 PM
4 responses
15 views
0 likes
Last Post NinjaTrader_Eleanore  
Started by DTSSTS, Today, 09:59 AM
6 responses
37 views
0 likes
Last Post NinjaTrader_PaulH  
Started by Kirk Thorns, Today, 12:46 PM
2 responses
10 views
0 likes
Last Post Kirk Thorns  
Started by Stephen Trading, Today, 12:27 PM
1 response
10 views
0 likes
Last Post NinjaTrader_Jesse  
Started by MisterGee, Today, 12:43 PM
1 response
10 views
0 likes
Last Post NinjaTrader_Jim  
Working...
X