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)
예제 #2
0
    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)
예제 #3
0
    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)
예제 #4
0
    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()
예제 #5
0
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
예제 #6
0
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
예제 #7
0
                    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()
예제 #8
0
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