Esempio n. 1
0
 def market_get_data(self,market_pair):
     data=market_pair.get_history_data()
     try:
         market_pair.get_opportunity(data)
     except Exception as e :
         logger.fatal(self.coin_type+":"+e)
         pass
Esempio n. 2
0
    def sell(self, askPirce,average_line,coin_type, amount=config.min_tx_volume):
        #对数据库进行更新操作
        # 创建session对象:
        session = DBSession()
        #查询有没有买单的
        #时间
        update_date=time.strftime('%Y-%m-%d %H:%M:%S')
        order_result = session.query(Order).filter(Order.type == 0).filter(Order.coin_type == coin_type). \
            filter(Order.end_date < update_date).filter(Order.time_type == self.time_type). \
            filter(Order.strategy_type == self.strategy_type)
        count=order_result.count()
        if(count>0):
            #说明有成交的买单,那么就可以进行卖出操作了
            #更新数据库
            order=order_result.one()
            order.sell_price = askPirce
            order.buy_price=float(order.buy_price)
            order.profit_rate = askPirce/order.buy_price -1
            order.sell_fee = (askPirce * amount)*0.001
            order.profit = (float(order.sell_price)-float(order.buy_price))*(float(order.amount))- \
                           (float(order.buy_fee) + float(order.sell_fee))
            order.type = 1
            order.ask_order_id = "test_ask_004"
            # 添加到session:
            message="%s:%s执行下单操作成功,卖价为%.8f,数量为%.2f"%(self.coin_type,self.time_type,askPirce,amount)
            logger.warn(message)
            if(order.profit_rate>self.stop_loss and order.profit_rate<0):
                #亏损在0-1%中间就不要动
                # 关闭session:
                session.close()
                return

            #亏损超过1%,卖出
            # 提交即保存到数据库:
            if(config.market_game_start == 1):
                for pair_map in config.binance_game_coin_pairs:
                    if(pair_map["symbol"] == self.coin_type):
                        #实体竞技
                        try:
                            balance_data_list=self.binance.get_account()["balances"]
                            asset=self.coin_type.replace("BTC","")
                            for value_map in balance_data_list:
                                if(value_map["asset"]==asset):
                                    free=value_map["free"]
                                    free=float(free)
                                    amount=min(free,amount)
                                    break

                            result=self.binance.order_limit_sell(symbol=self.coin_type, quantity=amount, price=askPirce )
                            order.ask_order_id = result["orderId"]
                            message="下单 %s"%(order.ask_order_id)
                            logger.warn(message)
                        except Exception as  e:
                            traceback.print_exc()
                            logger.fatal(e)


            session.commit()
        # 关闭session:
        session.close()
Esempio n. 3
0
 def main(self):
     logger.debug("main")
     self.get_binance()
     self.create_bean()
     try :
         self.loop()
     except Exception as  e:
         logger.fatal("宕机了。。。。。。。。。")
         logger.fatal(e)
         main()
Esempio n. 4
0
    def get_history_data(self):
        try:
            data = self.binance.get_klines(symbol=self.coin_type,
                                           interval=self.time_type)
        except Exception as e:
            traceback.print_exc()
            message = self.coin_type + ": fall down"
            logger.fatal(message)
            data = self.get_history_data()

        return data
Esempio n. 5
0
    def main(self):
        logger.debug("main")
        self.base_init()
        self.create_bean()

        try:
            self.loop()
        except Exception as e:
            logger.fatal("宕机了。。。。。。。。。")
            traceback.print_exc()
            logger.fatal(e)
            self.loop()
Esempio n. 6
0
    def gamePlay(self, buy_flag, Price, amount, new_order, session):
        if (config.market_game_start):
            if config.market_game_start:
                #检测 订单列表 状态
                self.check_order_list()
            #实体竞技
            if buy_flag:
                try:
                    balance_data_list = self.binance.get_account()["balances"]
                    eth_asset = balance_data_list[2]
                    free = float(eth_asset["free"])
                    locked = float(eth_asset["locked"])

                    if free < config.eth_left_size:
                        return

                    two_str1 = str(amount)[-2:]
                    bool_flag = re.match("00", two_str1)
                    if (bool_flag):
                        can_buy_amount = round(0.5 / Price, 0)  #0.5个eth
                    else:
                        can_buy_amount = round(0.5 / Price, 2)  #0.5个eth

                    if (free > 0.5 and can_buy_amount > 0):
                        result = self.binance.order_limit_buy(
                            symbol=self.coin_type,
                            quantity=can_buy_amount,
                            price=Price)

                        new_order.amount = can_buy_amount
                        new_order.bid_order_id = result["orderId"]
                        message = "下单 %s" % (new_order.bid_order_id)
                        logger.warn(message)
                        logger.warn(str(result))
                        session.commit()

                        message = str(result)
                        logger.warn(message)
                        ServerJiao.send_server_warn(message)
                    else:
                        logger.warn(self.coin_type + "金额不足")
                except Exception as e:
                    traceback.print_exc()
                    message = self.coin_type + ":" + str(e)
                    logger.fatal(message)
                    ServerJiao.send_server_warn(message)
            else:
                # 提交即保存到数据库:
                try:
                    balance_data_list = self.binance.get_account()["balances"]
                    eth_asset = balance_data_list[2]
                    eth_free = float(eth_asset["free"])
                    eth_locked = float(eth_asset["locked"])
                    asset = self.coin_type.replace("ETH", "")
                    for value_map in balance_data_list:
                        if (value_map["asset"] == asset):
                            free = value_map["free"]
                            locked = value_map["locked"]
                            free = float(free)
                            locked = float(locked)
                            break

                    two_str1 = str(amount)[-2:]
                    bool_flag = re.match("00", two_str1)
                    if (bool_flag):
                        amount = np.math.floor(free)  #0.5个eth
                    else:
                        free = free * 100
                        free = np.math.floor(free)  #0.5个eth
                        amount = free / 100

                    if (amount > 0 and amount * Price > 0.01):
                        result = self.binance.order_limit_sell(
                            symbol=self.coin_type,
                            quantity=amount,
                            price=Price)

                        new_order.ask_order_id = result["orderId"]
                        message = self.coin_type + ":下单 %s" % (
                            new_order.ask_order_id)
                        logger.warn(message)
                        logger.warn(str(result))
                        new_order.amount = amount
                        new_order.type = 1
                        session.commit()

                        message = self.coin_type + "___下单卖出____" + str(result)
                        logger.warn(message)
                        ServerJiao.send_server_warn(message)

                        #根据eth lock  数量 取消买单
                        if eth_locked > 0:
                            cancel_result = self.binance.cancel_order(
                                symbol=new_order.coin_type,
                                orderId=new_order.bid_order_id)
                            message = self.coin_type + "___取消下单____" + str(
                                cancel_result)
                            logger.warn(message)
                            ServerJiao.send_server_warn(message)
                        else:
                            message = "eth 没有 lock 记录"
                            ServerJiao.send_server_warn(message)
                    else:
                        new_order.type = 4
                        session.commit()
                        logger.warn(self.coin_type + ":没有足够数量")
                except Exception as e:
                    traceback.print_exc()
                    message = self.coin_type + ":" + str(e)
                    logger.fatal(message)
                    ServerJiao.send_server_warn(message)