1- // Create test order flag. See more: https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md#test-new-order-trade
2- #define TEST_ORDER_CREATION_MODE
1+ #define TEST_ORDER_CREATION_MODE // Test order flag. See details: https://github.com/binance/binance-spot-api-docs/blob/master/rest-api.md#test-new-order-trade
32
43using System ;
54using System . Collections . Generic ;
65using System . Threading . Tasks ;
7-
8- using BinanceExchange . API . Client ;
9- using BinanceExchange . API . Enums ;
10- using BinanceExchange . API . Models . Request ;
11- using BinanceExchange . API . Models . Response ;
12- using BinanceExchange . API . Websockets ;
13-
6+ using Binance . Net . Enums ;
7+ using Binance . Net . Interfaces ;
8+ using Binance . Net . Objects . Spot . SpotData ;
9+ using CryptoExchange . Net . Objects ;
1410using NLog ;
1511
1612
@@ -21,8 +17,8 @@ namespace BinanceBot.Market
2117 /// </summary>
2218 public class MarketMakerBot : BaseMarketBot < NaiveMarketMakerStrategy >
2319 {
24- private readonly IBinanceRestClient _binanceRestClient ;
25- private readonly IBinanceWebSocketClient _webSocketClient ;
20+ private readonly IBinanceClient _binanceRestClient ;
21+ private readonly IBinanceSocketClient _webSocketClient ;
2622 private readonly MarketDepth _marketDepth ;
2723
2824
@@ -38,8 +34,8 @@ public class MarketMakerBot : BaseMarketBot<NaiveMarketMakerStrategy>
3834 public MarketMakerBot (
3935 string symbol ,
4036 NaiveMarketMakerStrategy marketStrategy ,
41- IBinanceRestClient binanceRestClient ,
42- IBinanceWebSocketClient webSocketClient ,
37+ IBinanceClient binanceRestClient ,
38+ IBinanceSocketClient webSocketClient ,
4339 Logger logger ) :
4440 base ( symbol , marketStrategy , logger )
4541 {
@@ -53,43 +49,60 @@ public MarketMakerBot(
5349 public override async Task ValidateConnectionAsync ( )
5450 {
5551 Logger . Info ( "Testing connection..." ) ;
56- IResponse testConnectResponse = await _binanceRestClient . TestConnectivityAsync ( ) ;
57- if ( testConnectResponse != null )
52+
53+ CallResult < long > testConnectResponse = await _binanceRestClient . PingAsync ( ) . ConfigureAwait ( false ) ;
54+
55+ if ( testConnectResponse . Error != null )
56+ Logger . Error ( testConnectResponse . Error . Message ) ;
57+ else
5858 {
59- ServerTimeResponse serverTimeResponse = await _binanceRestClient . GetServerTimeAsync ( ) ;
60- Logger . Info ( $ "Connection was established successfully. Approximate ping time: { DateTime . UtcNow . Subtract ( serverTimeResponse . ServerTime ) . TotalMilliseconds : F0} ms") ;
59+ DateTime serverTimeResponse = new DateTime ( 1970 , 1 , 1 , 0 , 0 , 0 , DateTimeKind . Utc )
60+ . AddMilliseconds ( testConnectResponse . Data / 10.0 )
61+ . ToLocalTime ( ) ;
62+
63+ Logger . Info ( $ "Connection was established successfully. Approximate ping time: { DateTime . UtcNow . Subtract ( serverTimeResponse ) . TotalMilliseconds : F0} ms") ;
6164 }
6265 }
6366
6467
65- public override async Task < IEnumerable < OrderResponse > > GetOpenedOrdersAsync ( string symbol )
68+ public override async Task < IEnumerable < BinanceOrder > > GetOpenedOrdersAsync ( string symbol )
6669 {
6770 if ( string . IsNullOrEmpty ( symbol ) )
6871 throw new ArgumentException ( "Invalid symbol value" , nameof ( symbol ) ) ;
6972
70- return await _binanceRestClient . GetCurrentOpenOrdersAsync ( new CurrentOpenOrdersRequest { Symbol = symbol } ) ;
73+ var response = await _binanceRestClient . Spot . Order . GetOpenOrdersAsync ( symbol ) . ConfigureAwait ( false ) ;
74+ return response . Data ;
7175 }
7276
7377
74- public override async Task CancelOrdersAsync ( IEnumerable < OrderResponse > orders )
78+ public override async Task CancelOrdersAsync ( IEnumerable < BinanceOrder > orders )
7579 {
7680 if ( orders == null )
7781 throw new ArgumentNullException ( nameof ( orders ) ) ;
7882
79- foreach ( OrderResponse order in orders )
80- await _binanceRestClient . CancelOrderAsync ( new CancelOrderRequest { OrderId = order . OrderId , OriginalClientOrderId = order . ClientOrderId , Symbol = order . Symbol } ) ;
83+ foreach ( var order in orders )
84+ await _binanceRestClient . Spot . Order . CancelOrderAsync ( orderId : order . OrderId , origClientOrderId : order . ClientOrderId , symbol : order . Symbol ) . ConfigureAwait ( false ) ;
8185 }
8286
8387
84- public override async Task < BaseCreateOrderResponse > CreateOrderAsync ( CreateOrderRequest order )
88+ public override async Task < BinancePlacedOrder > CreateOrderAsync ( CreateOrderRequest order )
8589 {
8690
8791#if TEST_ORDER_CREATION_MODE
88- EmptyResponse response = await _binanceRestClient . CreateTestOrderAsync ( order ) ;
89- return response != null ? new AcknowledgeCreateOrderResponse ( ) : null ;
92+ WebCallResult < BinancePlacedOrder > response = await _binanceRestClient . Spot . Order . PlaceTestOrderAsync (
93+ order . Symbol , order . Side , order . Type , order . Quantity ,
94+ newClientOrderId : order . NewClientOrderId ,
95+ receiveWindow : order . RecvWindow )
96+ . ConfigureAwait ( false ) ;
9097#else
91- return await _binanceRestClient . CreateOrderAsync ( order ) ;
98+ WebCallResult < BinancePlacedOrder > response = await _binanceRestClient . Spot . Order . PlaceOrderAsync (
99+ order . Symbol , order . Side , order . Type , order . Quantity ,
100+ newClientOrderId : order . NewClientOrderId ,
101+ receiveWindow : order . RecvWindow )
102+ . ConfigureAwait ( false ) ;
92103#endif
104+
105+ return response . Data ;
93106 }
94107
95108
@@ -122,7 +135,7 @@ private async Task OnMarketBestPairChanged(object sender, MarketBestPairChangedE
122135 var openOrdersResponse = await GetOpenedOrdersAsync ( Symbol ) ;
123136
124137 // cancel already opened orders (if necessary)
125- await CancelOrdersAsync ( openOrdersResponse ) ;
138+ if ( openOrdersResponse != null ) await CancelOrdersAsync ( openOrdersResponse ) ;
126139
127140 // find new market position
128141 Quote q = MarketStrategy . Process ( e . MarketBestPair ) ;
@@ -136,7 +149,7 @@ private async Task OnMarketBestPairChanged(object sender, MarketBestPairChangedE
136149 Price = q . Price ,
137150 Side = q . Direction ,
138151 Type = OrderType . Limit ,
139- TimeInForce = TimeInForce . GTC // 'Good Till Cancelled' marketStrategy
152+ TimeInForce = TimeInForce . GoodTillCancel // 'Good Till Cancelled' marketStrategy
140153 } ;
141154
142155 await CreateOrderAsync ( newOrderRequest ) ;
0 commit comments