Announcement

Collapse
No announcement yet.

Partner 728x90

Collapse

strategy with 2 symbols: order questions

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

    #16
    Originally posted by NinjaTrader_PatrickH View Post
    Hello NutFlush,

    Thank you for your response.

    Correct, in my example the order was changed to the new quantity and price but stayed as one order.
    Hi Patrick,

    GREAT!!!

    I was under the impression that an IOrder object only receives information, like if I assign a variable with a value it would overwrite anything that was stored in it before. In the manual it says:
    NinjaScript > Language Reference > Strategy > IOrder
    Definition
    Represents a read only interface that exposes information regarding an order.
    But if I understand you correctly then it's more like a 2-way data exchange in that the IOrder object checks the statement to the right of "=" and combines info from what was already stored in the IOrder and from the statement.

    Is that understanding correct? Is that explained somewhere in the documentation (link would be great). What other objects have that kind of behaviour (i.e., ILine, IText,...)?

    Thanks so much,
    NutFlush

    Comment


      #17
      Originally posted by NutFlush View Post
      Hi Patrick,

      GREAT!!!

      I was under the impression that an IOrder object only receives information, like if I assign a variable with a value it would overwrite anything that was stored in it before. In the manual it says:But if I understand you correctly then it's more like a 2-way data exchange in that the IOrder object checks the statement to the right of "=" and combines info from what was already stored in the IOrder and from the statement.

      Is that understanding correct? Is that explained somewhere in the documentation (link would be great). What other objects have that kind of behaviour (i.e., ILine, IText,...)?

      Thanks so much,
      NutFlush
      You may be taking the meaning of "read only" somewhat too literally. An object can always be created with specified parameters. The same object can be recreated with other parameters. That is what is happening to the IOrder in this case. It is being recreated, not being written to. A subtle difference.

      "Read only" in this instance just means that you cannot write to the properties of the existing object in order to modify it. Literally, in order to modify the object, you must recreate it with different parameters.

      Comment


        #18
        Originally posted by NinjaTrader_PatrickH View Post
        Correct, in my example the order was changed to the new quantity and price but stayed as one order.
        Hi Patrick,

        I am sorry, but I have to come back to this topic, because I appear to have several exit orders active - even though I believe I followed your advice. Hopefully you can identify the root of the problem.

        Here's what's happening:
        - The strategy makes a LONG entry and sends an initial stop order in OnBarUpdate() after getting completely filled named "L_iStop_S".
        - Later in the trade the stop is moved twice (see attached chart), because certain conditions happened. To better identify later what condition moved the stop price the exit orders have specific names (text strings).

        The problem:
        When I look at the output window I find 2 lines that show up after the position was closed. They appear to indicate that 2 exit orders were cancelled (the first 2 stops as the 3rd stop was hit) so I conclude that those orders would have been actually at the broker as active orders. This is exactly what I want to avoid! Instead I want to use the initial order ticket and UPDATE it so that there is only ONE order active at the broker at all times. Alternatively it would also be OK if the initial order was cancelled and the new stop sent as a new order afterwards (I actually tried that in code - result see c) further down).

        Can you help me with that, please?

        Here is some additional information:

        a) output window: 2 exit orders get cancelled when position is closed

        Code:
        23.07.2013 17:42:00 Entered internal PlaceOrder() method at 23.07.2013 17:42:00: BarsInProgress=0 Action=Buy OrderType=Stop Quantity=2.209 LimitPrice=0 StopPrice=25,86 SignalName='L_Piv_SPY_XIV_S' FromEntrySignal=''
        XIV_Piv BIP: 1; timeH: 26.07.2013 09:40:54 ### Entry order sent: L_Piv_SPY_XIV_S; shares: 2.209; price: 25,86$
        23.07.2013 17:43:00 Entered internal PlaceOrder() method at 23.07.2013 17:43:00: BarsInProgress=0 Action=Buy OrderType=Stop Quantity=2.209 LimitPrice=0 StopPrice=25,86 SignalName='L_Piv_SPY_XIV_S' FromEntrySignal=''
        23.07.2013 17:43:00 Ignore order amendment: Action=Buy OrderType=Stop Quantity=2209 LimitPrice=0 StopPrice=25,86 SignalName=L_Piv_SPY_XIV_S' FromEntrySignal='' Reason='Order already has this stop price/limit price/quantity'
        XIV_Piv BIP: 0; timeH: 26.07.2013 09:40:54 ### Entry order sent: L_Piv_SPY_XIV_S; shares: 2.209; price: 25,86$
        23.07.2013 17:44:00 Entered internal PlaceOrder() method at 23.07.2013 17:44:00: BarsInProgress=0 Action=Buy OrderType=Stop Quantity=2.209 LimitPrice=0 StopPrice=25,86 SignalName='L_Piv_SPY_XIV_S' FromEntrySignal=''
        23.07.2013 17:44:00 Ignore order amendment: Action=Buy OrderType=Stop Quantity=2209 LimitPrice=0 StopPrice=25,86 SignalName=L_Piv_SPY_XIV_S' FromEntrySignal='' Reason='Order already has this stop price/limit price/quantity'
        XIV_Piv BIP: 0; timeH: 26.07.2013 09:40:54 ### Entry order sent: L_Piv_SPY_XIV_S; shares: 2.209; price: 25,86$
        23.07.2013 17:45:00 Entered internal PlaceOrder() method at 23.07.2013 17:45:00: BarsInProgress=0 Action=Buy OrderType=Stop Quantity=2.209 LimitPrice=0 StopPrice=25,86 SignalName='L_Piv_SPY_XIV_S' FromEntrySignal=''
        23.07.2013 17:45:00 Ignore order amendment: Action=Buy OrderType=Stop Quantity=2209 LimitPrice=0 StopPrice=25,86 SignalName=L_Piv_SPY_XIV_S' FromEntrySignal='' Reason='Order already has this stop price/limit price/quantity'
        XIV_Piv BIP: 0; timeH: 26.07.2013 09:40:54 ### Entry order sent: L_Piv_SPY_XIV_S; shares: 2.209; price: 25,86$
        23.07.2013 17:46:00 Entered internal PlaceOrder() method at 23.07.2013 17:46:00: BarsInProgress=0 Action=Buy OrderType=Stop Quantity=2.209 LimitPrice=0 StopPrice=25,86 SignalName='L_Piv_SPY_XIV_S' FromEntrySignal=''
        23.07.2013 17:46:00 Ignore order amendment: Action=Buy OrderType=Stop Quantity=2209 LimitPrice=0 StopPrice=25,86 SignalName=L_Piv_SPY_XIV_S' FromEntrySignal='' Reason='Order already has this stop price/limit price/quantity'
        XIV_Piv BIP: 0; timeH: 26.07.2013 09:40:54 ### Entry order sent: L_Piv_SPY_XIV_S; shares: 2.209; price: 25,86$
        XIV_Piv BIP: 0; timeH: 26.07.2013 09:40:54; ### ENTRY detected! Fill state: Filled; Avg. price: 25,860000$ for shares: 2.209
        XIV_Piv BIP: 0; timeH: 26.07.2013 09:40:54; ### ENTRY complete! goal: 2.209; position: 2.209; Avg. price: 25,860000$; goal: 25,86$; slippage: 0,000000$; risk: 0,19
        XIV_Piv BIP: 1; timeH: 26.07.2013 09:40:54; [COLOR=Red][B]activated initial stop at: 25,67$[/B][/COLOR]
        [B][COLOR=DarkOrange]23.07.2013 17:46:00 Entered internal PlaceOrder() method at 23.07.2013 17:46:00: BarsInProgress=0 Action=Sell OrderType=Stop Quantity=2.209 LimitPrice=0 StopPrice=25,67 SignalName='L_iStop_S' FromEntrySignal='L_Piv_SPY_XIV_S'
        [/COLOR][/B]XIV_Piv BIP: 0; timeH: 26.07.2013 09:40:54; [B][COLOR=Red]activated 40 min. since entry stop at: 25,84$[/COLOR][/B]
        [B][COLOR=Blue]23.07.2013 18:22:00 Entered internal PlaceOrder() method at 23.07.2013 18:22:00: BarsInProgress=0 Action=Sell OrderType=Stop Quantity=2.209 LimitPrice=0 StopPrice=25,84 SignalName='L_time_S' FromEntrySignal='L_Piv_SPY_XIV_S'
        [/COLOR][/B]XIV_Piv BIP: 1; timeH: 26.07.2013 09:40:54;[B][COLOR=Red] activated tightening stop at: 26,03$[/COLOR][/B]
        23.07.2013 21:33:00 Entered internal PlaceOrder() method at 23.07.2013 21:33:00: BarsInProgress=0 Action=Sell OrderType=Stop Quantity=2.209 LimitPrice=0 StopPrice=26,03 SignalName='L_tighten_S' FromEntrySignal='L_Piv_SPY_XIV_S'
        [B][COLOR=Blue]23.07.2013 21:42:00 Cancelled pending exit order, since associated position is closed: Order='NT-00017/Sim101' Name='L_time_S' State=Working Instrument='XIV' Action=Sell Limit price=0 Stop price=25,84 Quantity=2.209 Strategy='tkSV1mPivotPower' Type=Stop Tif=Gtc Oco='' Filled=0 Fill price=0 Token='58337d1bd6914c4ab5f260ae4ce3b438' Gtd='01.12.2099 00:00:00'[/COLOR][/B]
        [B][COLOR=DarkOrange]23.07.2013 21:42:00 Cancelled pending exit order, since associated position is closed: Order='NT-00016/Sim101' Name='L_iStop_S' State=Working Instrument='XIV' Action=Sell Limit price=0 Stop price=25,67 Quantity=2.209 Strategy='tkSV1mPivotPower' Type=Stop Tif=Gtc Oco='' Filled=0 Fill price=0 Token='f221ec85ee8349d88d7f83c738a0c9f3' Gtd='01.12.2099 00:00:00'
        [/COLOR][/B]XIV_Piv BIP: 0; timeH: 26.07.2013 09:40:54 ### Fill for EXIT detected! Last stop at: 26,03$; Time stamp: 23.07.2013 21:33:00; EXIT at: 26,03$; shares: 2.209; remaining 0
        XIV_Piv BIP: 0; timeH: 26.07.2013 09:40:54 ### EXIT complete! Time stamp: 23.07.2013 21:33:00; EXIT at: 26,03$; shares remaining 0$. Profit: 375,53$ = 0,89[R]
        b) code section in OnBarUpdate() that selects and sends an exit order if any changes occured:
        Code:
        int caseNr = 0;
                            if (MyStopText == "iStop") caseNr = 1;
                            if (MyStopText == "slow start") caseNr = 2;
                            if (MyStopText == "tighten") caseNr = 3;
                            if (MyStopText == "2.0R trail") caseNr = 4;
                            if (MyStopText == "time") caseNr = 5;
                            if (MyStopText == "breakeven") caseNr = 6;
                            if (MyStopText == "EOS LIMIT exit") caseNr = 7;
                            if (MyStopText == "EOS exit") caseNr = 8;
                
                            bool UpdateTheOrder = false;
                            
                            if (MyUnits_O != Positions[0].Quantity)
                            {
                                MyUnits_O = Positions[0].Quantity;
                                UpdateTheOrder = true;
                            }
                            if (MyTempStop != LastStop || MyStopText != oldStopText)
                            {
                                // stop was moved or type changed
                                UpdateTheOrder = true;
                            }
                            if (UpdateTheOrder == true)
                            {
        [COLOR=Green][I][B]                         //if (MyExitOrder != null) CancelOrder(MyExitOrder);[/B][/I][/COLOR]
                                
                                switch (caseNr)
                                    {
                                           case 1: // "iStop"
                                            MyExitOrder = ExitLongStop(0, true, MyUnits_O, MyTempStop, "L_iStop_S", MyEntryText);
                                            break;
                                           case 2:    // "slow start"
                                            MyExitOrder = ExitLongStop(0, true, MyUnits_O, MyTempStop, "L_slow_start_S", MyEntryText);
                                            break;
                                        case 3:    // "tighten"
                                            MyExitOrder = ExitLongStop(0, true, MyUnits_O, MyTempStop, "L_tighten_S", MyEntryText);
                                            break;
                                        case 4:    // "2.0R trail"
                                            MyExitOrder = ExitLongStop(0, true, MyUnits_O, MyTempStop, "L_2.0R_T_+3.0R_S", MyEntryText);
                                            break;
                                        case 5:    // "time"
                                            MyExitOrder = ExitLongStop(0, true, MyUnits_O, MyTempStop, "L_time_S", MyEntryText);
                                            break;
                                        case 6:    // "breakeven"
                                            MyExitOrder = ExitLongStop(0, true, MyUnits_O, MyTempStop, "L_20min_breakeven_S", MyEntryText);
                                            break;
                                        case 7:    // "EOS LIMIT exit"
                                            MyExitOrder = ExitLongLimit(0, true, MyUnits_O, MyTempStop, "L_EOS_L", MyEntryText);
                                            break;
                                        case 8:    // "EOS exit"
                                            MyExitOrder = ExitLong(0, MyUnits_O, "L_2min_left_M", MyEntryText);
                                            break;
                                        default: // do nothing
                                            break;
                                    }
                                SentStop = MyTempStop;
                            }
        c) follows in next post due to text size limit!
        Attached Files

        Comment


          #19
          c) output window: 2 exit orders get cancelled before sending the new exit (green part of strategy code activated)
          Code:
          23.07.2013 17:42:00 Entered internal PlaceOrder() method at  23.07.2013 17:42:00: BarsInProgress=0 Action=Buy OrderType=Stop  Quantity=2.209 LimitPrice=0 StopPrice=25,86 SignalName='L_Piv_SPY_XIV_S'  FromEntrySignal=''
          XIV_Piv BIP: 1; timeH: 26.07.2013 09:51:45 ### Entry order sent: L_Piv_SPY_XIV_S; shares: 2.209; price: 25,86$
          23.07.2013 17:43:00 Entered internal PlaceOrder() method at 23.07.2013  17:43:00: BarsInProgress=0 Action=Buy OrderType=Stop Quantity=2.209  LimitPrice=0 StopPrice=25,86 SignalName='L_Piv_SPY_XIV_S'  FromEntrySignal=''
          23.07.2013 17:43:00 Ignore order amendment: Action=Buy OrderType=Stop  Quantity=2209 LimitPrice=0 StopPrice=25,86 SignalName=L_Piv_SPY_XIV_S'  FromEntrySignal='' Reason='Order already has this stop price/limit price/quantity'
          XIV_Piv BIP: 0; timeH: 26.07.2013 09:51:45 ### Entry order sent: L_Piv_SPY_XIV_S; shares: 2.209; price: 25,86$
          23.07.2013 17:44:00 Entered internal PlaceOrder() method at 23.07.2013  17:44:00: BarsInProgress=0 Action=Buy OrderType=Stop Quantity=2.209  LimitPrice=0 StopPrice=25,86 SignalName='L_Piv_SPY_XIV_S'  FromEntrySignal=''
          23.07.2013 17:44:00 Ignore order amendment: Action=Buy OrderType=Stop  Quantity=2209 LimitPrice=0 StopPrice=25,86 SignalName=L_Piv_SPY_XIV_S'  FromEntrySignal='' Reason='Order already has this stop price/limit price/quantity'
          XIV_Piv BIP: 0; timeH: 26.07.2013 09:51:45 ### Entry order sent: L_Piv_SPY_XIV_S; shares: 2.209; price: 25,86$
          23.07.2013 17:45:00 Entered internal PlaceOrder() method at 23.07.2013  17:45:00: BarsInProgress=0 Action=Buy OrderType=Stop Quantity=2.209  LimitPrice=0 StopPrice=25,86 SignalName='L_Piv_SPY_XIV_S'  FromEntrySignal=''
          23.07.2013 17:45:00 Ignore order amendment: Action=Buy OrderType=Stop  Quantity=2209 LimitPrice=0 StopPrice=25,86 SignalName=L_Piv_SPY_XIV_S'  FromEntrySignal='' Reason='Order already has this stop price/limit price/quantity'
          XIV_Piv BIP: 0; timeH: 26.07.2013 09:51:45 ### Entry order sent: L_Piv_SPY_XIV_S; shares: 2.209; price: 25,86$
          23.07.2013 17:46:00 Entered internal PlaceOrder() method at 23.07.2013  17:46:00: BarsInProgress=0 Action=Buy OrderType=Stop Quantity=2.209  LimitPrice=0 StopPrice=25,86 SignalName='L_Piv_SPY_XIV_S'  FromEntrySignal=''
          23.07.2013 17:46:00 Ignore order amendment: Action=Buy OrderType=Stop  Quantity=2209 LimitPrice=0 StopPrice=25,86 SignalName=L_Piv_SPY_XIV_S'  FromEntrySignal='' Reason='Order already has this stop price/limit price/quantity'
          XIV_Piv BIP: 0; timeH: 26.07.2013 09:51:45 ### Entry order sent: L_Piv_SPY_XIV_S; shares: 2.209; price: 25,86$
          XIV_Piv BIP: 0; timeH: 26.07.2013 09:51:45; ### ENTRY detected! Fill state: Filled; Avg. price: 25,860000$ for shares: 2.209
          XIV_Piv BIP: 0; timeH: 26.07.2013 09:51:45; ### ENTRY complete! goal:  2.209; position: 2.209; Avg. price: 25,860000$; goal: 25,86$; slippage:  0,000000$; risk: 0,19
          XIV_Piv BIP: 1; timeH: 26.07.2013 09:51:45; [B][COLOR=Red]activated initial stop at: 25,67$[/COLOR][/B]
          [B][COLOR=DarkOrange]23.07.2013 17:46:00 Entered internal  PlaceOrder() method at 23.07.2013 17:46:00: BarsInProgress=0 Action=Sell  OrderType=Stop Quantity=2.209 LimitPrice=0 StopPrice=25,67  SignalName='L_iStop_S' FromEntrySignal='L_Piv_SPY_XIV_S'[/COLOR][/B]
          XIV_Piv BIP: 0; timeH: 26.07.2013 09:51:45; [COLOR=Red][B]activated 40 min. since entry stop at: 25,84$[/B][/COLOR]
          [B][COLOR=DarkOrange]Cancelled custom managed order at 23.07.2013  18:22:00: Order='NT-00027/Sim101' Name='L_iStop_S' State=Working  Instrument='XIV' Action=Sell Limit price=0 Stop price=25,67  Quantity=2.209 Strategy='tkSV1mPivotPower' 
          Type=Stop Tif=Gtc Oco='' Filled=0 Fill price=0 Token='71719d82acd644cc863ee448bfcb6bf6' Gtd='01.12.2099 00:00:00'[/COLOR][/B]
          [B][COLOR=Blue]23.07.2013 18:22:00 Entered internal PlaceOrder()  method at 23.07.2013 18:22:00: BarsInProgress=0 Action=Sell  OrderType=Stop Quantity=2.209 LimitPrice=0 StopPrice=25,84  SignalName='L_time_S' 
          FromEntrySignal='L_Piv_SPY_XIV_S'[/COLOR][/B]
          XIV_Piv BIP: 1; timeH: 26.07.2013 09:51:45; [COLOR=Red][B]activated tightening stop at: 26,03$[/B][/COLOR]
          [COLOR=Blue][B]Cancelled custom managed order at 23.07.2013  21:33:00: Order='NT-00028/Sim101' Name='L_time_S' State=Working  Instrument='XIV' Action=Sell Limit price=0 Stop price=25,84  Quantity=2.209 Strategy='tkSV1mPivotPower' 
          Type=Stop Tif=Gtc Oco='' Filled=0 Fill price=0 Token='24a34f939a76437bb9d0d8b6f6e78d4b' Gtd='01.12.2099 00:00:00'[/B][/COLOR]
          23.07.2013 21:33:00 Entered internal PlaceOrder() method at 23.07.2013  21:33:00: BarsInProgress=0 Action=Sell OrderType=Stop Quantity=2.209  LimitPrice=0 StopPrice=26,03 SignalName='L_tighten_S' 
          FromEntrySignal='L_Piv_SPY_XIV_S'
          XIV_Piv BIP: 0; timeH: 26.07.2013 09:51:45 ### Fill for EXIT detected!  Last stop at: 26,03$; Time stamp: 23.07.2013 21:33:00; EXIT at: 26,03$;  shares: 2.209; remaining 0
          XIV_Piv BIP: 0; timeH: 26.07.2013 09:51:45 ### EXIT complete! Time  stamp: 23.07.2013 21:33:00; EXIT at: 26,03$; shares remaining 0$.  Profit: 375,53$ = 0,89[R]
          Any ideas what I did wrong?

          How do I correctly update existing orders?

          Or am I wrong in assuming that the 2 exit orders (that were cancelled when the position was closed) would actually be at the broker (maybe in reality they would be cancelled at the broker already when the updated exit order is given)?

          Thanks,
          NutFlush
          Last edited by NutFlush; 07-26-2013, 05:28 AM.

          Comment


            #20
            Hello NutFlush,

            Your NinjaScript / C# Code will always be logically processed and evaluate according to your set logic – this can of course lead to unexpected results at times, thus we would suggest to simplify and debug your code to better understand the event sequence it would go through - unfortunately we cannot offer such debug or code modification services here without the script being greatly simplified or for a fee.

            I would suggest starting by simplifying the script as much as possible. Start with getting 1 or two exit order conditions in place and focus on getting those to work. There is to much going on here to easily debug. I see that you're using trace orders and drawing objects which is a good start. But consider adding in additional drawing objects along each logical step. Something simple like plotting a black dot on the screen when you expect a condition to be met can be very helpful


            If you would prefer the debug assist of a professional NinjaScript consultant, please check into the following listings, or email us at support[at]ninjatrader[dot]com - http://www.ninjatrader.com/partners....pt-Consultants
            LanceNinjaTrader Customer Service

            Comment


              #21
              Hi Lance,

              sorry, but your answer is not satisfactory for me. Maybe I was presenting too much information, but the problem is definitely NOT that my exit conditions are too complex (I am switching from TradeStation and am not a newby in strategy programming).

              Please let me rephrase the issue:

              I am trying to understand the correct "NT way" to change an existing order (in my case an exit order where I want to change the price and the text displayed as signalName). I was told by your colleague PatrickH that this is possible by assigning a new order to the same IOrder object that was used for the first exit order:

              Correct, in my example the order was changed to the new quantity and price but stayed as one order.
              Now when I duplicated that in my code I see in the output window that 2 "old" exit orders were cancelled when the position was closed. So it appears that the order was NOT "changed", but in fact a second and third exit order were created.

              Please be so kind and help me with these questions:
              1. Am I misreading the message in the output window and in fact NO additional orders were created?
              2. If additional orders were created then what is the correct "NT way" to update an order without adding new ones? In my code I assigned all exit orders to the same IOrder object just as in PatrickH's example. MyExitOrder is an IOrder object and used for all exit orders in the code as in:
              Code:
              MyExitOrder = ExitLongStop(0, true, MyUnits_O, MyTempStop, "L_tighten_S", MyEntryText);
              Thanks,
              NutFlush

              Comment


                #22
                Thank you for the clarification.

                When amending an existing order in the managed approach it's important that you keep the same signal name for that order. Otherwise you'll get the ignored order placement that you're seeing in your output window. If you wanted to use a different signal name you would likely want to first cancel the other order first.



                Also if you haven't seen this already, this is a good example for using OnExecution() to allow for advanced order management.

                The OnOrderUpdate() and OnExecution() methods are reserved for experienced programmers. Instead of using Set() methods to submit stop-loss and profit target orders, you can submit and update them manually through the use of IOrder and IExecution objects in the OnOrderUpdate() and OnExecution() methods. The OnOrderUpdate()


                Let me know if I can be of further assistance.
                LanceNinjaTrader Customer Service

                Comment


                  #23
                  Originally posted by NinjaTrader_Lance View Post
                  When amending an existing order in the managed approach it's important that you keep the same signal name for that order. Otherwise you'll get the ignored order placement that you're seeing in your output window. If you wanted to use a different signal name you would likely want to first cancel the other order first.
                  Hi Lance,

                  that was really helpful!!!

                  I gave all exit orders the identical signal name and now the orders get changed without additional orders being created. Thanks for making that clear to me!

                  Is there any documentation that I missed where that restriction is mentioned?

                  Are there any other restrictions? For example: is it possible to change the exit order from a stop to a limit or market order (or would that again create an additional order)?

                  Thanks again so much!
                  NutFlush

                  Comment


                    #24
                    Glad that helped you out

                    This section here will have the order restriction rules. Specifically you'll want to look into the bottom section:


                    If you were looking to change an order from a stop to a stop limit, or other order it would be best to cancel the order first and resubmit it. Most brokers don't allow you to amend an order to a different type.
                    LanceNinjaTrader Customer Service

                    Comment

                    Latest Posts

                    Collapse

                    Topics Statistics Last Post
                    Started by Geovanny Suaza, 02-11-2026, 06:32 PM
                    0 responses
                    633 views
                    0 likes
                    Last Post Geovanny Suaza  
                    Started by Geovanny Suaza, 02-11-2026, 05:51 PM
                    0 responses
                    364 views
                    1 like
                    Last Post Geovanny Suaza  
                    Started by Mindset, 02-09-2026, 11:44 AM
                    0 responses
                    105 views
                    0 likes
                    Last Post Mindset
                    by Mindset
                     
                    Started by Geovanny Suaza, 02-02-2026, 12:30 PM
                    0 responses
                    567 views
                    1 like
                    Last Post Geovanny Suaza  
                    Started by RFrosty, 01-28-2026, 06:49 PM
                    0 responses
                    568 views
                    1 like
                    Last Post RFrosty
                    by RFrosty
                     
                    Working...
                    X