Exemplo n.º 1
0
def preprocess_data(self, X, Y, dataTransform=None):
    # Preprocess the variables X and Y
    ### First we transform everything to python format
    X = ul.fnp(X)
    Y = ul.fnp(Y)
    # Whe can plot several Y over same X. So NcY >= 1, NcX = 0,1
    NpX, NcX = X.shape
    NpY, NcY = Y.shape

    if (X.size == 0):  # If the X given is empty
        if (Y.size == 0):  # If we are also given an empty Y
            Y = ul.fnp([])
        else:
            X = ul.fnp(range(NpY))  # Create X axis with sample values

    self.X = X
    self.Y = Y

    # Get the automatic formatting of the X and Y axes !!

    # If we are given values to X, these could be of 3 types:
    # - Numerical: Then we do nothing
    # - String: Then it is categorical and we set the ticklabels to it
    # - Datetimes: We set the formatter ?
    self.formatXaxis = detect_AxisFormat(X)
    self.formatYaxis = detect_AxisFormat(Y)
    #        print X,Y, self.formatXaxis, self.formatYaxis
    if (type(dataTransform) != type(None)):
        if (dataTransform[0] == "intraday"):
            # In this case we are going to need to transform the dates.
            openhour = dataTransform[1]
            closehour = dataTransform[2]
            self.formatXaxis = "intraday"
            # Virtual transformation of the dates !
            self.Xcategories = self.X

            transfomedTimes = ul.transformDatesOpenHours(
                X, openhour, closehour)
            Mydetransfromdata = ul.deformatter_data(openhour, closehour, None)
            # Setting the static object of the function
            ul.detransformer_Formatter.format_data = Mydetransfromdata
            self.X = ul.fnp(transfomedTimes)

    if (self.formatXaxis == "categorical"
        ):  # Transform to numbers and later we retransform
        self.Xcategories = self.X
        self.X = ul.fnp(range(NpX))

    if (self.formatYaxis == "categorical"
        ):  # Transform to numbers and later we retransform
        self.Ycategories = self.Y
        self.Y = ul.fnp(range(NpY))


#    if (self.formatXaxis == "dates"): # Transform to numbers and later we retransform
#        self.Xcategories = self.X
#        self.X = ul.preprocess_dates(range(NpX))

    return self.X, self.Y
if (tranformIntraday):
    dataTransform = ["intraday", opentime, closetime]
else:
    dataTransform = None
## If the timspan is daily or bigger do not transform time.
if (periods[0] >= 1440):
    dataTransform = None
# This is how we would obtain the info if we did not use tradingPlot functions
price = timeData.get_timeSeries(["Close"])
volume = timeData.get_timeSeries(["Volume"])
dates = timeData.get_dates()

if (0):
    ## Try out time mapping func
    caca = ul.transformDatesOpenHours(dates, opentime, closetime)
    s***n = ul.detransformDatesOpenHours(caca, opentime, closetime)
    s***n = pd.to_datetime(s***n)
    for i in range(s***n.size):
        diff_sec = (s***n[i] - dates[i]).total_seconds()
        print(s***n[i], dates[i])
        if (diff_sec != 0):
            print(diff_sec / 3600)

# Get indicators for the price and volume
nMA1 = 15
EMA_price = timeData.EMA(seriesNames=["Close"], n=nMA1)
SMA_volume = timeData.EMA(seriesNames=["Volume"], n=nMA1)

ax1 = gl.subplot2grid((4, 1), (0, 0), rowspan=3, colspan=1)
if (typeChart == "Line"):