Amend margins code to accept LBTC
This commit is contained in:
parent
72ce2704a6
commit
e73c1d4dc3
|
@ -11,24 +11,18 @@ class Markets(util.Base):
|
||||||
Markets handler for generic market functions.
|
Markets handler for generic market functions.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def get_settings(self, platform):
|
|
||||||
if platform == "agora":
|
|
||||||
return settings.Agora
|
|
||||||
elif platform == "lbtc":
|
|
||||||
return settings.LocalBitcoins
|
|
||||||
|
|
||||||
def get_all_assets(self, platform):
|
def get_all_assets(self, platform):
|
||||||
sets = self.get_settings(platform)
|
sets = util.get_settings(platform)
|
||||||
assets = loads(sets.AssetList)
|
assets = loads(sets.AssetList)
|
||||||
return assets
|
return assets
|
||||||
|
|
||||||
def get_all_providers(self, platform):
|
def get_all_providers(self, platform):
|
||||||
sets = self.get_settings(platform)
|
sets = util.get_settings(platform)
|
||||||
providers = loads(sets.ProviderList)
|
providers = loads(sets.ProviderList)
|
||||||
return providers
|
return providers
|
||||||
|
|
||||||
def get_all_currencies(self, platform):
|
def get_all_currencies(self, platform):
|
||||||
sets = self.get_settings(platform)
|
sets = util.get_settings(platform)
|
||||||
currencies = list(set([x[0] for x in loads(sets.DistList)]))
|
currencies = list(set([x[0] for x in loads(sets.DistList)]))
|
||||||
return currencies
|
return currencies
|
||||||
|
|
||||||
|
@ -40,7 +34,7 @@ class Markets(util.Base):
|
||||||
:return: list of ads to modify
|
:return: list of ads to modify
|
||||||
:rtype: list
|
:rtype: list
|
||||||
"""
|
"""
|
||||||
sets = self.get_settings(platform)
|
sets = util.get_settings(platform)
|
||||||
username = sets.Username
|
username = sets.Username
|
||||||
min_margin = sets.MinMargin
|
min_margin = sets.MinMargin
|
||||||
max_margin = sets.MaxMargin
|
max_margin = sets.MaxMargin
|
||||||
|
@ -170,7 +164,7 @@ class Markets(util.Base):
|
||||||
:return: generator of asset, countrycode, currency, provider
|
:return: generator of asset, countrycode, currency, provider
|
||||||
:rtype: generator of tuples
|
:rtype: generator of tuples
|
||||||
"""
|
"""
|
||||||
sets = self.get_settings(platform)
|
sets = util.get_settings(platform)
|
||||||
|
|
||||||
# Iterate providers like REVOLUT, NATIONAL_BANK
|
# Iterate providers like REVOLUT, NATIONAL_BANK
|
||||||
for provider in loads(sets.ProviderList):
|
for provider in loads(sets.ProviderList):
|
||||||
|
|
|
@ -54,7 +54,7 @@ class Money(util.Base):
|
||||||
rates = self.cr.get_rates("USD")
|
rates = self.cr.get_rates("USD")
|
||||||
return rates
|
return rates
|
||||||
|
|
||||||
def get_acceptable_margins(self, currency, amount):
|
def get_acceptable_margins(self, platform, currency, amount):
|
||||||
"""
|
"""
|
||||||
Get the minimum and maximum amounts we would accept a trade for.
|
Get the minimum and maximum amounts we would accept a trade for.
|
||||||
:param currency: currency code
|
:param currency: currency code
|
||||||
|
@ -62,29 +62,31 @@ class Money(util.Base):
|
||||||
:return: (min, max)
|
:return: (min, max)
|
||||||
:rtype: tuple
|
:rtype: tuple
|
||||||
"""
|
"""
|
||||||
|
sets = util.get_settings(platform)
|
||||||
rates = self.get_rates_all()
|
rates = self.get_rates_all()
|
||||||
if currency == "USD":
|
if currency == "USD":
|
||||||
min_amount = amount - float(settings.Agora.AcceptableUSDMargin)
|
min_amount = amount - float(sets.AcceptableUSDMargin)
|
||||||
max_amount = amount + float(settings.Agora.AcceptableUSDMargin)
|
max_amount = amount + float(sets.AcceptableUSDMargin)
|
||||||
return (min_amount, max_amount)
|
return (min_amount, max_amount)
|
||||||
amount_usd = amount / rates[currency]
|
amount_usd = amount / rates[currency]
|
||||||
min_usd = amount_usd - float(settings.Agora.AcceptableUSDMargin)
|
min_usd = amount_usd - float(sets.AcceptableUSDMargin)
|
||||||
max_usd = amount_usd + float(settings.Agora.AcceptableUSDMargin)
|
max_usd = amount_usd + float(sets.AcceptableUSDMargin)
|
||||||
min_local = min_usd * rates[currency]
|
min_local = min_usd * rates[currency]
|
||||||
max_local = max_usd * rates[currency]
|
max_local = max_usd * rates[currency]
|
||||||
return (min_local, max_local)
|
return (min_local, max_local)
|
||||||
|
|
||||||
def get_minmax(self, asset, currency):
|
def get_minmax(self, platform, asset, currency):
|
||||||
|
sets = util.get_settings(platform)
|
||||||
rates = self.get_rates_all()
|
rates = self.get_rates_all()
|
||||||
if currency not in rates and not currency == "USD":
|
if currency not in rates and not currency == "USD":
|
||||||
self.log.error(f"Can't create ad without rates: {currency}")
|
self.log.error(f"Can't create ad without rates: {currency}")
|
||||||
return
|
return
|
||||||
if asset == "XMR":
|
if asset == "XMR":
|
||||||
min_usd = float(settings.Agora.MinUSDXMR)
|
min_usd = float(sets.MinUSDXMR)
|
||||||
max_usd = float(settings.Agora.MaxUSDXMR)
|
max_usd = float(sets.MaxUSDXMR)
|
||||||
elif asset == "BTC":
|
elif asset == "BTC":
|
||||||
min_usd = float(settings.Agora.MinUSDBTC)
|
min_usd = float(sets.MinUSDBTC)
|
||||||
max_usd = float(settings.Agora.MaxUSDBTC)
|
max_usd = float(sets.MaxUSDBTC)
|
||||||
if currency == "USD":
|
if currency == "USD":
|
||||||
min_amount = min_usd
|
min_amount = min_usd
|
||||||
max_amount = max_usd
|
max_amount = max_usd
|
||||||
|
|
|
@ -196,9 +196,9 @@ class Transactions(util.Base):
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def alt_amount_check(self, amount, currency, reference, stored_trade):
|
def alt_amount_check(self, platform, amount, currency, reference, stored_trade):
|
||||||
# If the amount does not match exactly, get the min and max values for our given acceptable margins for trades
|
# If the amount does not match exactly, get the min and max values for our given acceptable margins for trades
|
||||||
min_amount, max_amount = self.money.get_acceptable_margins(currency, stored_trade["amount"])
|
min_amount, max_amount = self.money.get_acceptable_margins(platform, currency, stored_trade["amount"])
|
||||||
self.log.info(f"Amount does not match exactly, trying with margins: min: {min_amount} / max: {max_amount}")
|
self.log.info(f"Amount does not match exactly, trying with margins: min: {min_amount} / max: {max_amount}")
|
||||||
self.irc.sendmsg(f"Amount does not match exactly, trying with margins: min: {min_amount} / max: {max_amount}")
|
self.irc.sendmsg(f"Amount does not match exactly, trying with margins: min: {min_amount} / max: {max_amount}")
|
||||||
if not min_amount < amount < max_amount:
|
if not min_amount < amount < max_amount:
|
||||||
|
@ -372,7 +372,8 @@ class Transactions(util.Base):
|
||||||
if not stored_trade["amount"] == amount:
|
if not stored_trade["amount"] == amount:
|
||||||
if looked_up_without_reference:
|
if looked_up_without_reference:
|
||||||
return
|
return
|
||||||
if not self.alt_amount_check(amount, currency, reference, stored_trade):
|
platform = stored_trade["subclass"]
|
||||||
|
if not self.alt_amount_check(platform, amount, currency, reference, stored_trade):
|
||||||
return
|
return
|
||||||
platform = stored_trade["subclass"]
|
platform = stored_trade["subclass"]
|
||||||
platform_buyer = stored_trade["buyer"]
|
platform_buyer = stored_trade["buyer"]
|
||||||
|
|
|
@ -3,6 +3,9 @@ from httpx import ReadTimeout, ReadError, RemoteProtocolError
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
# Project imports
|
||||||
|
from settings import settings
|
||||||
|
|
||||||
log = logging.getLogger("util")
|
log = logging.getLogger("util")
|
||||||
|
|
||||||
|
|
||||||
|
@ -151,3 +154,10 @@ def handle_exceptions(func):
|
||||||
return rtrn
|
return rtrn
|
||||||
|
|
||||||
return inner_function
|
return inner_function
|
||||||
|
|
||||||
|
|
||||||
|
def get_settings(platform):
|
||||||
|
if platform == "agora":
|
||||||
|
return settings.Agora
|
||||||
|
elif platform == "lbtc":
|
||||||
|
return settings.LocalBitcoins
|
||||||
|
|
Loading…
Reference in New Issue