Ejemplo n.º 1
0
def teste_bar():
    ev = EventEngine()
    ev.start()
    b = Binance(ev)
    bar = b.get_bar("BTCUSDT", "15m")
    log.info(bar.tail())
    balance = b.get_balnce()
Ejemplo n.º 2
0
class Forceorder():
    def __init__(self):
        self.ev = EventEngine()
        self.ev.start()
        self.broke = BinanceFutures(self.ev)
        self.broke.start("btcusdt", [FORCEORDER])
        self.ev.register(FORCEORDER, self.callback)

    def callback(self, event):
        """
        {'e': 'forceOrder', 'E': 1594107015086,
        'o': {'s': 'BTCUSDT',
        'S': 'SELL',
        'o': 'LIMIT',
        'f': 'IOC',
        'q': '1.300',
        'p': '9206.39',
        'ap': '9242.01',
        'X': 'FILLED',
        'l': '1.084',
        'z': '1.300',
        'T': 1594107015081}}

        :param event:
        :return:
        """
        e = event.data
        try:
            data = e["o"]
            db.insert_one("forceorder", data)
        except Exception as e:
            log.debug(e)
Ejemplo n.º 3
0
def test_bar():
    ev = EventEngine()
    ev.start()
    key = "YdDyZz1sql53yOZF9EDI2oe7H3hLgc8Y"
    secret = "UxPDjJHpUa9oCLCQbwwpZKU7rSfoSL7ngQFcBfmF87nvPQhh3yLvByG8puKzi3io"
    b = Bitmax(ev, key, secret)
    # bar = b.get_bar("BTC/USDT", "15")
    # log.info(bar.tail())
    # data = b.get_balnce()
    data = b.get_open_order()
    print(data)
Ejemplo n.º 4
0
def sell():
    ev = EventEngine()
    ev.start()
    key = "YdDyZz1sql53yOZF9EDI2oe7H3hLgc8Y"  # dongjing
    secret = "UxPDjJHpUa9oCLCQbwwpZKU7rSfoSL7ngQFcBfmF87nvPQhh3yLvByG8puKzi3io"
    b = Bitmax(ev, key, secret)
    sw = b.get_balnce()
    print(sw)
    symbol = "SRM/USDT"
    sw = sw["SRM"]
    print(sw)
    aty = float(sw.balance)

    data = b.sell(symbol, aty, 1.2)
    log.info(data)
Ejemplo n.º 5
0
def test_order():
    ev = EventEngine()
    ev.start()
    # key = "YdDyZz1sql53yOZF9EDI2oe7H3hLgc8Y" # dongjing
    # secret = "UxPDjJHpUa9oCLCQbwwpZKU7rSfoSL7ngQFcBfmF87nvPQhh3yLvByG8puKzi3io"
    #
    key = "kFzuMzo2EmHYseOMXPQxiNXUEt9VBkFQ"  # shanghai
    secret = "gAf9eePa3A5a5BLMoS4Yv3ShPdYgobBpF3LxBrLJY966CINeUQMvYmEoMkLcybUF"

    b = Bitmax(ev, key, secret)
    # symbol = "BTMX/USDT"
    symbol = "FIS/USDT"

    while get_cur_timestamp_ms() < 1599832721000:
        time.sleep(1)
    # data=b.buy("SWINGBY/USDT",20000,0.06)
    max_price = 1
    qty = 2000
    status = 0
    while status == 0:
        orderlist = b.get_order_book(symbol)
        data = orderlist.get("data", None)
        if data:
            data = data.get("data", None)
            data = data.get("asks", [])
            if len(data) > 0:
                log.info(data)
                ask = data[0]
                price = float(ask[0])
                if price < max_price:
                    data = b.buy_ioc(symbol, qty, max_price)
                    print(data)
                if data.get("code") == 0:
                    log.info("下单成功")
                    sw = b.get_balnce()
                    sw = sw["FIS"]
                    aty = round(float(sw.balance))
                    data = b.sell(symbol, aty, 1.8)
                    log.info(data)
                    status = 1
                else:
                    # pass
                    log.info(data)
            else:
                log.info(f"{symbol}-no data")
                time.sleep(0.5)
Ejemplo n.º 6
0
 def __init__(self):
     self.ev = EventEngine()
     self.maker = BinanceFutures(self.ev)
     self.taker = Ftx(self.ev)
     self.maker_price = 0
     self.taker_price = 0
     self.data = []
     RepeatingTimer(1, self.savedb).start()
Ejemplo n.º 7
0
    def __init__(self, engine, setting):
        super().__init__(engine, setting)
        self.msg = Feishu()
        self.ev = EventEngine()
        self.broker = BinanceFutures(self.ev)
        self.scheduler = BlockingScheduler()
        self.scheduler.add_job(self.on_bar, 'cron', minute="*/1", second="30")
        # self.scheduler.add_job(self.on_bar, 'cron', minute="14,29,44,59")
        # self.scheduler.add_job(self.on_bar, 'cron', second="14,29,44,59")

        # RepeatingTimer(60,self.on_bar).start()#每秒检查下次挂单情况
        self.scheduler.start()
Ejemplo n.º 8
0
class BaseEngine():

    def __init__(self):
        self.event=EventEngine()
        self.strategy=None

    def run(self):
        self.register_event()

    def register_event(self):
        """"""
        self.event.register(EventType.TICKER, self.process_ticket_event)
        self.event.register(EventType.ORDER, self.process_order_event)
        self.event.register(EventType.TRADE, self.process_trade_event)
        self.event.register(EventType.POSITION, self.process_position_event)

    def process_bar_event(self, event):
        strategy = self.strategy
        call_strategy_func(strategy, strategy.on_bar, event)

    def process_ticket_event(self,event):
        strategy = self.strategy
        call_strategy_func(strategy, strategy.on_ticket, event)

    def process_order_event(self, event):
        strategy = self.strategy
        call_strategy_func(strategy, strategy.on_order, event)

    def process_trade_event(self, event):
        strategy = self.strategy
        call_strategy_func(strategy, strategy.on_trade, event)

    def process_position_event(self,event):
        strategy=self.strategy
        call_strategy_func(strategy,strategy.on_position,event)
Ejemplo n.º 9
0
 def __init__(self, engine, setting=None):
     super().__init__(engine, setting)
     self.ev = EventEngine()
     self.data = []
     self.short: None
     self.long: None
     self.fee = 0.001  # 挂单价格增加手续费
     # todo 下单数量可以调整为根据盘口以及当前的持仓比例来控制,价差扩大,持仓未达上线,可以增仓
     self.qty = 0.001  # 下单BTC数量 反向合约需要换算
     self.spreed_position = 0
     self.status = False
     self.spreed_status = 0  #0 没有开仓,没有开单 1 long挂单,short未开单,2 long or short成交有持仓,等待对冲,3 对冲成功,等待回归平仓套利 4 long挂单平仓,5,long平仓,待short对冲平仓
     RepeatingTimer(1, self.check_order).start()  # 每秒检查下次挂单情况
Ejemplo n.º 10
0
def test_order():
    ev = EventEngine()
    key = "qer4Udt2tkbfOihvE5zlINiPgfmuC5hbx1SEQmmow8XXiJqZhyGwtF83VRjuIqXN"
    secret = "X7UOt9wgYNCgjuLwIKX6Taij6afQTj89mKqG4fsYqufnxqrLI2GsV5kTZ7H7u1TL"
    b = Binance(ev, key, secret)
    b.start(["BTCUSDT"])
    # success,text=b.get_user_account()
    # success, orderid = b.buy()
    while True:
        time.sleep(5)
        print(b.get_balnce("USDT"))
        print(b.get_positions("BTCUSDT", Direction.SHORT))
        print(b.get_positions("BTCUSDT", Direction.LONG))
    pass
Ejemplo n.º 11
0
def test_order():
    ev = EventEngine()
    key = "qer4Udt2tkbfOihvE5zlINiPgfmuC5hbx1SEQmmow8XXiJqZhyGwtF83VRjuIqXN"
    secret = "X7UOt9wgYNCgjuLwIKX6Taij6afQTj89mKqG4fsYqufnxqrLI2GsV5kTZ7H7u1TL"
    b = BinanceFutures(ev, key, secret)
    # b.start(["BTCUSDT"])
    # success,text=b.get_user_account()
    log.info("开始下单")
    O = b.buy("BTCUSDT", 0.001)
    log.info("开始结束。")
    log.info("获取持仓")
    pos = b.get_positions("BTCUSDT")
    log.info("当前持仓")
    print(pos)
Ejemplo n.º 12
0
def test_fundingrate():
    ev = EventEngine()
    key = "qer4Udt2tkbfOihvE5zlINiPgfmuC5hbx1SEQmmow8XXiJqZhyGwtF83VRjuIqXN"
    secret = "X7UOt9wgYNCgjuLwIKX6Taij6afQTj89mKqG4fsYqufnxqrLI2GsV5kTZ7H7u1TL"
    b = BinanceFutures(ev)
    b.get_info()
    rate = []
    for i in b.symbols:
        rate.append([i, float(b.get_fundingrate(i).get("lastFundingRate", 0))])
    # print(rate)
    df = pd.DataFrame(rate)
    df.columns = ["symbol", "rate"]
    df = df.sort_values(by="rate", ascending=True)
    print(df)
Ejemplo n.º 13
0
class OpenInterest():
    symbol = 'BTCUSDT'
    starttime = None

    def __init__(self):
        self.ev = EventEngine()
        self.ev.start()
        self.broke = BinanceFutures(self.ev)
        # self.broke.start("btcusdt",[FORCEORDER])
        # self.ev.register(FORCEORDER, self.callback)
    def loop(self):
        # db.table_name.aggregate({"$group": {_id: "max", max_value: {"$max": "$column_name"}}})
        rs = db.db["openinterest"].find().sort([("timestamp", -1)]).limit(1)
        rs = list(rs)
        if len(rs) > 0:
            self.starttime = float(rs[0]["timestamp"]) + 1000 * 60
        else:
            self.starttime = get_cur_timestamp_ms() - 1000 * 30 * 288 * 5 * 60
        while True:
            self.loaddata()
            if (get_cur_timestamp_ms() - self.starttime) > 1000 * 60 * 5:
                time.sleep(0.5)
            else:
                time.sleep(60)

    def loaddata(self):
        endtime = self.starttime + 500 * 1000 * 60 * 5
        t = get_cur_timestamp_ms()
        if endtime > t:
            endtime = t
        data = self.broke.get_open_interest(self.symbol, '5m', self.starttime,
                                            endtime)
        try:
            db.insert_many("openinterest", data)
            self.starttime = data[-1]["timestamp"]
        except Exception as e:
            log.error(e)
Ejemplo n.º 14
0
 def __init__(self):
     self.ev = EventEngine()
     self.ev.start()
     self.broke = BinanceFutures(self.ev)
     self.broke.start("btcusdt", [FORCEORDER])
     self.ev.register(FORCEORDER, self.callback)
Ejemplo n.º 15
0
def main(cfg):
    ev = EventEngine()
    ev.start()
    st = HtStrategy(ev, cfg)
Ejemplo n.º 16
0
def main():
    ev = EventEngine()
    ev.start()
    st = Shannon(ev, None)
Ejemplo n.º 17
0
                order = self.broker.sell(symbol=self.symbol,
                                         price=price * (1 + self.volt_per),
                                         quantity=self.size)
                self.orders[order.ref] = order

    def add_bar(self, data):
        self.data.append(data)
        data = pd.DataFrame(self.data)
        volt = (data["high"] - data["low"]) / data["close"]
        self.volt_per = volt[:, -30].mean()

    def notify_order(self, order):
        try:
            if order.status in [order.Completed]:
                self.cur_price = order.price
                self.orders.pop(order.ref)
                for i in self.orders:
                    self.broker.cancel_order(self.symbol, order.id)
            if order.status in [order.Canceled]:
                self.orders.pop(order.ref)
        except Exception as e:
            print(e)


if __name__ == "__main__":
    ev = EventEngine()
    ev.start()
    st = Grid(ev, None)
    while True:
        time.sleep(60)
Ejemplo n.º 18
0
def test_subscribe():
    ev = EventEngine()
    ev.start()
    b = Bitmax(ev)
    b.start("btcusdt", [FORCEORDER])
    ev.register(FORCEORDER, on_sub)
Ejemplo n.º 19
0
                msg = f"当前时间:{get_datetime()}\n趋势:向上\n当前价格{list(close_15m)[-1]}\n策略:买入"
                self.msg.send("日内震荡策略", msg)
                log.info(msg)
        elif fastk_4h[-1] < fastd_4h[-1] and fastk_4h[-1] < fastk_4h[
                -2] and fastd_4h[-1] < fastd_4h[-2]:
            log.info(
                f"4小时k:{fastk_4h[-1]},d:{fastd_4h[-1]},15分钟k:{fastk[-1]},d:{fastd[-1]},趋势向下"
            )
            if crossunder(fastk, fastd) and fastk[-1] < 80:
                msg = f"当前时间:{get_datetime()}\n趋势:向下\n当前价格{list(close_15m)[-1]}\n策略:卖出"
                self.msg.send("日内震荡策略", msg)
                log.info(msg)

    def on_order(self, event):
        pass

    def on_position(self, event):
        pass

    def on_ticket(self, event):
        pass

    def on_trade(self, event):
        pass


if __name__ == "__main__":
    ev = EventEngine()
    st = DoubleRsi(ev, None)
    while True:
        time.sleep(60)
Ejemplo n.º 20
0
def main():
    ev = EventEngine()
    ev.start()
    st = Spike(ev, None)
Ejemplo n.º 21
0
 def __init__(self):
     self.ev = EventEngine()
     self.ev.start()
     self.broke = BinanceFutures(self.ev)
Ejemplo n.º 22
0
 def __init__(self):
     self.event=EventEngine()
     self.strategy=None