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

Multiple Orders in one bar, why?

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

    Multiple Orders in one bar, why?

    Why this code opens many orders within one bar, my bar type is Ranko Spectrum.

    //CalculateOnBarClose = true; inside Initialize()
    protected override void OnBarUpdate()
    {
    // Condition set 1
    if (FirstTickOfBar && longOrders < MaxEntryPerSide)
    {
    Log("First Time inside this bar, longOrdersCount"
    + longOrders, NinjaTrader.Cbi.LogLevel.Information);
    EnterLong(DefaultQuantity, "");
    longOrders++;
    }
    }

    Thanks

    #2
    FarrukhAzim, welcome to our forums - from the snippet posted I don't see a reason for it, the FirstTickOfBar should be a one time event. Is this only happening on the particular third party bar type in testing? Are you working with multiple series in the script?
    BertrandNinjaTrader Customer Service

    Comment


      #3
      I do not have multiple series, just same chart where strategy is running, also I noticed that orders are random from 2 to 40 at a time.. The bar type is Renko Spectrum 4-1, I am tracing my orders, should I send that to you, is there a way to email the trace files...

      Comment


        #4
        Yes please, you can just use the Help >> Mail to Support function in NinjaTrader to send those diagnostic files in for review. If you apply the script for example to minute chart, would the same issue be seen?
        BertrandNinjaTrader Customer Service

        Comment


          #5
          Trace results..

          2013-08-27 00:36:02:985 (Azim) Cbi.Connection.ProcessEventArgs.OrderStatusEventAr gs: Order='ec2d90a69f5a44398bb045f0751728bb/Sim101' Name='Buy' New state=Initialized Instrument='CL 10-13' Action=Buy Limit price=0 Stop price=0 Quantity=1 Type=Market Filled=0 Fill price=0 Error=NoError Native error=''
          2013-08-27 00:36:03:044 (Azim) Cbi.Order.Update1: oldid='ec2d90a69f5a44398bb045f0751728bb' Order='ec2d90a69f5a44398bb045f0751728bb/Sim101' Name='Buy' New state=Initialized Instrument='CL 10-13' Action=Buy Limit price=0 Stop price=0 Quantity=1 Type=Market Filled=0 Fill price=0 Error=NoError Native error=''
          2013-08-27 00:36:03:044 (Azim) Cbi.Order.Submit: Order='ec2d90a69f5a44398bb045f0751728bb/Sim101' Name='Buy' State=Initialized Instrument='CL 10-13' Action=Buy Limit price=0 Stop price=0 Quantity=1 Strategy='Test' Type=Market Tif=Gtc Oco='' Filled=0 Fill price=0 Token='f26734f96b3b45a4ae8455297be0f94f' Gtd='12/1/2099 12:00:00 AM'
          2013-08-27 00:36:03:044 (Azim) Cbi.Simulator.Submit: Order='ec2d90a69f5a44398bb045f0751728bb/Sim101' Name='Buy' State=Initialized Instrument='CL 10-13' Action=Buy Limit price=0 Stop price=0 Quantity=1 Strategy='Test' Type=Market Tif=Gtc Oco='' Filled=0 Fill price=0 Token='f26734f96b3b45a4ae8455297be0f94f' Gtd='12/1/2099 12:00:00 AM'
          2013-08-27 00:36:03:044 (Azim) Cbi.Connection.ProcessEventArgs.OrderStatusEventAr gs: Order='f26734f96b3b45a4ae8455297be0f94f/Sim101' Name='Buy' New state=PendingSubmit Instrument='CL 10-13' Action=Buy Limit price=0 Stop price=0 Quantity=1 Type=Market Filled=0 Fill price=0 Error=NoError Native error=''
          2013-08-27 00:36:03:044 (Azim) Cbi.Order.Update1: oldid='ec2d90a69f5a44398bb045f0751728bb' Order='f26734f96b3b45a4ae8455297be0f94f/Sim101' Name='Buy' New state=PendingSubmit Instrument='CL 10-13' Action=Buy Limit price=0 Stop price=0 Quantity=1 Type=Market Filled=0 Fill price=0 Error=NoError Native error=''
          2013-08-27 00:36:03:261 (Azim) Cbi.OrderStatusEventArgs.Process: Order='ec2d90a69f5a44398bb045f0751728bb/Sim101' Name='Buy' New state=Initialized Instrument='CL 10-13' Action=Buy Limit price=0 Stop price=0 Quantity=1 Type=Market Filled=0 Fill price=0 Error=NoError Native error=''
          2013-08-27 00:36:03:266 (Azim) Cbi.OrderStatusEventArgs.Process: Order='f26734f96b3b45a4ae8455297be0f94f/Sim101' Name='Buy' New state=PendingSubmit Instrument='CL 10-13' Action=Buy Limit price=0 Stop price=0 Quantity=1 Type=Market Filled=0 Fill price=0 Error=NoError Native error=''
          2013-08-27 00:36:03:354 (Azim) Cbi.Connection.ProcessEventArgs.OrderStatusEventAr gs: Order='f26734f96b3b45a4ae8455297be0f94f/Sim101' Name='Buy' New state=Accepted Instrument='CL 10-13' Action=Buy Limit price=0 Stop price=0 Quantity=1 Type=Market Filled=0 Fill price=0 Error=NoError Native error=''
          2013-08-27 00:36:03:354 (Azim) Cbi.Order.Update1: oldid='f26734f96b3b45a4ae8455297be0f94f' Order='f26734f96b3b45a4ae8455297be0f94f/Sim101' Name='Buy' New state=Accepted Instrument='CL 10-13' Action=Buy Limit price=0 Stop price=0 Quantity=1 Type=Market Filled=0 Fill price=0 Error=NoError Native error=''
          2013-08-27 00:36:03:354 (Azim) Cbi.Connection.ProcessEventArgs.OrderStatusEventAr gs: Order='f26734f96b3b45a4ae8455297be0f94f/Sim101' Name='Buy' New state=Working Instrument='CL 10-13' Action=Buy Limit price=0 Stop price=0 Quantity=1 Type=Market Filled=0 Fill price=0 Error=NoError Native error=''
          2013-08-27 00:36:03:356 (Azim) Cbi.Order.Update1: oldid='f26734f96b3b45a4ae8455297be0f94f' Order='f26734f96b3b45a4ae8455297be0f94f/Sim101' Name='Buy' New state=Working Instrument='CL 10-13' Action=Buy Limit price=0 Stop price=0 Quantity=1 Type=Market Filled=0 Fill price=0 Error=NoError Native error=''
          2013-08-27 00:36:03:356 (Azim) Cbi.Simulator.Fill1: id='f26734f96b3b45a4ae8455297be0f94f' maxFillQuantity=1 price=106.23
          2013-08-27 00:36:03:356 (Azim) Cbi.Simulator.Fill2: id='f26734f96b3b45a4ae8455297be0f94f' fillQuantity=1 price=106.23
          2013-08-27 00:36:03:356 (Azim) Cbi.Simulator.FillNow: id='f26734f96b3b45a4ae8455297be0f94f' state='Working' instrument='CL 10-13' quantity=1 filled=0 price=106.23
          2013-08-27 00:36:03:356 (Azim) Cbi.Connection.ProcessEventArgs.OrderStatusEventAr gs: Order='f26734f96b3b45a4ae8455297be0f94f/Sim101' Name='Buy' New state=Filled Instrument='CL 10-13' Action=Buy Limit price=0 Stop price=0 Quantity=1 Type=Market Filled=1 Fill price=106.23 Error=NoError Native error=''
          2013-08-27 00:36:03:356 (Azim) Cbi.Order.Update1: oldid='f26734f96b3b45a4ae8455297be0f94f' Order='f26734f96b3b45a4ae8455297be0f94f/Sim101' Name='Buy' New state=Filled Instrument='CL 10-13' Action=Buy Limit price=0 Stop price=0 Quantity=1 Type=Market Filled=1 Fill price=106.23 Error=NoError Native error=''
          2013-08-27 00:36:03:356 (Azim) Cbi.Connection.ProcessEventArgs.ExecutionUpdateEve ntArgs: Execution='2d980cefb79548dc95a56d076b1ec60e' Instrument='CL 10-13' Account='Sim101' Exchange=Default Price=106.23 Quantity=1 Market position=Long Operation=Insert Order='f26734f96b3b45a4ae8455297be0f94f' Time='8/27/2013 12:36:03 AM'

          Comment


            #6
            Thanks, can you please also answer my question regarding running the exact same script on another charttype like 1 minute - would you see the same issue?
            BertrandNinjaTrader Customer Service

            Comment


              #7
              I tried the code and set it to one minute chart and now it does not take multiple orders. However, when CalculateOnBarClose = true;, my OnBarUpdate() method should fires once per minute, and from it I log a few lines and if you see log it writes mutiple lines means it is going in that method many times. Please see lines that has "Test:"
              8/27/2013 8:23 AM Order Order='7642d54ebce44de0a905398278dbe325/Sim101' Name='Stop1' New state=PendingSubmit Instrument='CL 10-13' Action=Buy Limit price=109.82 Stop price=109.62 Quantity=1 Type=StopLimit Filled=0 Fill price=0 Error=NoError Native error=''
              8/27/2013 8:23 AM Position Instrument='CL 10-13' Account='Sim101' Avg price=108.78 Quantity=2 Market position=Short Operation=Update Currency=Unknown
              8/27/2013 8:23 AM Execution Execution='d0822e87cc0f4794af8957305bed2413' Instrument='CL 10-13' Account='Sim101' Exchange=Default Price=108.84 Quantity=1 Market position=Short Operation=Insert Order='95e5ed4f548e48869c1445ed6f8f55db' Time='8/27/2013 8:23:57 AM'
              8/27/2013 8:23 AM Order Order='95e5ed4f548e48869c1445ed6f8f55db/Sim101' Name='Entry' New state=Filled Instrument='CL 10-13' Action=Sell Limit price=0 Stop price=0 Quantity=1 Type=Market Filled=1 Fill price=108.84 Error=NoError Native error=''
              8/27/2013 8:23 AM Order Order='95e5ed4f548e48869c1445ed6f8f55db/Sim101' Name='Entry' New state=Working Instrument='CL 10-13' Action=Sell Limit price=0 Stop price=0 Quantity=1 Type=Market Filled=0 Fill price=0 Error=NoError Native error=''
              8/27/2013 8:23 AM Order Order='95e5ed4f548e48869c1445ed6f8f55db/Sim101' Name='Entry' New state=Accepted Instrument='CL 10-13' Action=Sell Limit price=0 Stop price=0 Quantity=1 Type=Market Filled=0 Fill price=0 Error=NoError Native error=''
              8/27/2013 8:23 AM Order Order='95e5ed4f548e48869c1445ed6f8f55db/Sim101' Name='Entry' New state=PendingSubmit Instrument='CL 10-13' Action=Sell Limit price=0 Stop price=0 Quantity=1 Type=Market Filled=0 Fill price=0 Error=NoError Native error=''
              8/27/2013 8:23 AM Order Submitting order to an active strategy id-'41c898df33cd42f28f59717620b2d521'
              8/27/2013 8:23 AM Order Submitting order by chart trader direct entry
              8/27/2013 8:22 AM Default Test: MarketPosition is Flat
              8/27/2013 8:22 AM Default Test: Before LongEntry, LongOrders=1, MaxEntryPerSide=1
              8/27/2013 8:22 AM Default Test: MarketPosition is Flat
              8/27/2013 8:22 AM Default Test: Before LongEntry, LongOrders=1, MaxEntryPerSide=1
              8/27/2013 8:22 AM Default Test: MarketPosition is Flat
              8/27/2013 8:22 AM Default Test: Before LongEntry, LongOrders=1, MaxEntryPerSide=1
              8/27/2013 8:22 AM Default Test: MarketPosition is Flat
              8/27/2013 8:22 AM Default Test: Before LongEntry, LongOrders=1, MaxEntryPerSide=1
              8/27/2013 8:22 AM Default Test: MarketPosition is Long
              8/27/2013 8:22 AM Default Test: Before LongEntry, LongOrders=1, MaxEntryPerSide=1
              8/27/2013 8:22 AM Default Test: MarketPosition is Long
              8/27/2013 8:22 AM Default Test: Before LongEntry, LongOrders=1, MaxEntryPerSide=1
              8/27/2013 8:22 AM Default Test: Inside EnterLong, longOrders incremented is 1
              8/27/2013 8:22 AM Default Test: MarketPosition is Short
              8/27/2013 8:22 AM Default Test: Before LongEntry, LongOrders=0, MaxEntryPerSide=1
              8/27/2013 8:22 AM Default Test: Inside EnterShort, shortOrders incremented is 1
              8/27/2013 8:22 AM Default Test: MarketPosition is Flat
              8/27/2013 8:22 AM Default Test: Before ShortEntry, ShortOrders=0, MaxEntryPerSide=1
              8/27/2013 8:22 AM Default Test: MarketPosition is Flat
              8/27/2013 8:22 AM Default Test: Before LongEntry, LongOrders=1, MaxEntryPerSide=1
              8/27/2013 8:22 AM Default Test: MarketPosition is Flat
              8/27/2013 8:22 AM Default Test: Before LongEntry, LongOrders=1, MaxEntryPerSide=1
              8/27/2013 8:22 AM Default Test: MarketPosition is Flat
              8/27/2013 8:22 AM Default Test: Before LongEntry, LongOrders=1, MaxEntryPerSide=1
              8/27/2013 8:22 AM Default Test: MarketPosition is Long
              8/27/2013 8:22 AM Default Test: Before LongEntry, LongOrders=1, MaxEntryPerSide=1
              8/27/2013 8:22 AM Default Test: Inside EnterLong, longOrders incremented is 1
              8/27/2013 8:22 AM Default Test: MarketPosition is Short
              8/27/2013 8:22 AM Default Test: Before LongEntry, LongOrders=0, MaxEntryPerSide=1
              8/27/2013 8:22 AM Default Test: MarketPosition is Short
              8/27/2013 8:22 AM Default Test: Before ShortEntry, ShortOrders=1, MaxEntryPerSide=1
              8/27/2013 8:22 AM Default Test: MarketPosition is Short
              8/27/2013 8:22 AM Default Test: Before ShortEntry, ShortOrders=1, MaxEntryPerSide=1
              8/27/2013 8:22 AM Default Test: Inside EnterShort, shortOrders incremented is 1
              8/27/2013 8:22 AM Default Test: MarketPosition is Long
              8/27/2013 8:22 AM Default Test: Before ShortEntry, ShortOrders=0, MaxEntryPerSide=1
              8/27/2013 8:22 AM Default Test: Inside EnterLong, longOrders incremented is 1
              8/27/2013 8:22 AM Default Test: MarketPosition is Short
              8/27/2013 8:22 AM Default Test: Before LongEntry, LongOrders=0, MaxEntryPerSide=1
              8/27/2013 8:22 AM Default Test: Inside EnterShort, shortOrders incremented is 1
              8/27/2013 8:22 AM Default Test: MarketPosition is Long
              8/27/2013 8:22 AM Default Test: Before ShortEntry, ShortOrders=0, MaxEntryPerSide=1

              Comment


                #8
                Do you print / log the testing call perhaps for historical bars as well? OnBarUpdate() would first process all historical bars and then continue to be called as each bar series would update.
                BertrandNinjaTrader Customer Service

                Comment


                  #9
                  Do you print / log the testing call perhaps for historical bars as well? How do i disable that?

                  Comment


                    #10
                    You can return out of OnBarUpdate() for the Historical part -

                    BertrandNinjaTrader Customer Service

                    Comment


                      #11
                      Thanks for quick support, what I feel is that due to other strategies running, they might be closing its or my manual intervention, so before we entered long there was a clause to exitshorts, and if those did not exists, it might be opening long for their place!? I will try to remove those exit commands and see how it work. I have a question?
                      If I open longs via;
                      entryOrder = EnterLong();
                      how to use this enteryOrder to close this trade if this is open, if not then i want to ignore...

                      Thanks a million.

                      Comment


                        #12
                        It could be manual intervention, as other running strategies would not communicate to this strategy, meaning they all run independent.

                        If you place an ExitOrder and you have no strategy position it would simply be ignored in our managed order submission approach (the default one you're working in).
                        BertrandNinjaTrader Customer Service

                        Comment


                          #13
                          I decided to run that strategy alone and no other program, I closed the program and made sure all positions were flat by closing manually a couple of trades, after a few minutes I found 4 longs opened and then it had to enter short based on the logic and should have closed 4 longs (infact it should be one long based on my default quantity) anyway when it closed it opened 5 short and it closed thos 4 longs too, so my question is based on the logic that I will post here why we do not see either one long or one short and why program opens so many extra positions, I will put a screen shot here and log and trace and my logic.

                          program:
                          #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 Test : Strategy
                          {
                          #region Variables
                          // Wizard generated variables
                          private int stLowVal = 50; // Default setting for StLowVal
                          private int stHiVal = 50; // Default setting for StHiVal
                          private bool exitOnRev = true; // Default setting for ExitOnRev
                          private int sPrds = 20; // Default setting for SPrds
                          private int profitTicks = 30; // Default setting for ProfitTicks
                          private int lossTicks = 100; // Default setting for LossTicks
                          private int orderSize = 1; // Default setting for OrderSize
                          private int maxEntryPerSide = 1; // Default setting for MaxEntryPerSide
                          // User defined variables (add any user defined variables below)
                          private IOrder entryOrder = null;
                          private int longOrders = 0;
                          private int shortOrders = 0;

                          #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()
                          {
                          //EntriesPerDirection = MaxEntryPerSide;
                          //EntryHandling = EntryHandling.UniqueEntries;
                          DefaultQuantity = OrderSize;
                          SMA(Close, SPrds).Plots[0].Pen.Color = Color.Orange;
                          Stochastics(7, 14, 3).Plots[0].Pen.Color = Color.Orange;
                          Add(Stochastics(7, 14, 3));
                          Add(SMA(SPrds));
                          SetProfitTarget("", CalculationMode.Ticks, ProfitTicks);
                          SetStopLoss("", CalculationMode.Ticks, LossTicks, false);
                          CalculateOnBarClose = true;
                          TraceOrders = true;
                          }

                          /// <summary>
                          /// Called on each bar update event (incoming tick)
                          /// </summary>
                          protected override void OnBarUpdate()
                          {
                          // Condition set 1
                          if (FirstTickOfBar
                          && GetCurrentAsk() > SMA(SPrds)[0]
                          && Stochastics(7, 14, 3).K[0] >= StLowVal
                          && Stochastics(7, 14, 3).K[1] < StLowVal)
                          {
                          if (ExitOnRev == true
                          && shortOrders > 0)
                          {
                          ExitShort("");
                          shortOrders = 0;
                          }
                          DrawArrowUp("My up arrow" + CurrentBar, false, 0, Low[0] - 2 * TickSize, Color.Lime);
                          Log("Test: Before LongEntry, LongOrders=" + longOrders
                          + ", MaxEntryPerSide=" + MaxEntryPerSide, NinjaTrader.Cbi.LogLevel.Information);
                          Log("Test: MarketPosition is " + Position.MarketPosition, NinjaTrader.Cbi.LogLevel.Information);

                          if (longOrders < MaxEntryPerSide )
                          //&& !Historical
                          //&& BarsSinceEntry() > 1)
                          {
                          SetProfitTarget("", CalculationMode.Ticks, ProfitTicks);
                          SetStopLoss("", CalculationMode.Ticks, LossTicks, false);
                          //entryOrder = EnterLong(DefaultQuantity, "");
                          EnterLong();
                          PlaySound(@"C:\Program Files (x86)\NinjaTrader 7\sounds\Alert1.wav");
                          longOrders++;
                          Log("Test: Inside EnterLong, longOrders incremented is " + longOrders, NinjaTrader.Cbi.LogLevel.Information);
                          //Log("Test: longentryOrder is " + entryOrder.ToString(), NinjaTrader.Cbi.LogLevel.Information);
                          }
                          }


                          // Condition set 2
                          if (GetCurrentBid() < SMA(SPrds)[0]
                          && Stochastics(7, 14, 3).K[0] <= StHiVal
                          && Stochastics(7, 14, 3).K[1] > StHiVal)
                          {
                          if (ExitOnRev == true
                          && longOrders > 0)
                          {
                          ExitLong("");
                          longOrders = 0;
                          }
                          DrawArrowDown("My down arrow" + CurrentBar, false, 0, High[0] + 2 * TickSize, Color.Red);
                          Log("Test: Before ShortEntry, ShortOrders=" + shortOrders
                          + ", MaxEntryPerSide=" + MaxEntryPerSide, NinjaTrader.Cbi.LogLevel.Information);
                          Log("Test: MarketPosition is " + Position.MarketPosition, NinjaTrader.Cbi.LogLevel.Information);

                          if (shortOrders < MaxEntryPerSide )
                          //&& !Historical
                          //&& BarsSinceEntry() > 1)
                          {
                          SetProfitTarget("", CalculationMode.Ticks, ProfitTicks);
                          SetStopLoss("", CalculationMode.Ticks, LossTicks, false);
                          //entryOrder = EnterShort(DefaultQuantity, "");
                          EnterShort();
                          PlaySound(@"C:\Program Files (x86)\NinjaTrader 7\sounds\Alert1.wav");
                          shortOrders++;
                          Log("Test: Inside EnterShort, shortOrders incremented is " + shortOrders, NinjaTrader.Cbi.LogLevel.Information);
                          //Log("Test: shortentryOrder is " + entryOrder.ToString(), NinjaTrader.Cbi.LogLevel.Information);
                          }
                          }

                          }
                          /// <summary>
                          /// Called on each execution
                          /// </summary>
                          protected override void OnExecution(IExecution execution)
                          {
                          if (entryOrder != null && entryOrder == execution.Order)
                          {
                          //Print("Test: " + execution.ToString());
                          }
                          }
                          #region Properties
                          [Description("")]
                          [GridCategory("Parameters")]
                          public int StLowVal
                          {
                          get { return stLowVal; }
                          set { stLowVal = Math.Max(1, value); }
                          }

                          [Description("")]
                          [GridCategory("Parameters")]
                          public int StHiVal
                          {
                          get { return stHiVal; }
                          set { stHiVal = Math.Max(1, value); }
                          }

                          [Description("")]
                          [GridCategory("Parameters")]
                          public bool ExitOnRev
                          {
                          get { return exitOnRev; }
                          set { exitOnRev = value; }
                          }

                          [Description("")]
                          [GridCategory("Parameters")]
                          public int SPrds
                          {
                          get { return sPrds; }
                          set { sPrds = Math.Max(1, value); }
                          }
                          [Description("")]
                          [GridCategory("Parameters")]
                          public int ProfitTicks
                          {
                          get { return profitTicks; }
                          set { profitTicks = Math.Max(1, value); }
                          }

                          [Description("")]
                          [GridCategory("Parameters")]
                          public int LossTicks
                          {
                          get { return lossTicks; }
                          set { lossTicks = Math.Max(1, value); }
                          }
                          [Description("")]
                          [GridCategory("Parameters")]
                          public int OrderSize
                          {
                          get { return orderSize; }
                          set { orderSize = Math.Max(1, value); }
                          }
                          [Description("")]
                          [GridCategory("Parameters")]
                          public int MaxEntryPerSide
                          {
                          get { return maxEntryPerSide; }
                          set { maxEntryPerSide = Math.Max(1, value); }
                          }

                          #endregion
                          }
                          }

                          Fa.

                          Comment


                            #14
                            Sent logs and trace to you via email option.

                            Comment


                              #15
                              Thanks, got those files and will review.
                              BertrandNinjaTrader Customer Service

                              Comment

                              Latest Posts

                              Collapse

                              Topics Statistics Last Post
                              Started by funk10101, Today, 09:43 PM
                              0 responses
                              3 views
                              0 likes
                              Last Post funk10101  
                              Started by pkefal, 04-11-2024, 07:39 AM
                              11 responses
                              36 views
                              0 likes
                              Last Post jeronymite  
                              Started by bill2023, Yesterday, 08:51 AM
                              8 responses
                              44 views
                              0 likes
                              Last Post bill2023  
                              Started by yertle, Today, 08:38 AM
                              6 responses
                              26 views
                              0 likes
                              Last Post ryjoga
                              by ryjoga
                               
                              Started by algospoke, Yesterday, 06:40 PM
                              2 responses
                              24 views
                              0 likes
                              Last Post algospoke  
                              Working...
                              X