diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedAsset.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedAsset.cs
index 00dd3018..e30f1135 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedAsset.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedAsset.cs
@@ -1,10 +1,12 @@
using System;
+using System.Diagnostics;
namespace CryptoExchange.Net.SharedApis
{
///
/// Asset info
///
+ [DebuggerDisplay("{Name,nq} - {Networks.Length} network(s)")]
public record SharedAsset
{
///
@@ -32,6 +34,7 @@ namespace CryptoExchange.Net.SharedApis
///
/// Asset network info
///
+ [DebuggerDisplay("{Name,nq}")]
public record SharedAssetNetwork
{
///
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedBalance.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedBalance.cs
index c3fb93d3..2506e76b 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedBalance.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedBalance.cs
@@ -1,8 +1,11 @@
-namespace CryptoExchange.Net.SharedApis
+using System.Diagnostics;
+
+namespace CryptoExchange.Net.SharedApis
{
///
/// Balance info
///
+ [DebuggerDisplay("{Available} {Asset, nq}")]
public record SharedBalance
{
///
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedBookTicker.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedBookTicker.cs
index 7a67a10f..de7901ae 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedBookTicker.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedBookTicker.cs
@@ -1,8 +1,11 @@
-namespace CryptoExchange.Net.SharedApis
+using System.Diagnostics;
+
+namespace CryptoExchange.Net.SharedApis
{
///
/// Book ticker
///
+ [DebuggerDisplay("{Symbol,nq} - {BestBidPrice} / {BestAskPrice}")]
public record SharedBookTicker : SharedSymbolModel
{
///
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedDeposit.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedDeposit.cs
index c0232d52..42f41fb9 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedDeposit.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedDeposit.cs
@@ -1,10 +1,12 @@
using System;
+using System.Diagnostics;
namespace CryptoExchange.Net.SharedApis
{
///
/// Deposit info
///
+ [DebuggerDisplay("[{Timestamp}] {Quantity} {Asset,nq}")]
public record SharedDeposit
{
///
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedDepositAddress.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedDepositAddress.cs
index 871d23f6..3baf0f62 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedDepositAddress.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedDepositAddress.cs
@@ -1,8 +1,11 @@
-namespace CryptoExchange.Net.SharedApis
+using System.Diagnostics;
+
+namespace CryptoExchange.Net.SharedApis
{
///
/// Deposit address info
///
+ [DebuggerDisplay("{Asset,nq} - {Address,nq}")]
public record SharedDepositAddress
{
///
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFee.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFee.cs
index 7f2e24da..38d687d2 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFee.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFee.cs
@@ -1,8 +1,11 @@
-namespace CryptoExchange.Net.SharedApis
+using System.Diagnostics;
+
+namespace CryptoExchange.Net.SharedApis
{
///
/// Trading fee info
///
+ [DebuggerDisplay("{MakerFee} / {TakerFee}")]
public record SharedFee
{
///
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFundingRate.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFundingRate.cs
index 34547360..ca7a5408 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFundingRate.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFundingRate.cs
@@ -1,10 +1,12 @@
using System;
+using System.Diagnostics;
namespace CryptoExchange.Net.SharedApis
{
///
/// Funding rate
///
+ [DebuggerDisplay("[{Timestamp}] {FundingRate}")]
public record SharedFundingRate
{
///
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesKline.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesKline.cs
index af2db3b7..b9822c09 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesKline.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesKline.cs
@@ -1,10 +1,12 @@
using System;
+using System.Diagnostics;
namespace CryptoExchange.Net.SharedApis
{
///
/// Mark/index price kline
///
+ [DebuggerDisplay("[{OpenTime}] O: {OpenPrice} H: {HighPrice} L: {LowPrice} C: {ClosePrice}")]
public record SharedFuturesKline : SharedSymbolModel
{
///
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesOrder.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesOrder.cs
index 38afc311..e2e8e9cd 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesOrder.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesOrder.cs
@@ -1,12 +1,19 @@
using System;
+using System.Diagnostics;
namespace CryptoExchange.Net.SharedApis
{
///
/// Futures order info
///
+ [DebuggerDisplay("{DebugView,nq}")]
public record SharedFuturesOrder : SharedSymbolModel
{
+ private string DebugView =>
+ $"[{CreateTime}] {OrderId} {(PositionSide != null ? $"{PositionSide} " : "")}{Symbol} - " +
+ $"{OrderType} {Side} {OrderQuantity}{(OrderPrice != null ? " @ " + OrderPrice : "")}, " +
+ $"{Status}{(QuantityFilled != null && Status != SharedOrderStatus.Canceled ? $" {QuantityFilled}" : "")}{(AveragePrice != null ? " @ " + AveragePrice : "")}";
+
///
/// Id of the order
///
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesSymbol.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesSymbol.cs
index 7f24acd8..a8718cf2 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesSymbol.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesSymbol.cs
@@ -1,12 +1,17 @@
using System;
+using System.Diagnostics;
+using System.Drawing;
namespace CryptoExchange.Net.SharedApis
{
///
/// Futures symbol info
///
+ [DebuggerDisplay("{DebugView,nq}")]
public record SharedFuturesSymbol : SharedSpotSymbol
{
+ private string DebugView => $"{TradingMode} {Name}{(DeliveryTime != null ? $" Delivery: {DeliveryTime:yyyy-MM-dd}": "")}";
+
///
/// The size of a single contract
///
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesTicker.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesTicker.cs
index cfd69158..d569458d 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesTicker.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedFuturesTicker.cs
@@ -1,10 +1,12 @@
using System;
+using System.Diagnostics;
namespace CryptoExchange.Net.SharedApis
{
///
/// Futures ticker info
///
+ [DebuggerDisplay("{Symbol,nq} High: {HighPrice}, Low: {LowPrice}, Last: {LastPrice}, Change: {ChangePercentage}%")]
public record SharedFuturesTicker: SharedSymbolModel
{
///
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedKline.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedKline.cs
index 1101aa6e..0af19b31 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedKline.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedKline.cs
@@ -1,10 +1,12 @@
using System;
+using System.Diagnostics;
namespace CryptoExchange.Net.SharedApis
{
///
/// Kline info
///
+ [DebuggerDisplay("[{OpenTime}] O: {OpenPrice} H: {HighPrice} L: {LowPrice} C: {ClosePrice} V: {Volume}")]
public record SharedKline : SharedSymbolModel
{
///
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedPosition.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedPosition.cs
index de8c5fdd..29588d27 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedPosition.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedPosition.cs
@@ -1,10 +1,12 @@
using System;
+using System.Diagnostics;
namespace CryptoExchange.Net.SharedApis
{
///
/// Position info
///
+ [DebuggerDisplay("{Symbol,nq} {PositionSide}: {PositionSize} {AverageOpenPrice}")]
public record SharedPosition : SharedSymbolModel
{
///
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedPositionHistory.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedPositionHistory.cs
index e4f12613..94b8ccf5 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedPositionHistory.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedPositionHistory.cs
@@ -1,10 +1,12 @@
using System;
+using System.Diagnostics;
namespace CryptoExchange.Net.SharedApis
{
///
/// Position history
///
+ [DebuggerDisplay("[{Timestamp}] {Symbol,nq} {PositionSide}: {RealizedPnl}")]
public record SharedPositionHistory : SharedSymbolModel
{
///
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotOrder.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotOrder.cs
index 577232f3..afb41850 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotOrder.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotOrder.cs
@@ -1,12 +1,19 @@
using System;
+using System.Diagnostics;
namespace CryptoExchange.Net.SharedApis
{
///
/// Spot order info
///
+ [DebuggerDisplay("{DebugView,nq}")]
public record SharedSpotOrder : SharedSymbolModel
{
+ private string DebugView =>
+ $"[{CreateTime}] {OrderId} {Symbol} - " +
+ $"{OrderType} {Side} {OrderQuantity}{(OrderPrice != null ? " @ " + OrderPrice : "")}, " +
+ $"{Status}{(QuantityFilled != null && Status != SharedOrderStatus.Canceled ? $" {QuantityFilled}" : "")}{(AveragePrice != null ? " @ " + AveragePrice : "")}";
+
///
/// The id of the order
///
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotSymbol.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotSymbol.cs
index ef8a9bda..2233f7b7 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotSymbol.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotSymbol.cs
@@ -1,8 +1,11 @@
-namespace CryptoExchange.Net.SharedApis
+using System.Diagnostics;
+
+namespace CryptoExchange.Net.SharedApis
{
///
/// Symbol info
///
+ [DebuggerDisplay("{TradingMode} {Name,nq}")]
public record SharedSpotSymbol
{
///
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotTicker.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotTicker.cs
index c19ee013..35ab1dee 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotTicker.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedSpotTicker.cs
@@ -1,8 +1,11 @@
-namespace CryptoExchange.Net.SharedApis
+using System.Diagnostics;
+
+namespace CryptoExchange.Net.SharedApis
{
///
/// Ticker info
///
+ [DebuggerDisplay("{Symbol,nq} High: {HighPrice}, Low: {LowPrice}, Last: {LastPrice}, Change: {ChangePercentage}%")]
public record SharedSpotTicker: SharedSymbolModel
{
///
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedTrade.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedTrade.cs
index 008e38fa..aa7508ef 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedTrade.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedTrade.cs
@@ -1,10 +1,12 @@
using System;
+using System.Diagnostics;
namespace CryptoExchange.Net.SharedApis
{
///
/// Public trade info
///
+ [DebuggerDisplay("[{Timestamp}] {Symbol,nq} {Side.ToString(),nq} {Quantity} @ {Price}")]
public record SharedTrade : SharedSymbolModel
{
///
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedUserTrade.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedUserTrade.cs
index b3b0fb08..86ed621e 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedUserTrade.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedUserTrade.cs
@@ -1,10 +1,12 @@
using System;
+using System.Diagnostics;
namespace CryptoExchange.Net.SharedApis
{
///
/// A user trade
///
+ [DebuggerDisplay("[{Timestamp}] {Id,nq} {Symbol,nq} {Side.ToString(),nq} {Quantity} @ {Price}")]
public record SharedUserTrade : SharedSymbolModel
{
///
diff --git a/CryptoExchange.Net/SharedApis/ResponseModels/SharedWithdrawal.cs b/CryptoExchange.Net/SharedApis/ResponseModels/SharedWithdrawal.cs
index ec9aad7d..4add88bd 100644
--- a/CryptoExchange.Net/SharedApis/ResponseModels/SharedWithdrawal.cs
+++ b/CryptoExchange.Net/SharedApis/ResponseModels/SharedWithdrawal.cs
@@ -1,10 +1,12 @@
using System;
+using System.Diagnostics;
namespace CryptoExchange.Net.SharedApis
{
///
/// A withdrawal record
///
+ [DebuggerDisplay("[{Timestamp}] {Quantity} {Asset,nq}")]
public record SharedWithdrawal
{
///
diff --git a/CryptoExchange.Net/SharedApis/SharedQuantity.cs b/CryptoExchange.Net/SharedApis/SharedQuantity.cs
index 0b5f36da..67a1660c 100644
--- a/CryptoExchange.Net/SharedApis/SharedQuantity.cs
+++ b/CryptoExchange.Net/SharedApis/SharedQuantity.cs
@@ -1,4 +1,5 @@
using CryptoExchange.Net.Converters.SystemTextJson;
+using System.Text;
using System.Text.Json.Serialization;
namespace CryptoExchange.Net.SharedApis
@@ -35,6 +36,33 @@ namespace CryptoExchange.Net.SharedApis
QuantityInQuoteAsset = quoteAssetQuantity;
QuantityInContracts = contractQuantity;
}
+
+ ///
+ public override string ToString()
+ {
+ var sb = new StringBuilder("[");
+ if (QuantityInBaseAsset != null)
+ sb.Append($"{QuantityInBaseAsset} base");
+
+ if (QuantityInQuoteAsset != null)
+ {
+ if (sb.Length > 1)
+ sb.Append(", ");
+
+ sb.Append($"{QuantityInQuoteAsset} quote");
+ }
+
+ if (QuantityInContracts != null)
+ {
+ if (sb.Length > 1)
+ sb.Append(", ");
+
+ sb.Append($"{QuantityInContracts} contracts");
+ }
+
+ sb.Append("]");
+ return sb.ToString();
+ }
}
///
@@ -53,6 +81,9 @@ namespace CryptoExchange.Net.SharedApis
///
public SharedQuantity() : base(null, null, null) { }
+ ///
+ public override string ToString() => base.ToString();
+
///
/// Specify quantity in base asset
///
@@ -123,5 +154,8 @@ namespace CryptoExchange.Net.SharedApis
: base(baseAssetQuantity, quoteAssetQuantity, contractQuantity)
{
}
+
+ ///
+ public override string ToString() => base.ToString();
}
}