    void GetLongTimeTrades(
        int life,               // Max Candle Passed after Trades Open
        ENUM_TIMEFRAMES period, // Calculate Candles based on time frame
        XSignal &result[]       // Holds Result
    )
    {
        //
        CleanBuffer(result);

        //
        // Normalize Period ...
        if (period == EMPTY_VALUE)
        {
            period = _Period;
        }

        //
        XSignal positions[];
        GetAllPositions(positions);
        int count = ArraySize(positions);
        if (count <= 0)
        {
            return;
        }

        //
        // Current Time Frame Candle Index ...
        int currentBarIndex = 0;

        //
        // Loop through Positions ...
        for (int i = 0; i < count; i++)
        {
            //
            XSignal trade = positions[i];

            //
            // Retrieve Trade Open Bar Index based on Current Period ...
            int tradeOpenBarIndex = iBarShift(
                mSymbol,
                period,
                trade.time);

            //
            // Calculate Trade Life ...
            int diff = MathAbs(currentBarIndex - tradeOpenBarIndex);
            if (diff >= life)
            {
                //
                ArrayResize(
                    result,
                    ArraySize(result) + 1);
                result[ArraySize(result) - 1] = trade;
            }
        }
    }



    //
    // Close All Longs Positions ...
    void CloseLongPositions(
        XSignal &closed[] // holds Closed Positions
    )
    {
        //
        ArrayFree(closed);
        ArrayResize(closed, 0);

        //
        // Count all Specified Positions ...
        int total = CountLongs();
        if (total <= 0)
        {
            return;
        }

        //
        XSignal longPositions[];
        GetLongPositions(longPositions);

        //
        int longPositionsSize = ArraySize(longPositions);
        if (longPositionsSize == 0 || longPositionsSize != total)
        {
            return;
        }

        //
        for (int i = 0; i < total; i++)
        {
            //
            XSignal signal = longPositions[i];
            bool isClosed = Close(signal.ticket);
            if (isClosed)
            {
                //
                ArrayResize(
                    closed,
                    ArraySize(closed) + 1);
                closed[ArraySize(closed) - 1] = signal;
            }
        }
    }

    //
    // Close All Shorts Positions ...
    void CloseShortPositions(
        XSignal &closed[] // holds Closed Positions
    )
    {
        //
        ArrayFree(closed);
        ArrayResize(closed, 0);

        //
        // Count all Specified Positions ...
        int total = CountShorts();
        if (total <= 0)
        {
            return;
        }

        //
        XSignal shortPositions[];
        GetShortPositions(shortPositions);

        //
        int shortPositionsSize = ArraySize(shortPositions);
        if (shortPositionsSize == 0 || shortPositionsSize != total)
        {
            return;
        }

        //
        for (int i = 0; i < total; i++)
        {
            //
            XSignal signal = shortPositions[i];
            bool isClosed = Close(signal.ticket);
            if (isClosed)
            {
                //
                ArrayResize(
                    closed,
                    ArraySize(closed) + 1);
                closed[ArraySize(closed) - 1] = signal;
            }
        }
    }
