Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update default_strategy.py #564

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 30 additions & 27 deletions binance_trade_bot/strategies/default_strategy.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import random
import sys
from datetime import datetime
import concurrent.futures

from binance_trade_bot.auto_trader import AutoTrader

Expand All @@ -14,33 +15,34 @@ def scout(self):
"""
Scout for potential jumps from the current coin to another coin
"""
current_coin = self.db.get_current_coin()
# Display on the console, the current coin+Bridge, so users can see *some* activity and not think the bot has
# stopped. Not logging though to reduce log size.
print(
f"{datetime.now()} - CONSOLE - INFO - I am scouting the best trades. "
f"Current coin: {current_coin + self.config.BRIDGE} ",
end="\r",
)
with concurrent.futures.ThreadPoolExecutor() as executor:
current_coin = self.db.get_current_coin()
print(
f"{datetime.now()} - CONSOLA - INFO - Estoy buscando los mejores intercambios. "
f"Moneda actual: {current_coin + self.config.BRIDGE} ",
end="\r",
)

future_price = executor.submit(self.manager.get_ticker_price, current_coin + self.config.BRIDGE)
current_coin_price = future_price.result()

if current_coin_price is None:
self.logger.info(f"Skipping scouting... current coin {current_coin + self.config.BRIDGE} not found")
return

current_coin_price = self.manager.get_ticker_price(current_coin + self.config.BRIDGE)

if current_coin_price is None:
self.logger.info(f"Skipping scouting... current coin {current_coin + self.config.BRIDGE} not found")
return

self._jump_to_best_coin(current_coin, current_coin_price)
self._jump_to_best_coin(current_coin, current_coin_price)

def bridge_scout(self):
current_coin = self.db.get_current_coin()
if self.manager.get_currency_balance(current_coin.symbol) > self.manager.get_min_notional(
current_coin.symbol, self.config.BRIDGE.symbol
):
# Only scout if we don't have enough of the current coin
return
new_coin = super().bridge_scout()
if new_coin is not None:
self.db.set_current_coin(new_coin)
with concurrent.futures.ThreadPoolExecutor() as executor:
current_coin = self.db.get_current_coin()
if self.manager.get_currency_balance(current_coin.symbol) > self.manager.get_min_notional(
current_coin.symbol, self.config.BRIDGE.symbol
):
return
new_coin = super().bridge_scout()
if new_coin is not None:
future_set_coin = executor.submit(self.db.set_current_coin, new_coin)
future_set_coin.result() # Wait for the operation to complete.

def initialize_current_coin(self):
"""
Expand All @@ -51,13 +53,14 @@ def initialize_current_coin(self):
if not current_coin_symbol:
current_coin_symbol = random.choice(self.config.SUPPORTED_COIN_LIST)

self.logger.info(f"Setting initial coin to {current_coin_symbol}")
self.logger.info(f"Estableciendo moneda inicial en {current_coin_symbol}")

if current_coin_symbol not in self.config.SUPPORTED_COIN_LIST:
sys.exit("***\nERROR!\nSince there is no backup file, a proper coin name must be provided at init\n***")
self.db.set_current_coin(current_coin_symbol)
with concurrent.futures.ThreadPoolExecutor() as executor:
future_set_initial_coin = executor.submit(self.db.set_current_coin, current_coin_symbol)
future_set_initial_coin.result() # Wait for the operation to complete.

# if we don't have a configuration, we selected a coin at random... Buy it so we can start trading.
if self.config.CURRENT_COIN_SYMBOL == "":
current_coin = self.db.get_current_coin()
self.logger.info(f"Purchasing {current_coin} to begin trading")
Expand Down