From 0b245b9998bfdad2b8995c148f1a276a2a873026 Mon Sep 17 00:00:00 2001 From: ghubstan <36207203+ghubstan@users.noreply.github.com> Date: Sat, 25 Jun 2022 15:46:47 -0300 Subject: [PATCH] Show closed trades since midnight today Don't show entire trade history at end of bot run. Tweak some log statements. --- .../src/main/java/bisq/bots/AbstractBot.java | 14 ++++++++++++++ .../src/main/java/bisq/bots/BotUtils.java | 11 +++++++++++ .../bisq/bots/RegtestTradePaymentSimulator.java | 7 ++++--- .../bisq/bots/TakeBestPricedOfferToBuyBsq.java | 6 +++--- .../bisq/bots/TakeBestPricedOfferToBuyBtc.java | 10 ++++++---- .../bisq/bots/TakeBestPricedOfferToSellBsq.java | 6 +++--- .../bisq/bots/TakeBestPricedOfferToSellBtc.java | 10 ++++++---- 7 files changed, 47 insertions(+), 17 deletions(-) diff --git a/java-examples/src/main/java/bisq/bots/AbstractBot.java b/java-examples/src/main/java/bisq/bots/AbstractBot.java index edeb9f0..4d27082 100644 --- a/java-examples/src/main/java/bisq/bots/AbstractBot.java +++ b/java-examples/src/main/java/bisq/bots/AbstractBot.java @@ -31,6 +31,7 @@ import java.util.*; import java.util.function.BiConsumer; import java.util.function.Predicate; import java.util.function.Supplier; +import java.util.stream.Collectors; import static bisq.bots.BotUtils.*; import static bisq.bots.table.builder.TableType.BSQ_BALANCE_TBL; @@ -525,6 +526,19 @@ public abstract class AbstractBot { BotUtils.printTradesSummary(category, trades); } + /** + * Print list of today's trade summaries to stdout. + * + * @param category category OPEN | CLOSED | FAILED + */ + protected void printTradesSummaryForToday(Category category) { + var midnightToday = BotUtils.midnightToday.get(); + var trades = getTrades(category).stream() + .filter(t -> t.getDate() >= midnightToday) + .collect(Collectors.toList()); + BotUtils.printTradesSummary(category, trades); + } + /** * Send a "payment started" message to the BTC seller. * diff --git a/java-examples/src/main/java/bisq/bots/BotUtils.java b/java-examples/src/main/java/bisq/bots/BotUtils.java index 89d43af..7bc5f3e 100644 --- a/java-examples/src/main/java/bisq/bots/BotUtils.java +++ b/java-examples/src/main/java/bisq/bots/BotUtils.java @@ -55,6 +55,17 @@ public class BotUtils { public static final Predicate isXmr = (currencyCode) -> currencyCode.equalsIgnoreCase("XMR"); public static final Predicate isAltcoin = (currencyCode) -> isBsq.test(currencyCode) || isXmr.test(currencyCode); + /** + * Return a timestamp for midnight, today. + */ + public static final Supplier midnightToday = () -> { + Calendar c = new GregorianCalendar(); + c.set(Calendar.HOUR_OF_DAY, 0); + c.set(Calendar.MINUTE, 0); + c.set(Calendar.SECOND, 0); + return c.getTimeInMillis(); + }; + /** * Return price precision of 8 for altcoin, 4 for fiat. */ diff --git a/java-examples/src/main/java/bisq/bots/RegtestTradePaymentSimulator.java b/java-examples/src/main/java/bisq/bots/RegtestTradePaymentSimulator.java index 7d2d8c8..f117ea9 100644 --- a/java-examples/src/main/java/bisq/bots/RegtestTradePaymentSimulator.java +++ b/java-examples/src/main/java/bisq/bots/RegtestTradePaymentSimulator.java @@ -114,8 +114,9 @@ public class RegtestTradePaymentSimulator extends AbstractBot { log.warn("##############################################################################"); sleep(pollingInterval); - log.info("Trade is completed, printing all closed trades and exiting {}.", this.getClass().getSimpleName()); - printTradesSummary(CLOSED); + log.info("Trade is completed. Here are today's completed trades:"); + printTradesSummaryForToday(CLOSED); + log.info("Closing {}'s gRPC channel.", this.getClass().getSimpleName()); super.grpcStubs.close(); } @@ -166,7 +167,7 @@ public class RegtestTradePaymentSimulator extends AbstractBot { } private void sendPaymentReceivedConfirmationMessage() { - log.info("You confirm {} payment was received to you wallet before" + log.info("You confirm {} payment was received to your wallet before" + " sending confirmpaymentreceived to the BTC buyer.", currencyCode); sleep(pollingInterval); diff --git a/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToBuyBsq.java b/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToBuyBsq.java index f28cfa3..b93ef4b 100644 --- a/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToBuyBsq.java +++ b/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToBuyBsq.java @@ -169,9 +169,9 @@ public class TakeBestPricedOfferToBuyBsq extends AbstractBot { private void printBotConfiguration() { var configsByLabel = new LinkedHashMap(); - configsByLabel.put("Bot OS:", getOSName() + " " + getOSVersion()); + configsByLabel.put("Bot OS:", "\t" + getOSName() + " " + getOSVersion()); var network = getNetwork(); - configsByLabel.put("BTC Network:", network); + configsByLabel.put("BTC Network:", "\t" + network); var isMainnet = network.equalsIgnoreCase("mainnet"); var mainnet30DayAvgBsqPrice = isMainnet ? get30DayAvgBsqPriceInBtc() : null; configsByLabel.put("My Payment Account:", ""); @@ -194,7 +194,7 @@ public class TakeBestPricedOfferToBuyBsq extends AbstractBot { } else { configsByLabel.put("\tPreferred Trading Peers:", "N/A"); } - configsByLabel.put("Bot Polling Interval:", pollingInterval + " ms"); + configsByLabel.put("Bot Polling Interval:", "\t" + pollingInterval + " ms"); log.info(toTable.apply("Bot Configuration", configsByLabel)); } diff --git a/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToBuyBtc.java b/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToBuyBtc.java index 030c9ae..b5951b0 100644 --- a/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToBuyBtc.java +++ b/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToBuyBtc.java @@ -261,7 +261,9 @@ public class TakeBestPricedOfferToBuyBtc extends AbstractBot { isShutdown = true; if (canSimulatePaymentSteps) { - log.info("Shutting down bot after successful trade completion. API daemon will not be shut down."); + log.info("Shutting down bot after {} successful simulated trades." + + " API daemon will not be shut down.", + numOffersTaken); sleep(2_000); } else { log.info("Shutting down API daemon and bot after taking {} offers." @@ -305,9 +307,9 @@ public class TakeBestPricedOfferToBuyBtc extends AbstractBot { private void printBotConfiguration() { var configsByLabel = new LinkedHashMap(); - configsByLabel.put("Bot OS:", getOSName() + " " + getOSVersion()); + configsByLabel.put("Bot OS:", "\t" + getOSName() + " " + getOSVersion()); var network = getNetwork(); - configsByLabel.put("BTC Network:", network); + configsByLabel.put("BTC Network:", "\t" + network); configsByLabel.put("My Payment Account:", ""); configsByLabel.put("\tPayment Account Id:", paymentAccount.getId()); configsByLabel.put("\tAccount Name:", paymentAccount.getAccountName()); @@ -323,7 +325,7 @@ public class TakeBestPricedOfferToBuyBtc extends AbstractBot { } else { configsByLabel.put("\tPreferred Trading Peers:", "N/A"); } - configsByLabel.put("Bot Polling Interval:", pollingInterval + " ms"); + configsByLabel.put("Bot Polling Interval:", "\t" + pollingInterval + " ms"); log.info(toTable.apply("Bot Configuration", configsByLabel)); } diff --git a/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToSellBsq.java b/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToSellBsq.java index 15a8ec7..2b13346 100644 --- a/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToSellBsq.java +++ b/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToSellBsq.java @@ -169,9 +169,9 @@ public class TakeBestPricedOfferToSellBsq extends AbstractBot { private void printBotConfiguration() { var configsByLabel = new LinkedHashMap(); - configsByLabel.put("Bot OS:", getOSName() + " " + getOSVersion()); + configsByLabel.put("Bot OS:", "\t" + getOSName() + " " + getOSVersion()); var network = getNetwork(); - configsByLabel.put("BTC Network:", network); + configsByLabel.put("BTC Network:", "\t" + network); var isMainnet = network.equalsIgnoreCase("mainnet"); var mainnet30DayAvgBsqPrice = isMainnet ? get30DayAvgBsqPriceInBtc() : null; configsByLabel.put("My Payment Account:", ""); @@ -194,7 +194,7 @@ public class TakeBestPricedOfferToSellBsq extends AbstractBot { } else { configsByLabel.put("\tPreferred Trading Peers:", "N/A"); } - configsByLabel.put("Bot Polling Interval:", pollingInterval + " ms"); + configsByLabel.put("Bot Polling Interval:", "\t" + pollingInterval + " ms"); log.info(toTable.apply("Bot Configuration", configsByLabel)); } diff --git a/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToSellBtc.java b/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToSellBtc.java index c34a5ec..e67b7ad 100644 --- a/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToSellBtc.java +++ b/java-examples/src/main/java/bisq/bots/TakeBestPricedOfferToSellBtc.java @@ -261,7 +261,9 @@ public class TakeBestPricedOfferToSellBtc extends AbstractBot { isShutdown = true; if (canSimulatePaymentSteps) { - log.info("Shutting down bot after successful trade completion. API daemon will not be shut down."); + log.info("Shutting down bot after {} successful simulated trades." + + " API daemon will not be shut down.", + numOffersTaken); sleep(2_000); } else { log.info("Shutting down API daemon and bot after taking {} offers." @@ -305,9 +307,9 @@ public class TakeBestPricedOfferToSellBtc extends AbstractBot { private void printBotConfiguration() { var configsByLabel = new LinkedHashMap(); - configsByLabel.put("Bot OS:", getOSName() + " " + getOSVersion()); + configsByLabel.put("Bot OS:", "\t" + getOSName() + " " + getOSVersion()); var network = getNetwork(); - configsByLabel.put("BTC Network:", network); + configsByLabel.put("BTC Network:", "\t" + network); configsByLabel.put("My Payment Account:", ""); configsByLabel.put("\tPayment Account Id:", paymentAccount.getId()); configsByLabel.put("\tAccount Name:", paymentAccount.getAccountName()); @@ -323,7 +325,7 @@ public class TakeBestPricedOfferToSellBtc extends AbstractBot { } else { configsByLabel.put("\tPreferred Trading Peers:", "N/A"); } - configsByLabel.put("Bot Polling Interval:", pollingInterval + " ms"); + configsByLabel.put("Bot Polling Interval:", "\t" + pollingInterval + " ms"); log.info(toTable.apply("Bot Configuration", configsByLabel)); }