new sounds
This commit is contained in:
parent
aa4db10d5b
commit
fb1433a13d
64
main.py
64
main.py
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
from asyncio import events
|
from asyncio import events
|
||||||
|
from hashlib import blake2b
|
||||||
import time
|
import time
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from os import system, terminal_size
|
from os import system, terminal_size
|
||||||
@ -124,24 +125,25 @@ class Status():
|
|||||||
return await get_current_price(self.symbol)
|
return await get_current_price(self.symbol)
|
||||||
self.ticks[self.get_current_tick()]
|
self.ticks[self.get_current_tick()]
|
||||||
|
|
||||||
def set_state(self, state: State):
|
def set_state(self, state: State, position: Position):
|
||||||
if self.current_state != state:
|
if self.current_state != state:
|
||||||
event: EventKind = None
|
event: EventKind = None
|
||||||
|
|
||||||
if state == State.CRITICAL:
|
if state == State.CRITICAL:
|
||||||
event = Event(EventKind.REACHED_MAX_LOSS,
|
event = Event(EventKind.REACHED_MAX_LOSS,
|
||||||
self.get_current_tick())
|
self.get_current_tick(), position)
|
||||||
elif state == State.LOSS:
|
elif state == State.LOSS:
|
||||||
event = Event(EventKind.REACHED_LOSS, self.get_current_tick())
|
event = Event(EventKind.REACHED_LOSS,
|
||||||
|
self.get_current_tick(), position)
|
||||||
elif state == State.BREAK_EVEN:
|
elif state == State.BREAK_EVEN:
|
||||||
event = Event(EventKind.REACHED_BREAK_EVEN,
|
event = Event(EventKind.REACHED_BREAK_EVEN,
|
||||||
self.get_current_tick())
|
self.get_current_tick(), position)
|
||||||
elif state == State.MINIMUM_PROFIT:
|
elif state == State.MINIMUM_PROFIT:
|
||||||
event = Event(EventKind.REACHED_MIN_PROFIT,
|
event = Event(EventKind.REACHED_MIN_PROFIT,
|
||||||
self.get_current_tick())
|
self.get_current_tick(), position)
|
||||||
elif state == State.PROFIT:
|
elif state == State.PROFIT:
|
||||||
event = Event(EventKind.REACHED_GOOD_PROFIT,
|
event = Event(EventKind.REACHED_GOOD_PROFIT,
|
||||||
self.get_current_tick())
|
self.get_current_tick(), position)
|
||||||
|
|
||||||
self.events.append(event)
|
self.events.append(event)
|
||||||
eh.call(event, self)
|
eh.call(event, self)
|
||||||
@ -216,7 +218,12 @@ def on_min_profit(event: Event, status: Status):
|
|||||||
if status.stop_percentage < pos_pl_perc:
|
if status.stop_percentage < pos_pl_perc:
|
||||||
status.printer.print_next_line("I WOULD SELL NOW!")
|
status.printer.print_next_line("I WOULD SELL NOW!")
|
||||||
else:
|
else:
|
||||||
playsound("sounds/letsgo.mp3")
|
playsound("sounds/1up.mp3")
|
||||||
|
|
||||||
|
|
||||||
|
@eh.on_event(EventKind.REACHED_MAX_LOSS)
|
||||||
|
def on_critical(event: Event, status: Status):
|
||||||
|
playsound("sounds/gameover.mp3")
|
||||||
|
|
||||||
|
|
||||||
def net_pl_percentage(perc: float, reference_fee_perc: float):
|
def net_pl_percentage(perc: float, reference_fee_perc: float):
|
||||||
@ -230,6 +237,7 @@ async def main(screen: Screen):
|
|||||||
|
|
||||||
printer = Printer(screen)
|
printer = Printer(screen)
|
||||||
status = Status(20, symbol, printer)
|
status = Status(20, symbol, printer)
|
||||||
|
balance = await get_usd_balance()
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
positions = [p for p in await bfx.get_active_position() if p.symbol == status.symbol]
|
positions = [p for p in await bfx.get_active_position() if p.symbol == status.symbol]
|
||||||
@ -238,12 +246,13 @@ async def main(screen: Screen):
|
|||||||
last_price = await status.last_price()
|
last_price = await status.last_price()
|
||||||
|
|
||||||
screen.clear()
|
screen.clear()
|
||||||
printer.print_next_line("Current {} price: {} | Current tick ({} sec): {}".format(symbol,
|
printer.print_next_line("Balance: ${} | Current {} price: {} | Current tick ({} sec): {}".format(colored_float(balance, "white"),
|
||||||
colored_float(
|
symbol,
|
||||||
last_price, "white", attrs=["bold"]),
|
colored_float(
|
||||||
status.ticker.seconds,
|
last_price, "white", attrs=["bold"]),
|
||||||
status.get_current_tick(),
|
status.ticker.seconds,
|
||||||
))
|
status.get_current_tick(),
|
||||||
|
))
|
||||||
|
|
||||||
if positions:
|
if positions:
|
||||||
printer.print_next_line("")
|
printer.print_next_line("")
|
||||||
@ -255,15 +264,15 @@ async def main(screen: Screen):
|
|||||||
p.profit_loss_percentage, TAKER_FEE)
|
p.profit_loss_percentage, TAKER_FEE)
|
||||||
|
|
||||||
if plfees_percentage > GOOD_PROFIT_PERC:
|
if plfees_percentage > GOOD_PROFIT_PERC:
|
||||||
status.set_state(State.PROFIT)
|
status.set_state(State.PROFIT, p)
|
||||||
elif plfees_percentage >= MIN_PROFIT_PERC and plfees_percentage < GOOD_PROFIT_PERC:
|
elif plfees_percentage >= MIN_PROFIT_PERC and plfees_percentage < GOOD_PROFIT_PERC:
|
||||||
status.set_state(State.MINIMUM_PROFIT)
|
status.set_state(State.MINIMUM_PROFIT, p)
|
||||||
elif plfees_percentage >= 0.0 and plfees_percentage < MIN_PROFIT_PERC:
|
elif plfees_percentage >= 0.0 and plfees_percentage < MIN_PROFIT_PERC:
|
||||||
status.set_state(State.BREAK_EVEN)
|
status.set_state(State.BREAK_EVEN, p)
|
||||||
elif plfees_percentage < 0.0 and plfees_percentage > MAX_LOSS_PERC:
|
elif plfees_percentage < 0.0 and plfees_percentage > MAX_LOSS_PERC:
|
||||||
status.set_state(State.LOSS)
|
status.set_state(State.LOSS, p)
|
||||||
else:
|
else:
|
||||||
status.set_state(State.CRITICAL)
|
status.set_state(State.CRITICAL, p)
|
||||||
|
|
||||||
status_color = status.get_current_state().color()
|
status_color = status.get_current_state().color()
|
||||||
|
|
||||||
@ -273,11 +282,11 @@ async def main(screen: Screen):
|
|||||||
if plfees_percentage > max_perc:
|
if plfees_percentage > max_perc:
|
||||||
max_perc = plfees_percentage
|
max_perc = plfees_percentage
|
||||||
status.add_event(Event(EventKind.NEW_MAXIMUM,
|
status.add_event(Event(EventKind.NEW_MAXIMUM,
|
||||||
status.get_current_tick()))
|
status.get_current_tick(), p))
|
||||||
if plfees_percentage < min_perc:
|
if plfees_percentage < min_perc:
|
||||||
min_perc = plfees_percentage
|
min_perc = plfees_percentage
|
||||||
status.add_event(Event(EventKind.NEW_MINIMUM,
|
status.add_event(Event(EventKind.NEW_MINIMUM,
|
||||||
status.get_current_tick()))
|
status.get_current_tick(), p))
|
||||||
|
|
||||||
min_perc_colored = colored_percentage(
|
min_perc_colored = colored_percentage(
|
||||||
min_perc, "red") if min_perc < 0.0 else colored_percentage(min_perc, "green")
|
min_perc, "red") if min_perc < 0.0 else colored_percentage(min_perc, "green")
|
||||||
@ -349,6 +358,21 @@ async def get_current_price(symbol):
|
|||||||
return tickers[6]
|
return tickers[6]
|
||||||
|
|
||||||
|
|
||||||
|
async def get_usd_balance():
|
||||||
|
balance = 0.0
|
||||||
|
|
||||||
|
wallets = await bfx.get_wallets()
|
||||||
|
|
||||||
|
for w in wallets:
|
||||||
|
if w.currency == "USD":
|
||||||
|
balance += w.balance
|
||||||
|
else:
|
||||||
|
current_price = await get_current_price(f"t{w.currency}USD")
|
||||||
|
balance += current_price * w.balance
|
||||||
|
|
||||||
|
return balance
|
||||||
|
|
||||||
|
|
||||||
def clear():
|
def clear():
|
||||||
system("clear")
|
system("clear")
|
||||||
|
|
||||||
|
BIN
sounds/coin.mp3
BIN
sounds/coin.mp3
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user