示例#1
0
class IndexViewController(object):
    """Basic index view"""

    def __init__(self):
        self.log = Log(file_handler, self.__class__.__name__)

    def call(self):
        self.get_socket()

        return render_template("index.html", channel_href=config.channel_href)

    def get_socket(self):
        client = Client(config.api_key, config.api_secret)
        bm = BinanceSocketManager(client)
        bm.start_trade_socket("BTCUSDT", self.process_message)
        return bm.start()

    def process_message(self, msg):
        utime = str(msg.get("T"))[:10]
        ms = str(msg.get("T"))[-3:]
        dt = datetime.fromtimestamp(int(utime)).replace(microsecond=int(ms) * 1000)
        symbol = msg.get("s")
        price = "%.2f" % float(msg.get("p"))
        buffer_dict.update({dt: {"symbol": symbol, "price": price}})
        delete_keys = []
        for k in buffer_dict.keys():
            if (dt - k).seconds > config.timeframe or (datetime.now() - k).seconds > config.timeframe:
                delete_keys.append(k)
        if delete_keys:
            for k in delete_keys:
                del buffer_dict[k]
            self.log.info("Deleted keys: %s" % delete_keys)
        prices = [p.get("price") for p in buffer_dict.values()]
        if prices:
            max_price = max(prices)
            min_price = min(prices[prices.index(max_price):])
            drop_percent = (float(max_price) - float(min_price)) / float(max_price)
            if (drop_percent > config.percent_threshhold and drop_percent not in registered_drops.get("drops", [])
                and datetime.now() - dt).seconds < 5):
                self.send_notification(symbol, max_price, min_price, "{:.2%}".format(drop_percent))
                PriceLog.create(symbol=symbol, max_price=max_price,
                                min_price=min_price, drop_percent=round(drop_percent * 100, 2))
                registered_drops.get("drops", []).append(drop_percent)
示例#2
0
class ClearRegisteredDropsController(object):
    """Clears registered drops list"""

    def __init__(self):
        self.log = Log(file_handler, self.__class__.__name__)

    def call(self):
        now = datetime.now()
        delete_keys = []
        for k in buffer_dict.keys():
            if (now - k).seconds > config.timeframe:
                delete_keys.append(k)
        if delete_keys:
            for k in delete_keys:
                del buffer_dict[k]
            self.log.info("Deleted keys: %s" % delete_keys)
        if (now - registered_drops.get("last_clear_time")).seconds > config.timeframe + 2:
            self.log.info("Clearing registered drops %s" % registered_drops)
            registered_drops.get("drops", []).clear()
            registered_drops["last_clear_time"] = now
            return "Drops cleared."
        return "Drops clearing skipped."
示例#3
0
# -*- coding:utf-8 -*-

import os
import logging
import config
from flask import Flask
from misc import Log

app = Flask(__name__)

if not os.path.exists("logs"):
    os.mkdir("logs")

file_handler = logging.FileHandler(config.log_config.get("filename"))
file_handler.setLevel(config.log_config.get("level"))
file_handler.setFormatter(config.log_config.get("format"))

log = Log(file_handler, "Binance")
log.info("Binance service started.")

import views