Announcement

Collapse

Looking for a User App or Add-On built by the NinjaTrader community?

Visit NinjaTrader EcoSystem and our free User App Share!

Have a question for the NinjaScript developer community? Open a new thread in our NinjaScript File Sharing Discussion Forum!
See more
See less

Partner 728x90

Collapse

Strategy Builder Strategy Not Displaying/working as per tutorial

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

    Strategy Builder Strategy Not Displaying/working as per tutorial

    I'm trying to create a strategy following Brett's Youtube tutorial:
    https://youtu.be/jZQbBKk_gos?t=1738



    Below my code and in attachment.

    The strategy is enabled.
    https://i.imgur.com/uB3qNTU.png

    Text and Markers is enabled:


    For some reason nothing displays on the chart.

    What's wrong?
    How to fix it?


    Code:
    #region Using declarations
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Xml.Serialization;
    using NinjaTrader.Cbi;
    using NinjaTrader.Gui;
    using NinjaTrader.Gui.Chart;
    using NinjaTrader.Gui.SuperDom;
    using NinjaTrader.Gui.Tools;
    using NinjaTrader.Data;
    using NinjaTrader.NinjaScript;
    using NinjaTrader.Core.FloatingPoint;
    using NinjaTrader.NinjaScript.Indicators;
    using NinjaTrader.NinjaScript.DrawingTools;
    #endregion
    
    //This namespace holds Strategies in this folder and is required. Do not change it.
    namespace NinjaTrader.NinjaScript.Strategies
    {
    public class Test2 : Strategy
    {
    protected override void OnStateChange()
    {
    if (State == State.SetDefaults)
    {
    Description = @"Enter the description for your new custom Strategy here.";
    Name = "Test2";
    Calculate = Calculate.OnBarClose;
    EntriesPerDirection = 1;
    EntryHandling = EntryHandling.AllEntries;
    IsExitOnSessionCloseStrategy = true;
    ExitOnSessionCloseSeconds = 30;
    IsFillLimitOnTouch = false;
    MaximumBarsLookBack = MaximumBarsLookBack.TwoHundredFiftySix;
    OrderFillResolution = OrderFillResolution.Standard;
    Slippage = 0;
    StartBehavior = StartBehavior.WaitUntilFlat;
    TimeInForce = TimeInForce.Gtc;
    TraceOrders = false;
    RealtimeErrorHandling = RealtimeErrorHandling.StopCancelClose;
    StopTargetHandling = StopTargetHandling.PerEntryExecution;
    BarsRequiredToTrade = 20;
    // Disable this property for performance gains in Strategy Analyzer optimizations
    // See the Help Guide for additional information
    IsInstantiatedOnEachOptimizationIteration = true;
    ProfitTarget = 25;
    StopLoss = 25;
    }
    else if (State == State.Configure)
    {
    SetProfitTarget("", CalculationMode.Ticks, ProfitTarget);
    SetStopLoss("", CalculationMode.Ticks, StopLoss, false);
    }
    }
    
    protected override void OnBarUpdate()
    {
    if (BarsInProgress != 0)
    return;
    
    if (CurrentBars[0] < 2)
    return;
    
    // Set 1
    if ((High[0] > High[1])
    && (High[1] > High[2])
    && (Times[0][0].TimeOfDay >= new TimeSpan(9, 30, 0))
    && (Times[0][0].TimeOfDay <= new TimeSpan(11, 50, 0)))
    {
    EnterLongLimit(Convert.ToInt32(DefaultQuantity), 0, "");
    }
    
    // Set 2
    if ((High[1] > High[2])
    && (High[0] > High[1])
    && (Times[0][0].TimeOfDay <= new TimeSpan(11, 50, 0))
    && (Times[0][0].TimeOfDay >= new TimeSpan(9, 30, 0)))
    {
    ExitShortLimit(Convert.ToInt32(DefaultQuantity), 0, "", "");
    }
    
    }
    
    #region Properties
    [NinjaScriptProperty]
    [Range(1, int.MaxValue)]
    [Display(Name="ProfitTarget", Order=1, GroupName="Parameters")]
    public int ProfitTarget
    { get; set; }
    
    [NinjaScriptProperty]
    [Range(1, int.MaxValue)]
    [Display(Name="StopLoss", Order=2, GroupName="Parameters")]
    public int StopLoss
    { get; set; }
    #endregion
    
    }
    }
    Attached Files
    Last edited by Cormick; 05-24-2021, 11:20 AM.

    #2
    For some reason now it works.

    I've made a short video:





    What if I want to create the following ES strategy:


    Open Long Orders:
    Every Week, every Monday and Tuesday
    at 9:30:01 AM

    1 ES contract

    Close Long Orders:

    Trailing Stop triggers at Entry price + 25 ticks, trail by + 10 ticks from entry, steps of 2 ticks

    (or if the trigger did not occur = time close)
    Every Week, every Monday and Tuesday
    at 11:30:01 AM

    1 ES contract

    Do not trade on:

    - Rollover days

    - Bank Holidays

    - On specific News






    How do I do it? Is it possible through the Strategy Builder?
    Last edited by Cormick; 05-24-2021, 12:41 PM.

    Comment


      #3
      Hi Cormick,
      Play around with the Strategy Builder and check in "Additional Data", if you can select "date" as "Input" or "Variable" or only "time".
      If "date" is available, carry on. If only "time" is available, how do you compare the current date with a list of certain dates (even if known) you want to block from trading?
      NT-Roland

      Comment


        #4
        Hello Cormick,

        Thank you for your post.

        You would need to use Time comparisons or Time Filters in your strategy to place trades or not place trades based on certain times or days of the week. Please note that you would not be able to specify the number of seconds using the Strategy Builder. You would only be able to specify the hour and minute.

        See the help guide documentation below for information about creating Time Comparisons and Time Filters using the Strategy Builder.
        Time Comparisons - https://ninjatrader.com/support/help...imeComparisons
        Time Filters - https://ninjatrader.com/support/help...ateTimeFilters

        A bool could be used to determine if orders are placed. For example, you could create a bool (initially set to false), create your order entry condition, and flip the bool to true. Then, you could check if the bool and true in another condition, call your entry order method, and flip the bool to false so no further trades are placed. This would ensure that trades are only placed when the bool becomes true.

        Please also note that you would be able to keep trades from being placed by the strategy for rollover days and bank holidays by creating Time comparison or Time Filter conditions in your script that check if the Day/Time is the Day/Time of a rollover day or bank holiday. You would not be able to limit trades made based on specific news.

        Regarding your trail stop goals, you will need to use Exit methods to simulate stop movements in the builder instead of Set methods from the Stops and Targets screen of the Strategy Builder. My colleague Chelsea has created educational examples of strategy builder breakeven and trailing stop in the strategy builder here:
        https://ninjatrader.com/support/foru...der#post806596

        Note that you would not be able to use the Exit methods and the Set methods in the Stop and Targets window as that creates a violation of the managed approach internal order handling rules, linked here: https://ninjatrader.com/support/help...d_approach.ht

        Let us know if we may assist further.
        Brandon H.NinjaTrader Customer Service

        Comment


          #5
          Hi Brandon,

          Thanks for your reply and explanation.


          About the 'do not trade on Rollover days' request:

          I found the CME calendar page for the ES here:

          Click image for larger version  Name:	chrome_vmPggoYd0X.png Views:	0 Size:	815.5 KB ID:	1161478

          The next rollover Dates:


          SETTLEMENT
          17 Sep 2021
          17 Dec 2021
          18 Mar 2022
          17 Jun 2022
          16 Sep 2022
          16 Dec 2022
          17 Mar 2023
          16 Jun 2023
          15 Sep 2023
          15 Dec 2023
          20 Dec 2024
          19 Dec 2025


          Is there a Ninjatrader built-in 'rollover date' variable to perform a quick check?


          For example:

          pseudo code:

          if (today == a 'rollover date')
          return;

          The only documentation I've found so far:
          suggests the following:

          if (ToDay(Time[0]) == a 'rollover date')
          return;

          Is the ToDay(Time[0]) correct to mean 'today/the current day'?

          If there's no Ninjatrader built-in 'rollover date' variable, how to exclude the rollover dates the easiest way possible?

          And could you add a request feature to get the 'rollover date' variable builtin NT8 next release?



          About the 'Bank Holidays' request:

          I've found the following info about Initial Margin:
          https://ninjatrader.com/blog/how-to-manage-positions-when-trading-futures/

          Initial margin is also required on holidays when trading sessions span multiple days.

          Which suggest an Initial Margin filter good to filter out Bank Holidays.

          Could I do the following simpler method:

          pseudo code:
          if ((today IS either Monday or Tuesday)
          && (the current time IS between 9:30 AM and 11:50 AM)
          && Initial Margin IS required))
          return;

          How would I go about formulating the Initial Margin statement?
          if (((Time[0].DayOfWeek >= DayOfWeek.Monday) && (Time[0].DayOfWeek < DayOfWeek.Wednesday))
          && (Times[0][0].TimeOfDay >= new TimeSpan(9, 30, 0))
          && (Times[0][0].TimeOfDay <= new TimeSpan(11, 50, 0))
          && (Initial Margin IS required))
          return;


          Thanks for your much appreciated help and advice!
          Last edited by Cormick; 06-26-2021, 03:28 PM. Reason: corrected ToDay(Time[0]) link

          Comment


            #6
            Hello Cormick,

            Instrument rollover dates are in a collection you can loop through but this cannot be accessed from the Strategy Builder and would require unlocking the script.

            Below is a link to the help guide.


            As well as a link to a indicator that loops through the rollover dates.
            Shows a button on the chart to roll the expiry to the next available contract month. Option to hide button until a number of days before or on roll date. Another option to confirm by opening the instrument overlay selector or automatically rollover without confirmation. (Update June 27th, 2019 &#8211; Added an option to show [&#8230;]



            Initial margin, if provided by the connected broker, can be found from the account AccountItem.InitialMargin.

            Chelsea B.NinjaTrader Customer Service

            Comment


              #7

              Hi Chelsea,

              Thanks for the answer and documentation.

              About the Rollover indicator:

              How is it possible to use it to exclude the next rollover dates from the strategy?

              I can't see how to begin to think using it in the given context.

              What would you suggest?

              I had originally in mind performing a quick check for the upcoming rollover date to check against the current date and return to exclude any match.

              What do you have in mind about doing that with the rollover indicator?

              The documentation page isn't explicit enough.
              And the indicator is complex code.

              If the rollover indicator is too complex programming (though it is nice to have for manual trading):

              How can I simply hard code the next rollover dates up to 2030 to exclude from trading?

              Do the rollover dates are every quarter's 3rd Friday?

              For every Futures contract?

              I've gathered all upcoming ES quarter's 3rd Fridays until 2030:

              Would that do?
              https://ninjatrader.com/support/help...nt8/?today.htm


              Code:
              if (ToDay(Time[0]) == 20210917
              || 20211217
              || 20220318
              || 20220617
              || 20220916
              || 20221216
              || 20230317
              || 20230616
              || 20230915
              || 20231215
              || 20240315
              || 20240621
              || 20240920
              || 20241220
              || 20250321
              || 20250620
              || 20250919
              || 20251219
              || 20260320
              || 20260619
              || 20260918
              || 20261218
              || 20270319
              || 20270618
              || 20270917
              || 20271217
              || 20280317
              || 20280616
              || 20280915
              || 20281215
              || 20290316
              || 20290615
              || 20290921
              || 20291221
              || 20300315
              || 20300621
              || 20300920
              || 20301220)
              return;


              7/3/2021 EDIT (following Jim's correction in post #10 https://ninjatrader.com/support/foru...10#post1162110 below):
              Click image for larger version

Name:	chrome_LCkroVaqgY.png
Views:	236
Size:	1.09 MB
ID:	1162177
              Code:
              if (ToDay(Time[0]) == 20210909
              || ToDay(Time[0]) == 20211209
              || ToDay(Time[0]) == 20220310
              || ToDay(Time[0]) == 20220609
              || ToDay(Time[0]) == 20220908
              || ToDay(Time[0]) == 20221208
              || ToDay(Time[0]) == 20230309
              || ToDay(Time[0]) == 20230608
              || ToDay(Time[0]) == 20230907
              || ToDay(Time[0]) == 20231207
              || ToDay(Time[0]) == 20240307
              || ToDay(Time[0]) == 20240613
              || ToDay(Time[0]) == 20240912
              || ToDay(Time[0]) == 20241212
              || ToDay(Time[0]) == 20250313
              || ToDay(Time[0]) == 20250612
              || ToDay(Time[0]) == 20250911
              || ToDay(Time[0]) == 20251211
              || ToDay(Time[0]) == 20260312
              || ToDay(Time[0]) == 20260611
              || ToDay(Time[0]) == 20260910
              || ToDay(Time[0]) == 20261210
              || ToDay(Time[0]) == 20270311
              || ToDay(Time[0]) == 20270610
              || ToDay(Time[0]) == 20270909
              || ToDay(Time[0]) == 20271209
              || ToDay(Time[0]) == 20280309
              || ToDay(Time[0]) == 20280608
              || ToDay(Time[0]) == 20280907
              || ToDay(Time[0]) == 20281207
              || ToDay(Time[0]) == 20290308
              || ToDay(Time[0]) == 20290607
              || ToDay(Time[0]) == 20290913
              || ToDay(Time[0]) == 20291213
              || ToDay(Time[0]) == 20300307
              || ToDay(Time[0]) == 20300613
              || ToDay(Time[0]) == 20300912
              || ToDay(Time[0]) == 20301212)
              return;



              About the Initial Margin check:

              How do we simply check if it is the initial margin that is currently required and not the Intraday margin?

              I don't see how to formulate my statement with the given account items:
              AccountItem.IntradayMargin
              AccountItem.InitialMargin

              I could formulate the Initial Margin part of the condition, but can see how to formulate the 'Required Now' part:

              Code:
              if (Account.Get(AccountItem.InitialMargin, Currency.Us Dollar) == [B]Required Now[/B])
              {
              return;
              }
              What's the simplest and most straightforward way to do it you see?
              Last edited by Cormick; 07-03-2021, 05:35 AM.

              Comment


                #8
                Hello Cormick,

                This is Jim responding on behalf of Chelsea who is out of the office at this time.

                Chelsea's Rollover Indications indicator has code which loops through the RolloverCollection at line 175. The indicator itself would not be used as a drop in to get the next rollover in your script, but you can reference how the indicator loops through the RolloverCollection if you would like to do the same. As you loop through, you can check the Date property of each Rollover and compare it with the Date property of Time[0] to see if you are on a rollover date. If this is true, you can call return; to prevent further code execution and prevent actions from taking place on that date.

                If you want to hardcode the dates, you could consider typing out what would match the ToDay() result for that day, and you can set up a condition similarly to what you have setup.

                I would recommend looping through the collection as opposed to writing out and hardcoding each date in a ToDay(Time[0]) == 20210101 style condition.

                The RolloverCollection gets rollovers from the NinjaTrader database, which gets updated periodically. We do not have 2030 contract periods added to the database, but this would not matter as they would be added as the date approaches.

                Initial margin would be what is required to maintain an overnight position while Intraday margin would be the margin required to maintain a position during Regular Trading Hours. The amount required will be subjective with your broker. We would recommend confirming what margins you would need to follow with your broker when writing these conditions.

                Keep in mind, AccountItems that are fetched with Account.Get will be available depending on the Connection Technology used. Some brokers may not support accessing InitialMargin and IntradayMargin. You can reference the grid at the bottom of the Help Guide page below to see which Connection Technologies support which AccountItems.



                We look forward to assisting.


                JimNinjaTrader Customer Service

                Comment


                  #9
                  Hi Jim,

                  Thank you for your answer and explanations.



                  About the Rollover Indicator Next ES Rollover date:

                  I just checked for the next ES rollover date generated by the Rollover Indicator.

                  Here's the output:


                  It displays 09-09-2021 as the next ES rollover date.

                  However, the CME states 20210917 as the ES September settlement date:


                  Is there something I'm missing? Why else does the Rollover Indicator date differs from the CME date?

                  Thanks a lot for clarifying the reason for this difference.


                  About the looping recommendation:

                  I would recommend looping through the collection as opposed to writing out and hardcoding each date in a ToDay(Time[0]) == 20210101 style condition.

                  What advantage/trade off do you see in using the looping recommendation versus the hardcoded method?

                  Is the hardcoded method I stated above in working state as is or would it need correction? If so how would you correct it?



                  About the Initial Margin check:

                  My use would be to check if the Initial Margin is required during normal market hours.
                  If it is we can assume the current day and time is a Bank Holiday (since Initial margin is only required during normal market hours if and only if the current day is a Bank Holiday).
                  Thus I can simply exclude Bank holidays by checking for Initial Margin required during normal market hours.

                  Thanks for the Brokers reference. My brokers both support Initial margin and Intraday Margin.
                  Code:
                  if (Account.Get(AccountItem.InitialMargin, Currency.Us Dollar) == [B]Required Now[/B])
                  {
                  return;
                  }
                  How do we check that the Initial Margin is required or not at the current normal market hour time?

                  Thank you very much for your help and advice.
                  Last edited by Cormick; 07-01-2021, 02:59 PM.

                  Comment


                    #10
                    Hello Cormick,

                    Roll dates from the indicator are fetched from the NinjaTrader database, and not directly by CME. We try to pick dates when volume would move over to the newer contract period, sometimes this follows a pattern, but this cannot always be predicted. For indices, we would pick the roll dates defined by CME here: https://www.cmegroup.com/trading/equ...rolldates.html (publicly available link)

                    You can view the roll dates defined in the Instrument database by opening the Control Center's Tools > Instruments menu, Selecting an Instrument, Edit, and then checking the Contract Months portion of the instrument definitions.

                    If you do not want to use these rolldates, you can consider hard coding them. Your hard coded conditions should instead look like:

                    Code:
                    if (ToDay(Time[0]) == 20210917 ||
                      ToDay(Time[0]) == 20211217))
                    {
                        return;
                    }
                    You could also loop through a list of values I.E.

                    Code:
                    foreach (int date in MyListOfDates)
                    {
                        if (ToDay(Time[0]) == date)
                            return;
                    }
                    Looping would be a more elegant solution with less lines of code.

                    Initial Margin is needed to hold overnight positions when Intraday Margin is needed to hold a position throughout regular trading hours. NinjaTrader provides Trading Hours templates that reflect Regular Trading Hours and Extended Trading Hours. These are applied to a data series which we would apply the strategy to and they filter what periods of time OnBarUpdate will be processed. (I.E. if you are outside outside of the times defined in the Trading Hours template, your logic in OnBarUpdate will not be processed until you are back in session.)

                    If you want to interact with the Trading Hours template programmatically, I suggest using a SessionIterator, which can help if you want to check if some days are trading holidays, etc.

                    SessionIterator - https://ninjatrader.com/support/help...oniterator.htm

                    Please be sure to to confirm with your broker on the exact times margin rules shift between overnight and intraday. These will typically coincide with regular trading hours, but if there is a different margin rule set by your broker, you will want to be sure to accommodate those times, either in code or by creating your own Trading Hours templates.

                    Trading Hours templates - https://ninjatrader.com/support/help...ding_hours.htm

                    Please let us know if you have any additional questions.
                    JimNinjaTrader Customer Service

                    Comment


                      #11
                      Hi Jim,

                      Thanks a lot for the great info and valuable help.



                      About the Rollover question:

                      I was not aware of the Roll dates convention. Thank you for letting me know. I'll adjust accordingly.
                      Nice to know where to look for to get the Roll dates from the Control center too, thank you.
                      Great help the statement correction with complete ToDay(Time[0]) statement for each date instance, thank you.
                      I'll look into the looping approach further, thanks.




                      About the Initial Margin question:


                      The Template method suggestion issues:

                      My strategy will run strictly during Regular Trading Hours. But my purpose is to shut my strategy during Bank Holidays (during Regular Trading Hours of Bank Holidays).
                      I don't see any use in interacting with the Trading Hours template programmatically in the current context since my strategy will run strictly during Regular Trading Hours.
                      The days when the Initial Margin will be required during Regular Trading Hours (Bank Holidays) need to be excluded.

                      The only other way I see a fit would be to add a new special template for Regular Trading Hours for Bank Holidays where Initial Margin would be set in place of Intraday Margin. And then in some way I'm not familiar to yet refer that template in the check to exclude the given days.
                      But that would mean having to gather all the bank holidays manually (and having to learn about when multiple consecutive Bank Holidays days instead of a single one apply). Up to 2030.
                      And then learn how to refer that template (if it is even possible) in the check to exclude the given days.
                      That is the complicated and inefficient way to do it.
                      Unless you had an other way in mind? If you meant something else please let me know more about it as I don't see another way. Thank you.



                      The Initial Margin Check method advantages:

                      The much simpler way I see to do this exclusion is by checking if the Initial Margin is required during Regular Trading Hours.
                      The purpose of doing it that way is to bypass having to gather all the Bank Holidays dates to check against and create a new template and learn when multiple Bank Holidays instead of a single one apply and learn how to refer to that template in the check — since just checking if $12100 per ES contract is required instead of $500 (ES for example) as margin at the current time is much simpler and much more efficient.
                      I don't see any reference on the SessionIterator page about checking for trading holidays.

                      Ninjatrader 8 must have a way to detect if Initial Margin is required during Regular Trading Hours — since Initial Margin is required during Regular Trading Hours on Bank Holidays.
                      If only to reject trades when the account balance is less than that Initial Margin during Regular Market Hours on Bank Holidays.

                      How can I use/leverage that already available NT8 detection of Initial Margin requirement during Regular Trading Hours to perform my needed simpler check and exclusion?

                      Code:
                      if (Account.Get(AccountItem.InitialMargin, Currency.Us Dollar) == [B]Required Now[/B])
                      {
                      return;
                      }
                      How can I formulate the Required Now part of the above comparison?

                      Overall it seem the current use of the AccountItem.InitialMargin is restricted to information purpose.
                      Else how to make use of it for function purpose?
                      For example adding a 'TradingTime.Regular Trading Hours' parameter (acting as a bool with 0 or 1) to enable the check:
                      Code:
                      if (Account.Get(AccountItem.[B]InitialMargin[/B], [B]TradingTime.Regular Trading Hours[/B]) == 1)
                      {
                      return;
                      }


                      The CurrentRequiredMargin alternative method:

                      I can see another simple way to do it for example by use of some sort of generic 'CurrentRequiredMargin' template/function/variable/Parameter.
                      And check it's value. To make sure it's not currently above the Intraday Margin value.

                      for example something like:
                      Code:
                      if (Account.Get(AccountItem.[B]CurrentRequiredMargin[/B], Currency.Us Dollar) > 500)
                      {
                      return;
                      }
                      Is that currently possible? If not could that be implemented in NT8 next release?
                      In the meantime what simple alternative would you propose?

                      What other than generic 'CurrentRequiredMargin' would you suggest to achieve the same result?


                      Thank you for your much appreciated help and solutions.
                      Last edited by Cormick; 07-02-2021, 04:48 PM.

                      Comment


                        #12
                        Hello Cormick,

                        There is not a CurrentRequiredMargin AccountIem or "Required Now" property. You can get the InitialMargin and IntradayMargin AccountItems from your broker if your broker supports them, but writing conditions to use those AccountItems requires understanding the circumstance in which you are trading and what would be required from the broker. I may suggest presenting some hypothetical scenarios with your broker so you can model some conditions that use those AccountItems, and build similar conditions following the same approach.

                        As for identifying holidays to determine if your logic should take a different branch, another option would be to consider fetching the specific dates from the TradingHours.Holidays collection, and the TradingHours.PartialHolidays collection. If the date of the processing bar (Time[0]) matches one of these dates, you can consider closing positions, not doing anything, or to take any different logical branch than your code would normally take. I would still recommend using the SessionIterator to identify the trading hours as defined in your Trading Hours templates, translated to local time so you can write logic to take your desired actions at times you intend inside regular session hours.






                        JimNinjaTrader Customer Service

                        Comment

                        Latest Posts

                        Collapse

                        Topics Statistics Last Post
                        Started by traderqz, Today, 12:06 AM
                        3 responses
                        5 views
                        0 likes
                        Last Post NinjaTrader_Gaby  
                        Started by RideMe, 04-07-2024, 04:54 PM
                        5 responses
                        28 views
                        0 likes
                        Last Post NinjaTrader_BrandonH  
                        Started by f.saeidi, Today, 08:13 AM
                        1 response
                        8 views
                        0 likes
                        Last Post NinjaTrader_ChelseaB  
                        Started by DavidHP, Today, 07:56 AM
                        1 response
                        7 views
                        0 likes
                        Last Post NinjaTrader_Erick  
                        Started by kujista, Today, 06:23 AM
                        3 responses
                        11 views
                        0 likes
                        Last Post kujista
                        by kujista
                         
                        Working...
                        X