From 8ce606a8c439ed1c077a5c38b24bce95e6ea7503 Mon Sep 17 00:00:00 2001 From: Giulio De Pasquale Date: Fri, 27 Nov 2020 11:55:02 +0000 Subject: [PATCH] decorators and new mp3 --- main.py | 113 ++++++++++++++++++++++++++++++---------------- sounds/letsgo.mp3 | Bin 0 -> 29720 bytes 2 files changed, 74 insertions(+), 39 deletions(-) create mode 100644 sounds/letsgo.mp3 diff --git a/main.py b/main.py index 11a57b3..65665db 100644 --- a/main.py +++ b/main.py @@ -17,25 +17,6 @@ from playsound import playsound from asciimatics.screen import ManagedScreen, Screen import dotenv -dotenv.load() -API_KEY = dotenv.get('API_KEY', default='') -API_SECRET = dotenv.get('API_SECRET', default='') - -bfx = Client( - API_KEY=API_KEY, - API_SECRET=API_SECRET -).rest - -TAKER_FEE = 0.2 -MAKER_FEE = 0.1 - -BREAK_EVEN_PERC = TAKER_FEE -MIN_PROFIT_PERC = 0.65 -GOOD_PROFIT_PERC = MIN_PROFIT_PERC * 2.1 -MAX_LOSS_PERC = -4.0 - -TRAILING_GOOD_PROFIT_PERC = 0.2 - class Ticker(): def __init__(self, sec) -> None: @@ -63,6 +44,28 @@ class Event(): return f"{self.kind.name} @ Tick {self.tick}" +class EventHandler: + def __init__(self): + self.handlers = {} + + def call(self, event: Event): + value = event.kind.value + if value in self.handlers: + for h in self.handlers[value]: + h(event) + + def on_event(self, kind: EventKind): + value = kind.value + + def registerhandler(handler): + if value in self.handlers: + self.handlers[value].append(handler) + else: + self.handlers[value] = [handler] + return handler + return registerhandler + + class PositionStatus(): def __init__(self, position: Position) -> None: self.position: Position = position @@ -109,13 +112,14 @@ class Printer(): def set_screen(self, screen: Screen): self.screen = screen - + def has_screen_resized(self): return (self.current_width, self.current_height) != shutil.get_terminal_size() def to_current_screen_size(self): (self.current_width, self.current_height) = shutil.get_terminal_size() + class Status(): def __init__(self, tick_duration, symbol): self.ticker: Ticker = Ticker(tick_duration) @@ -146,28 +150,62 @@ class Status(): def set_state(self, state: State): if self.current_state != state: - if state == State.CRITICAL: - self.add_event( - Event(EventKind.REACHED_MAX_LOSS, self.get_current_tick())) - elif state == State.LOSS: - self.add_event( - Event(EventKind.REACHED_LOSS, self.get_current_tick())) - elif state == State.BREAK_EVEN: - self.add_event( - Event(EventKind.REACHED_BREAK_EVEN, self.get_current_tick())) - elif state == State.MINIMUM_PROFIT: - self.add_event( - Event(EventKind.REACHED_MIN_PROFIT, self.get_current_tick())) - elif state == State.PROFIT: - self.add_event( - Event(EventKind.REACHED_GOOD_PROFIT, self.get_current_tick())) + event: EventKind = None - self.current_state = state + if state == State.CRITICAL: + event = Event(EventKind.REACHED_MAX_LOSS, + self.get_current_tick()) + elif state == State.LOSS: + event = Event(EventKind.REACHED_LOSS, self.get_current_tick()) + elif state == State.BREAK_EVEN: + event = Event(EventKind.REACHED_BREAK_EVEN, + self.get_current_tick()) + elif state == State.MINIMUM_PROFIT: + event = Event(EventKind.REACHED_MIN_PROFIT, + self.get_current_tick()) + elif state == State.PROFIT: + event = Event(EventKind.REACHED_GOOD_PROFIT, + self.get_current_tick()) + + self.events.append(event) + eh.call(event) + self.current_state = state def get_current_state(self) -> State: return self.current_state +dotenv.load() +API_KEY = dotenv.get('API_KEY', default='') +API_SECRET = dotenv.get('API_SECRET', default='') + +bfx = Client( + API_KEY=API_KEY, + API_SECRET=API_SECRET +).rest +eh = EventHandler() + +TAKER_FEE = 0.2 +MAKER_FEE = 0.1 + +BREAK_EVEN_PERC = TAKER_FEE +MIN_PROFIT_PERC = 0.65 +GOOD_PROFIT_PERC = MIN_PROFIT_PERC * 2.1 +MAX_LOSS_PERC = -4.0 + +TRAILING_GOOD_PROFIT_PERC = 0.2 + + +@eh.on_event(EventKind.REACHED_GOOD_PROFIT) +def kaching(event): + playsound("sounds/coin.mp3") + + +@eh.on_event(EventKind.REACHED_MIN_PROFIT) +def kaching(event): + playsound("sounds/letsgo.mp3") + + def net_pl_percentage(perc: float, reference_fee_perc: float): return perc - reference_fee_perc @@ -260,9 +298,6 @@ async def main(screen: Screen): print_last_events(status, 10, printer) plot(status, printer) - if status.get_current_state() == State.PROFIT: - playsound("sounds/coin.mp3") - printer.reset_current_line() await status.wait() diff --git a/sounds/letsgo.mp3 b/sounds/letsgo.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..1afb097715f81ce3df2991a87f001c5193c82321 GIT binary patch literal 29720 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 literal 0 HcmV?d00001