mirror of
https://git.wownero.com/lza_menace/totrader.git
synced 2024-08-15 00:33:13 +00:00
update dashboard, add order buying/selling, argparse, helper functions
This commit is contained in:
parent
bc56861ca1
commit
8b82906ef7
4 changed files with 1936 additions and 513 deletions
16
db.py
16
db.py
|
@ -46,6 +46,20 @@ class Balance(Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
database = db
|
database = db
|
||||||
|
|
||||||
|
class Order(Model):
|
||||||
|
trade_pair = CharField()
|
||||||
|
trade_type = CharField()
|
||||||
|
buy = BooleanField()
|
||||||
|
quantity = DoubleField()
|
||||||
|
price = DoubleField()
|
||||||
|
uuid = CharField()
|
||||||
|
active = BooleanField(default=True)
|
||||||
|
cancelled = BooleanField(default=False)
|
||||||
|
date = DateTimeField(default=get_time)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
database = db
|
||||||
|
|
||||||
# class Trade(Model):
|
# class Trade(Model):
|
||||||
# id = AutoField()
|
# id = AutoField()
|
||||||
# title = CharField()
|
# title = CharField()
|
||||||
|
@ -61,4 +75,4 @@ class Balance(Model):
|
||||||
# class Meta:
|
# class Meta:
|
||||||
# database = db
|
# database = db
|
||||||
|
|
||||||
db.create_tables([Ticker, Balance])
|
db.create_tables([Ticker, Balance, Order])
|
||||||
|
|
|
@ -1,506 +0,0 @@
|
||||||
{
|
|
||||||
"annotations": {
|
|
||||||
"list": [
|
|
||||||
{
|
|
||||||
"builtIn": 1,
|
|
||||||
"datasource": "-- Grafana --",
|
|
||||||
"enable": true,
|
|
||||||
"hide": true,
|
|
||||||
"iconColor": "rgba(0, 211, 255, 1)",
|
|
||||||
"name": "Annotations & Alerts",
|
|
||||||
"type": "dashboard"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"editable": true,
|
|
||||||
"gnetId": null,
|
|
||||||
"graphTooltip": 0,
|
|
||||||
"id": 1,
|
|
||||||
"links": [],
|
|
||||||
"panels": [
|
|
||||||
{
|
|
||||||
"aliasColors": {},
|
|
||||||
"bars": false,
|
|
||||||
"dashLength": 10,
|
|
||||||
"dashes": false,
|
|
||||||
"datasource": null,
|
|
||||||
"fill": 1,
|
|
||||||
"fillGradient": 0,
|
|
||||||
"gridPos": {
|
|
||||||
"h": 9,
|
|
||||||
"w": 12,
|
|
||||||
"x": 0,
|
|
||||||
"y": 0
|
|
||||||
},
|
|
||||||
"hiddenSeries": false,
|
|
||||||
"id": 4,
|
|
||||||
"legend": {
|
|
||||||
"avg": false,
|
|
||||||
"current": false,
|
|
||||||
"max": false,
|
|
||||||
"min": false,
|
|
||||||
"show": true,
|
|
||||||
"total": false,
|
|
||||||
"values": false
|
|
||||||
},
|
|
||||||
"lines": true,
|
|
||||||
"linewidth": 1,
|
|
||||||
"nullPointMode": "connected",
|
|
||||||
"options": {
|
|
||||||
"dataLinks": []
|
|
||||||
},
|
|
||||||
"percentage": false,
|
|
||||||
"pointradius": 2,
|
|
||||||
"points": false,
|
|
||||||
"renderer": "flot",
|
|
||||||
"seriesOverrides": [],
|
|
||||||
"spaceLength": 10,
|
|
||||||
"stack": false,
|
|
||||||
"steppedLine": false,
|
|
||||||
"targets": [
|
|
||||||
{
|
|
||||||
"expr": "avg(monerod_connections_incoming)",
|
|
||||||
"legendFormat": "Incoming",
|
|
||||||
"refId": "A"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"expr": "avg(monerod_connections_outgoing)",
|
|
||||||
"legendFormat": "Outgoing",
|
|
||||||
"refId": "B"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"thresholds": [],
|
|
||||||
"timeFrom": null,
|
|
||||||
"timeRegions": [],
|
|
||||||
"timeShift": null,
|
|
||||||
"title": "Connections",
|
|
||||||
"tooltip": {
|
|
||||||
"shared": true,
|
|
||||||
"sort": 0,
|
|
||||||
"value_type": "individual"
|
|
||||||
},
|
|
||||||
"type": "graph",
|
|
||||||
"xaxis": {
|
|
||||||
"buckets": null,
|
|
||||||
"mode": "time",
|
|
||||||
"name": null,
|
|
||||||
"show": true,
|
|
||||||
"values": []
|
|
||||||
},
|
|
||||||
"yaxes": [
|
|
||||||
{
|
|
||||||
"decimals": null,
|
|
||||||
"format": "none",
|
|
||||||
"label": null,
|
|
||||||
"logBase": 1,
|
|
||||||
"max": null,
|
|
||||||
"min": "0",
|
|
||||||
"show": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"format": "short",
|
|
||||||
"label": null,
|
|
||||||
"logBase": 1,
|
|
||||||
"max": null,
|
|
||||||
"min": null,
|
|
||||||
"show": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"yaxis": {
|
|
||||||
"align": false,
|
|
||||||
"alignLevel": null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"aliasColors": {},
|
|
||||||
"bars": false,
|
|
||||||
"dashLength": 10,
|
|
||||||
"dashes": false,
|
|
||||||
"datasource": null,
|
|
||||||
"fill": 1,
|
|
||||||
"fillGradient": 0,
|
|
||||||
"gridPos": {
|
|
||||||
"h": 9,
|
|
||||||
"w": 12,
|
|
||||||
"x": 12,
|
|
||||||
"y": 0
|
|
||||||
},
|
|
||||||
"hiddenSeries": false,
|
|
||||||
"id": 2,
|
|
||||||
"legend": {
|
|
||||||
"avg": false,
|
|
||||||
"current": false,
|
|
||||||
"max": false,
|
|
||||||
"min": false,
|
|
||||||
"show": false,
|
|
||||||
"total": false,
|
|
||||||
"values": false
|
|
||||||
},
|
|
||||||
"lines": true,
|
|
||||||
"linewidth": 1,
|
|
||||||
"nullPointMode": "connected",
|
|
||||||
"options": {
|
|
||||||
"dataLinks": []
|
|
||||||
},
|
|
||||||
"percentage": false,
|
|
||||||
"pointradius": 2,
|
|
||||||
"points": false,
|
|
||||||
"renderer": "flot",
|
|
||||||
"seriesOverrides": [
|
|
||||||
{
|
|
||||||
"alias": "/.*/",
|
|
||||||
"color": "#C4162A"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"spaceLength": 10,
|
|
||||||
"stack": false,
|
|
||||||
"steppedLine": true,
|
|
||||||
"targets": [
|
|
||||||
{
|
|
||||||
"expr": "avg(monerod_block_difficulty)",
|
|
||||||
"refId": "A"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"thresholds": [],
|
|
||||||
"timeFrom": null,
|
|
||||||
"timeRegions": [],
|
|
||||||
"timeShift": null,
|
|
||||||
"title": "Difficulty",
|
|
||||||
"tooltip": {
|
|
||||||
"shared": true,
|
|
||||||
"sort": 0,
|
|
||||||
"value_type": "individual"
|
|
||||||
},
|
|
||||||
"type": "graph",
|
|
||||||
"xaxis": {
|
|
||||||
"buckets": null,
|
|
||||||
"mode": "time",
|
|
||||||
"name": null,
|
|
||||||
"show": true,
|
|
||||||
"values": []
|
|
||||||
},
|
|
||||||
"yaxes": [
|
|
||||||
{
|
|
||||||
"format": "none",
|
|
||||||
"label": null,
|
|
||||||
"logBase": 1,
|
|
||||||
"max": null,
|
|
||||||
"min": null,
|
|
||||||
"show": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"format": "short",
|
|
||||||
"label": null,
|
|
||||||
"logBase": 1,
|
|
||||||
"max": null,
|
|
||||||
"min": null,
|
|
||||||
"show": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"yaxis": {
|
|
||||||
"align": false,
|
|
||||||
"alignLevel": null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"aliasColors": {},
|
|
||||||
"bars": false,
|
|
||||||
"dashLength": 10,
|
|
||||||
"dashes": false,
|
|
||||||
"datasource": null,
|
|
||||||
"fill": 1,
|
|
||||||
"fillGradient": 0,
|
|
||||||
"gridPos": {
|
|
||||||
"h": 8,
|
|
||||||
"w": 12,
|
|
||||||
"x": 0,
|
|
||||||
"y": 9
|
|
||||||
},
|
|
||||||
"hiddenSeries": false,
|
|
||||||
"id": 8,
|
|
||||||
"legend": {
|
|
||||||
"avg": false,
|
|
||||||
"current": false,
|
|
||||||
"max": false,
|
|
||||||
"min": false,
|
|
||||||
"show": false,
|
|
||||||
"total": false,
|
|
||||||
"values": false
|
|
||||||
},
|
|
||||||
"lines": true,
|
|
||||||
"linewidth": 1,
|
|
||||||
"nullPointMode": "connected",
|
|
||||||
"options": {
|
|
||||||
"dataLinks": []
|
|
||||||
},
|
|
||||||
"percentage": false,
|
|
||||||
"pointradius": 2,
|
|
||||||
"points": false,
|
|
||||||
"renderer": "flot",
|
|
||||||
"seriesOverrides": [
|
|
||||||
{
|
|
||||||
"alias": "/.*/",
|
|
||||||
"color": "#FA6400"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"spaceLength": 10,
|
|
||||||
"stack": false,
|
|
||||||
"steppedLine": false,
|
|
||||||
"targets": [
|
|
||||||
{
|
|
||||||
"expr": "avg(monerod_block_reward)",
|
|
||||||
"legendFormat": "Block Reward (WOW)",
|
|
||||||
"refId": "A"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"thresholds": [],
|
|
||||||
"timeFrom": null,
|
|
||||||
"timeRegions": [],
|
|
||||||
"timeShift": null,
|
|
||||||
"title": "Block Reward (WOW)",
|
|
||||||
"tooltip": {
|
|
||||||
"shared": true,
|
|
||||||
"sort": 0,
|
|
||||||
"value_type": "individual"
|
|
||||||
},
|
|
||||||
"type": "graph",
|
|
||||||
"xaxis": {
|
|
||||||
"buckets": null,
|
|
||||||
"mode": "time",
|
|
||||||
"name": null,
|
|
||||||
"show": true,
|
|
||||||
"values": []
|
|
||||||
},
|
|
||||||
"yaxes": [
|
|
||||||
{
|
|
||||||
"decimals": null,
|
|
||||||
"format": "none",
|
|
||||||
"label": null,
|
|
||||||
"logBase": 1,
|
|
||||||
"max": null,
|
|
||||||
"min": null,
|
|
||||||
"show": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"format": "short",
|
|
||||||
"label": null,
|
|
||||||
"logBase": 1,
|
|
||||||
"max": null,
|
|
||||||
"min": null,
|
|
||||||
"show": false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"yaxis": {
|
|
||||||
"align": false,
|
|
||||||
"alignLevel": null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"aliasColors": {},
|
|
||||||
"bars": false,
|
|
||||||
"dashLength": 10,
|
|
||||||
"dashes": false,
|
|
||||||
"datasource": null,
|
|
||||||
"fill": 1,
|
|
||||||
"fillGradient": 0,
|
|
||||||
"gridPos": {
|
|
||||||
"h": 8,
|
|
||||||
"w": 12,
|
|
||||||
"x": 12,
|
|
||||||
"y": 9
|
|
||||||
},
|
|
||||||
"hiddenSeries": false,
|
|
||||||
"id": 6,
|
|
||||||
"legend": {
|
|
||||||
"avg": false,
|
|
||||||
"current": false,
|
|
||||||
"max": false,
|
|
||||||
"min": false,
|
|
||||||
"show": false,
|
|
||||||
"total": false,
|
|
||||||
"values": false
|
|
||||||
},
|
|
||||||
"lines": true,
|
|
||||||
"linewidth": 1,
|
|
||||||
"nullPointMode": "connected",
|
|
||||||
"options": {
|
|
||||||
"dataLinks": []
|
|
||||||
},
|
|
||||||
"percentage": false,
|
|
||||||
"pointradius": 2,
|
|
||||||
"points": false,
|
|
||||||
"renderer": "flot",
|
|
||||||
"seriesOverrides": [
|
|
||||||
{
|
|
||||||
"alias": "/.*/",
|
|
||||||
"color": "#8F3BB8"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"spaceLength": 10,
|
|
||||||
"stack": false,
|
|
||||||
"steppedLine": true,
|
|
||||||
"targets": [
|
|
||||||
{
|
|
||||||
"expr": "avg(monerod_tx_mempool)",
|
|
||||||
"legendFormat": "Pool Transactions",
|
|
||||||
"refId": "A"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"thresholds": [],
|
|
||||||
"timeFrom": null,
|
|
||||||
"timeRegions": [],
|
|
||||||
"timeShift": null,
|
|
||||||
"title": "Mempool Transactions",
|
|
||||||
"tooltip": {
|
|
||||||
"shared": true,
|
|
||||||
"sort": 0,
|
|
||||||
"value_type": "individual"
|
|
||||||
},
|
|
||||||
"type": "graph",
|
|
||||||
"xaxis": {
|
|
||||||
"buckets": null,
|
|
||||||
"mode": "time",
|
|
||||||
"name": null,
|
|
||||||
"show": true,
|
|
||||||
"values": []
|
|
||||||
},
|
|
||||||
"yaxes": [
|
|
||||||
{
|
|
||||||
"format": "short",
|
|
||||||
"label": null,
|
|
||||||
"logBase": 1,
|
|
||||||
"max": null,
|
|
||||||
"min": null,
|
|
||||||
"show": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"format": "short",
|
|
||||||
"label": null,
|
|
||||||
"logBase": 1,
|
|
||||||
"max": null,
|
|
||||||
"min": null,
|
|
||||||
"show": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"yaxis": {
|
|
||||||
"align": false,
|
|
||||||
"alignLevel": null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cacheTimeout": null,
|
|
||||||
"colorBackground": false,
|
|
||||||
"colorPostfix": false,
|
|
||||||
"colorPrefix": false,
|
|
||||||
"colorValue": false,
|
|
||||||
"colors": [
|
|
||||||
"#299c46",
|
|
||||||
"rgba(237, 129, 40, 0.89)",
|
|
||||||
"#d44a3a"
|
|
||||||
],
|
|
||||||
"datasource": null,
|
|
||||||
"format": "none",
|
|
||||||
"gauge": {
|
|
||||||
"maxValue": 100,
|
|
||||||
"minValue": 0,
|
|
||||||
"show": false,
|
|
||||||
"thresholdLabels": false,
|
|
||||||
"thresholdMarkers": true
|
|
||||||
},
|
|
||||||
"gridPos": {
|
|
||||||
"h": 5,
|
|
||||||
"w": 8,
|
|
||||||
"x": 8,
|
|
||||||
"y": 17
|
|
||||||
},
|
|
||||||
"id": 10,
|
|
||||||
"interval": null,
|
|
||||||
"links": [],
|
|
||||||
"mappingType": 1,
|
|
||||||
"mappingTypes": [
|
|
||||||
{
|
|
||||||
"name": "value to text",
|
|
||||||
"value": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "range to text",
|
|
||||||
"value": 2
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"maxDataPoints": 100,
|
|
||||||
"nullPointMode": "connected",
|
|
||||||
"nullText": null,
|
|
||||||
"options": {},
|
|
||||||
"postfix": "",
|
|
||||||
"postfixFontSize": "50%",
|
|
||||||
"prefix": "",
|
|
||||||
"prefixFontSize": "50%",
|
|
||||||
"rangeMaps": [
|
|
||||||
{
|
|
||||||
"from": "null",
|
|
||||||
"text": "N/A",
|
|
||||||
"to": "null"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"sparkline": {
|
|
||||||
"fillColor": "rgba(31, 118, 189, 0.18)",
|
|
||||||
"full": false,
|
|
||||||
"lineColor": "rgb(31, 120, 193)",
|
|
||||||
"show": false,
|
|
||||||
"ymax": null,
|
|
||||||
"ymin": null
|
|
||||||
},
|
|
||||||
"tableColumn": "",
|
|
||||||
"targets": [
|
|
||||||
{
|
|
||||||
"expr": "avg(monerod_tx_chain)",
|
|
||||||
"instant": true,
|
|
||||||
"refId": "A"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"thresholds": "",
|
|
||||||
"timeFrom": null,
|
|
||||||
"timeShift": null,
|
|
||||||
"title": "Total Transactions",
|
|
||||||
"type": "singlestat",
|
|
||||||
"valueFontSize": "100%",
|
|
||||||
"valueMaps": [
|
|
||||||
{
|
|
||||||
"op": "=",
|
|
||||||
"text": "N/A",
|
|
||||||
"value": "null"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"valueName": "current"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"refresh": "30s",
|
|
||||||
"schemaVersion": 21,
|
|
||||||
"style": "dark",
|
|
||||||
"tags": [],
|
|
||||||
"templating": {
|
|
||||||
"list": []
|
|
||||||
},
|
|
||||||
"time": {
|
|
||||||
"from": "now-6h",
|
|
||||||
"to": "now"
|
|
||||||
},
|
|
||||||
"timepicker": {
|
|
||||||
"refresh_intervals": [
|
|
||||||
"5s",
|
|
||||||
"10s",
|
|
||||||
"30s",
|
|
||||||
"1m",
|
|
||||||
"5m",
|
|
||||||
"15m",
|
|
||||||
"30m",
|
|
||||||
"1h",
|
|
||||||
"2h",
|
|
||||||
"1d"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"timezone": "",
|
|
||||||
"title": "Daemon Stats",
|
|
||||||
"uid": "0ktA4KDGk",
|
|
||||||
"version": 2
|
|
||||||
}
|
|
1837
grafana/trading.json
Normal file
1837
grafana/trading.json
Normal file
File diff suppressed because it is too large
Load diff
90
trade.py
90
trade.py
|
@ -1,16 +1,21 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
from argparse import ArgumentParser
|
||||||
from os import getenv
|
from os import getenv
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
from requests import get as requests_get
|
from requests import get as requests_get
|
||||||
from requests import post as requests_post
|
from requests import post as requests_post
|
||||||
from requests.auth import HTTPBasicAuth
|
from requests.auth import HTTPBasicAuth
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
from random import uniform
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
from time import sleep
|
from time import sleep
|
||||||
from db import Ticker, Balance
|
from db import Ticker, Balance, Order
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
satoshi = .00000001
|
||||||
|
|
||||||
class TradeOgre(object):
|
class TradeOgre(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
load_dotenv('.env')
|
load_dotenv('.env')
|
||||||
|
@ -34,26 +39,38 @@ class TradeOgre(object):
|
||||||
|
|
||||||
def get_balance(self, currency):
|
def get_balance(self, currency):
|
||||||
route = '/account/balance'
|
route = '/account/balance'
|
||||||
return self.req(route, 'post', {'currency': currency})
|
data = {'currency': currency}
|
||||||
|
return self.req(route, 'post', data)
|
||||||
|
|
||||||
def get_balances(self):
|
def get_balances(self):
|
||||||
route = '/account/balances'
|
route = '/account/balances'
|
||||||
return self.req(route)
|
return self.req(route)
|
||||||
|
|
||||||
|
def submit_order(self, type, pair, quantity, price):
|
||||||
|
route = f'/order/{type}'
|
||||||
|
data = {'market': pair, 'quantity': quantity, 'price': price}
|
||||||
|
return self.req(route, 'post', data)
|
||||||
|
|
||||||
def run():
|
def get_order(self, uuid):
|
||||||
|
route = f'/account/order/{uuid}'
|
||||||
|
return self.req(route)
|
||||||
|
|
||||||
|
|
||||||
|
def get_metrics():
|
||||||
# define vars
|
# define vars
|
||||||
to = TradeOgre()
|
to = TradeOgre()
|
||||||
base = 'BTC'
|
base = 'BTC'
|
||||||
currency = 'WOW'
|
currency = 'WOW'
|
||||||
trade_pair = f'{base}-{currency}'
|
trade_pair = f'{base}-{currency}'
|
||||||
|
|
||||||
# ticker market data
|
# get market data
|
||||||
tp_res = to.get_trade_pair(trade_pair)
|
tp_res = to.get_trade_pair(trade_pair)
|
||||||
print(tp_res)
|
print(tp_res)
|
||||||
spreat_btc = Decimal(tp_res['ask']) - Decimal(tp_res['bid'])
|
spreat_btc = Decimal(tp_res['ask']) - Decimal(tp_res['bid'])
|
||||||
spread_sats = float(spreat_btc / Decimal(.00000001))
|
spread_sats = float(spreat_btc / Decimal(.00000001))
|
||||||
spread_perc = (spreat_btc / Decimal(tp_res['ask'])) * 100
|
spread_perc = (spreat_btc / Decimal(tp_res['ask'])) * 100
|
||||||
|
|
||||||
|
# store market data in db
|
||||||
t = Ticker(
|
t = Ticker(
|
||||||
trade_pair=trade_pair,
|
trade_pair=trade_pair,
|
||||||
initial_price=tp_res['initialprice'],
|
initial_price=tp_res['initialprice'],
|
||||||
|
@ -69,6 +86,7 @@ def run():
|
||||||
)
|
)
|
||||||
t.save()
|
t.save()
|
||||||
|
|
||||||
|
# get balances and store in db
|
||||||
for c in base, currency:
|
for c in base, currency:
|
||||||
gb_res = to.get_balance(c)
|
gb_res = to.get_balance(c)
|
||||||
print(gb_res)
|
print(gb_res)
|
||||||
|
@ -79,8 +97,68 @@ def run():
|
||||||
)
|
)
|
||||||
b.save()
|
b.save()
|
||||||
|
|
||||||
|
def put_market_maker():
|
||||||
|
to = TradeOgre()
|
||||||
|
latest_ticker = Ticker.select().order_by(Ticker.date.desc()).get()
|
||||||
|
if latest_ticker.spread_sats > 4:
|
||||||
|
bid_amount = uniform(80, 90)
|
||||||
|
ask_amount = uniform(80, 90)
|
||||||
|
to_bid = latest_ticker.bid + satoshi
|
||||||
|
to_ask = latest_ticker.ask - satoshi
|
||||||
|
buy = to.submit_order('buy', 'BTC-WOW', bid_amount, '{:.8f}'.format(to_bid))
|
||||||
|
print(buy)
|
||||||
|
if buy['success']:
|
||||||
|
o = Order(
|
||||||
|
trade_pair='BTC-WOW',
|
||||||
|
trade_type='market_maker',
|
||||||
|
buy=True,
|
||||||
|
quantity=bid_amount,
|
||||||
|
price=to_bid,
|
||||||
|
uuid=buy['uuid']
|
||||||
|
)
|
||||||
|
o.save()
|
||||||
|
|
||||||
|
sleep(3)
|
||||||
|
sell = to.submit_order('sell', 'BTC-WOW', ask_amount, '{:.8f}'.format(to_ask))
|
||||||
|
print(sell)
|
||||||
|
if sell['success']:
|
||||||
|
o = Order(
|
||||||
|
trade_pair='BTC-WOW',
|
||||||
|
trade_type='market_maker',
|
||||||
|
buy=False,
|
||||||
|
quantity=ask_amount,
|
||||||
|
price=to_ask,
|
||||||
|
uuid=sell['uuid']
|
||||||
|
)
|
||||||
|
o.save()
|
||||||
|
|
||||||
|
def check_orders():
|
||||||
|
to = TradeOgre()
|
||||||
|
orders = Order.select().where(Order.active==True)
|
||||||
|
for order in orders:
|
||||||
|
print(order.uuid)
|
||||||
|
o = to.get_order(order.uuid)
|
||||||
|
print(o)
|
||||||
|
if o['success'] is False:
|
||||||
|
order.active = False
|
||||||
|
order.save()
|
||||||
|
sleep(5)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
parser = ArgumentParser(description='Helpful TradeOgre trading script')
|
||||||
|
parser.add_argument('-t', '--trade', action='store_true', help='Put in buy/sell orders')
|
||||||
|
parser.add_argument('-u', '--update-orders', action='store_true', help='Update status of orders')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
if args.trade:
|
||||||
|
put_market_maker()
|
||||||
|
exit()
|
||||||
|
|
||||||
|
if args.update_orders:
|
||||||
|
check_orders()
|
||||||
|
exit()
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
run()
|
get_metrics()
|
||||||
sleep(30)
|
sleep(60)
|
||||||
|
|
Loading…
Reference in a new issue