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))
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']))
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'] ))