Beispiel #1
0
    def ws_message(self, ws, message):
        # Liquidate position if market is closing soon
        if self.__market.is_market_closing():
            self.close_position_before_market_close()

            # Close graphs
            if self.p is not None:
                self.p.terminate()
                self.p.join()

            return

        # Convert retrieved data to python dict
        message = json.loads(message)

        self.ws.on_message(ws, message)

        # Get the required data: close price, high, low, volume, time
        bar_data = message['data']
        close_price = round(bar_data['c'], 2)
        close_time = datetime.fromtimestamp(int(str(
            bar_data['e'])[:-3])).strftime("%H:%M")
        high_price = round(bar_data['h'], 2)
        low_price = round(bar_data['l'], 2)
        volume = bar_data['v']

        print(self.df[-14:])

        # Calc MFI
        mfi = self.calc_mfi(self.df[-14:])
        # New Entry
        new_entry = {
            'Date': close_time,
            'Close': close_price,
            'High': high_price,
            'Low': low_price,
            'Volume': volume,
            'buy_signal': np.nan,
            'sell_signal': np.nan,
            'MFI': mfi
        }

        # Get buy or sell signal
        self.buy_sell(new_entry)

        # Add Entry to file
        new_entry_str = '{},{},{},{},{},{},{},{}'.format(
            close_time, close_price, new_entry['High'], new_entry['Low'],
            new_entry['Volume'], new_entry['buy_signal'],
            new_entry['sell_signal'], mfi)

        # Add entry to file
        file_manager.append_to_file('temp_files/{}.csv'.format(self.symbol),
                                    new_entry_str)

        # Add entry to dataframe
        self.df = self.df.append(new_entry, ignore_index=True)

        # Print retrieved data + MFI
        print('{}\t{}\tMFI: {}'.format(close_time, close_price, mfi))
Beispiel #2
0
    def ws_message(self, ws, message):
        # Liquidate position
        if self.__market.is_market_closing():
            self.close_position_before_market_close()

            # Close graphs
            if self.p is not None:
                self.p.terminate()
                self.p.join()

            return

        # Convert data to python dict
        message = json.loads(message)

        self.ws.on_message(ws, message)

        # Get the required data: time, close price
        bar_data = message['data']
        close_price = bar_data['c']
        close_time = datetime.fromtimestamp(int(str(
            bar_data['e'])[:-3])).strftime("%H:%M")

        # Add the received price in the list
        self.closes.append(close_price)

        # Calc metrics
        sma30 = self.calc_metrics()[0]
        sma100 = self.calc_metrics()[1]

        # New Entry
        new_entry = {
            'Date': close_time,
            'Close': close_price,
            'SMA30': sma30,
            'SMA100': sma100,
            'buy_signal': np.nan,
            'sell_signal': np.nan
        }

        # Get Signal
        self.buy_sell(new_entry)

        # Add Entry to file
        new_entry_str = '{},{},{},{},{},{}  '.format(close_time, close_price,
                                                     new_entry['buy_signal'],
                                                     new_entry['sell_signal'],
                                                     sma30, sma100)
        file_manager.append_to_file('temp_files/{}.csv'.format(self.symbol),
                                    new_entry_str)

        # Add entry to dataframe
        self.df = self.df.append(new_entry, ignore_index=True)

        # Print data on the screen
        print('{}\tPrice: {}\tSMA30: {}\tSMA100: {}'.format(
            close_time, close_price, new_entry['SMA30'], new_entry['SMA100']))
Beispiel #3
0
    def ws_message(self, ws, message):
        from datetime import datetime

        # Liquidate position if market is closing soon
        if self.__market.is_market_closing():
            self.close_position_before_market_close()

            # Close graphs
            if self.p is not None:
                self.p.terminate()
                self.p.join()

            return

        # Convert retrieved data to python dict
        msg = json.loads(message)

        self.ws.on_message(ws, msg)

        # Get the required data: close price, time
        bar_data = msg['data']
        close_price = bar_data['p']

        # Append close price to the list
        self.closes.append(close_price)

        # increase counter
        self.counter += 1

        # Calculate the RSI
        rsi = self.calc_rsi()

        # New entry
        new_entry = {
            'Date': self.counter,
            'Close': close_price,
            'RSI': rsi,
            'buy_signal': np.nan,
            'sell_signal': np.nan
        }

        # Get buy or sell signal
        self.buy_sell(new_entry)

        # Add entry to file
        new_entry_str = '{},{},{},{},{}'.format(self.counter, close_price,
                                                new_entry['buy_signal'],
                                                new_entry['sell_signal'], rsi)
        file_manager.append_to_file('temp_files/{}.csv'.format(self.symbol),
                                    new_entry_str)

        # Add entry to dataframe
        self.df = self.df.append(new_entry, ignore_index=True)

        # Print the received data + RSI
        print('{}\tPrice: {}\tRSI: {}'.format(self.counter, close_price,
                                              str(rsi)))
    def ws_message(self, ws, message):

        # Liquidate position
        if self.__market.is_market_closing():
            self.close_position_before_market_close()

            # Close graphs
            if self.p is not None:
                self.p.terminate()
                self.p.join()

            return

        # Convert data to python dict
        message = json.loads(message)

        self.ws.on_message(ws, message)

        # Get the required data: close price
        bar_data = message['data']
        close_price = bar_data['p']
        self.counter += 1

        # Add the received price in the list
        self.closes.append(close_price)

        # Calc metrics
        sma = self.calc_metrics()[0]
        std = self.calc_metrics()[1]
        upper = self.calc_metrics()[2]
        lower = self.calc_metrics()[3]

        if sma == 0 or std == 0 or upper == 0 or lower == 0:
            pass
        else:
            # New entry
            new_entry = {
                'Date': self.counter,
                'Close': close_price,
                'SMA': sma,
                'STD': std,
                'Upper': upper,
                'Lower': lower,
                'buy_signal': np.nan,
                'sell_signal': np.nan
            }

            # Get signal
            self.buy_sell(new_entry)

            # Add entry to file
            new_entry_str = '{},{},{},{},{},{},{},{}'.format(
                self.counter, close_price,
                new_entry['buy_signal'], new_entry['sell_signal'],
                new_entry['SMA'], new_entry['STD'],
                new_entry['Upper'], new_entry['Lower']
            )
            file_manager.append_to_file('temp_files/{}.csv'.format(self.symbol), new_entry_str)

            # Add entry to dataframe
            self.df = self.df.append(new_entry, ignore_index=True)

            # Print data on the screen
            print('{}\tPrice: ${}\tUpper band: {}\tLower band: {}'.format(
                self.counter, close_price,
                new_entry['Upper'], new_entry['Lower']
            ))