def get_currency_info(): """셀러리(Celery)에 등록되는 task로 코빗 거래소에서 최근 1분간 화폐정보를 가져오기 위한 task입니다. 가져온 데이터는 MongoDBHandler를 이용해 Mongodb에 넣습니다. """ korbit = KorbitMachine() result_etc = korbit.get_filled_orders(currency_type="etc_krw") result_eth = korbit.get_filled_orders(currency_type="eth_krw") result_btc = korbit.get_filled_orders(currency_type="btc_krw") result_xrp = korbit.get_filled_orders(currency_type="xrp_krw") result_bch = korbit.get_filled_orders(currency_type="bch_krw") result_btg = korbit.get_filled_orders(currency_type="btg_krw") result_btg = korbit.get_filled_orders(currency_type="ltc_krw") mongodb = MongoDBHandler("local", "coiner", "price_info") result_list = result_etc + result_eth + result_btc + result_xrp + result_bch + result_btg if len(result_list) != 0: for item in result_list: d = datetime.fromtimestamp(item["timestamp"]/1000) item["year"] = d.year item["month"] = d.month item["day"] = d.day item["hour"] = d.hour item["minute"] = d.minute item["second"] = d.second item["amount"] = float(item["amount"]) item["timestamp"] = item["timestamp"]/1000 item.pop("tid") ids = mongodb.insert_items(result_list)
def SetUp(self): self.mongodb = MongoDBHandler("local", "coiner", "price_info") self.mongodb.delete_items({}) docs = [ { "currency": "btc", "price": 10000 }, { "currency": "btc", "price": 1000 }, { "currency": "xrp", "price": 100 }, { "currency": "btc", "price": 20000 }, { "currency": "eth", "price": 2000 }, { "currency": "xrp", "price": 200 }, ] self.mongodb.insert_items(docs)
def SetUp(self): self.mongodb = MongoDBHandler("local", "coiner", "price_info") self.mongodb.delete_items({}) docs = [ {"currency" : "btc", "price":10000}, {"currency" : "btc", "price":1000}, {"currency" : "xrp", "price":100}, {"currency" : "btc", "price":20000}, {"currency" : "eth", "price":2000}, {"currency" : "xrp", "price":200}, ] self.mongodb.insert_items(docs)
def check_my_order(self): self.check_buy_ordered() self.check_buy_completed() self.check_sell_ordered() self.check_sell_completed() self.check_keep_ordered() def run(self): if self.params["is_active"] == "active": self.check_my_order() self.scenario() else: logger.info("inactive") if __name__ == "__main__": mongodb = MongoDBHandler(mode="local", db_name="coiner", collection_name="price_info") korbit_machine = KorbitMachine() pusher = PushSlack() if len(sys.argv) > 0: trader = StepTrade(machine=korbit_machine, db_handler=mongodb, strategy=sys.argv[1], currency_type=sys.argv[2], pusher=pusher) trader.run()
class MongdoDBHandlerTestCase(unittest.TestCase): def SetUp(self): self.mongodb = MongoDBHandler("local", "coiner", "price_info") self.mongodb.delete_items({}) docs = [ {"currency" : "btc", "price":10000}, {"currency" : "btc", "price":1000}, {"currency" : "xrp", "price":100}, {"currency" : "btc", "price":20000}, {"currency" : "eth", "price":2000}, {"currency" : "xrp", "price":200}, ] self.mongodb.insert_items(docs) def test_set_db_collection(self): print('test_set_db_collection : ',inspect.stack()[0][3]) self.mongodb.set_db_collection("trader","trade_status") self.assertEquals(self.mongodb.get_current_db_name(),"trader") self.assertEquals(self.mongodb.get_current_collection_name(),"trader") def test_get_collection(self): print(inspect.stack()[0][3]) collection_name = self.mongodb.get_current_collection_name() self.assertEqual(collection_name, "price_info") def test_get_db_name(self): print(inspect.stack()[0][3]) dbname = self.mongodb.get_current_db_name() self.assertEqual(dbname, "coiner") def test_insert_item(self): print(inspect.stack()[0][3]) doc = {"item" : "item0" , "name" : "test_insert_item"} id = self.mongodb.insert_item(doc) assert id print(id) def test_insert_items(self): print(inspect.stack()[0][3]) docs = [{"item" : "item1", "name" : "test_insert_items"}, {"item": "item2", "name": "test_insert_items"} ] ids = self.mongodb.insert_items(docs) assert ids print(ids) def tearDown(self): pass
class MongoDBHandlerTestCase(unittest.TestCase): def setUp(self): self.mongodb = MongoDBHandler("local", "coiner", "price_info") self.mongodb.delete_items({}) docs = [{ "currency": "btc", "price": 10000 }, { "currency": "eth", "price": 1000 }, { "currency": "xrp", "price": 100 }, { "currency": "btc", "price": 20000 }, { "currency": "eth", "price": 2000 }, { "currency": "xrp", "price": 200 }] self.mongodb.insert_items(docs) def test_set_db_collection(self): """ test set_db """ print(inspect.stack()[0][3]) self.mongodb.set_db_collection("trader", "trade_status") self.assertEqual(self.mongodb.get_current_db_name(), "trader") self.assertEqual(self.mongodb.get_current_collection_name(), "trade_status") def test_get_db_name(self): print(inspect.stack()[0][3]) dbname = self.mongodb.get_current_db_name() self.assertEqual(dbname, "coiner") def test_get_collection_name(self): print(inspect.stack()[0][3]) collection_name = self.mongodb.get_current_collection_name() self.assertEqual(collection_name, "price_info") def test_insert_item(self): print(inspect.stack()[0][3]) doc = {"item": "item0", "name": "test_insert_item"} id = self.mongodb.insert_item(doc) assert id print(id) def test_insert_items(self): print(inspect.stack()[0][3]) docs = [ { "item": "item1", "name": "test_insert_items" }, { "item": "item2", "name": "test_insert_items" }, ] ids = self.mongodb.insert_items(docs) assert ids print(ids) def test_find_item(self): print(inspect.stack()[0][3]) doc = self.mongodb.find_item({"currency": "btc"}) print(doc) def test_find_items(self): print(inspect.stack()[0][3]) cursor = self.mongodb.find_items({"currency": "eth"}) assert cursor for doc in cursor: print(doc) def test_delete_items(self): print(inspect.stack()[0][3]) result = self.mongodb.delete_items({"currency": "xrp"}) assert result print(result.deleted_count) def test_update_items(self): print(inspect.stack()[0][3]) result = self.mongodb.update_items({"currency": "xrp"}, {"$set": { "price": 300 }}) assert result print("matched_count:" + str(result.matched_count)) print("modified_count:" + str(result.modified_count)) def test_aggregate(self): print(inspect.stack()[0][3]) pipeline = [{ "$match": { "currency": "btc" } }, { "$group": { "_id": "$currency", "min_val": { "$min": "$price" }, "max_val": { "$max": "$price" }, "sum_val": { "$sum": "$price" } } }] result = self.mongodb.aggregate(pipeline) assert result for item in result: print(item) def tearDown(self): pass
float(self.params["buy_amount"])) } logger.info(self.item) wallet = self.machine.get_wallet_status(self.currency_type) if int(wallet["data"]["available_krw"]) > int( self.last_val * float(self.params["buy_amount"])): self.order_buy_transaction(machine=self.machine, db_handler=self.db_handler, currency_type=self.currency_type, item=self.item) self.pusher.send_message( "#general", "buy_ordered {item}".format(item=str(self.item))) self.check_buy_ordered() else: logger.info("krw is short") if __name__ == "main": mongodb = MongoDBHandler() bithumb_machine = BithumbMachine() pusher = PushSlack() if len(sys.argv) > 0: trader = StepTrade(machine=bithumb_machine, db_handler=mongodb, strategy=sys.argv[1], currency_type=sys.argv[2], pusher=pusher) trader.run()
class MongdoDBHandlerTestCase(unittest.TestCase): def SetUp(self): self.mongodb = MongoDBHandler("local", "coiner", "price_info") self.mongodb.delete_items({}) docs = [ { "currency": "btc", "price": 10000 }, { "currency": "btc", "price": 1000 }, { "currency": "xrp", "price": 100 }, { "currency": "btc", "price": 20000 }, { "currency": "eth", "price": 2000 }, { "currency": "xrp", "price": 200 }, ] self.mongodb.insert_items(docs) def test_set_db_collection(self): print('test_set_db_collection : ', inspect.stack()[0][3]) self.mongodb.set_db_collection("trader", "trade_status") self.assertEquals(self.mongodb.get_current_db_name(), "trader") self.assertEquals(self.mongodb.get_current_collection_name(), "trader") def test_get_collection(self): print(inspect.stack()[0][3]) collection_name = self.mongodb.get_current_collection_name() self.assertEqual(collection_name, "price_info") def test_get_db_name(self): print(inspect.stack()[0][3]) dbname = self.mongodb.get_current_db_name() self.assertEqual(dbname, "coiner") def test_insert_item(self): print(inspect.stack()[0][3]) doc = {"item": "item0", "name": "test_insert_item"} id = self.mongodb.insert_item(doc) assert id print(id) def test_insert_items(self): print(inspect.stack()[0][3]) docs = [{ "item": "item1", "name": "test_insert_items" }, { "item": "item2", "name": "test_insert_items" }] ids = self.mongodb.insert_items(docs) assert ids print(ids) def tearDown(self): pass