@@ -236,16 +236,19 @@ private async Task<ExchangeOrderResult> ParseHistoryOrder(string orderId, JToken
236
236
//}
237
237
// }
238
238
239
- ExchangeOrderResult orderResult = new ExchangeOrderResult { OrderId = orderId } ;
240
- orderResult . Result = ExchangeAPIOrderResult . Filled ;
241
- orderResult . Message = "" ;
242
- orderResult . MarketSymbol = order [ "pair" ] . ToStringInvariant ( ) ;
243
- orderResult . IsBuy = ( order [ "type" ] . ToStringInvariant ( ) == "buy" ) ;
244
- orderResult . Amount = order [ "vol" ] . ConvertInvariant < decimal > ( ) ;
245
- orderResult . Fees = order [ "fee" ] . ConvertInvariant < decimal > ( ) ;
246
- orderResult . Price = order [ "price" ] . ConvertInvariant < decimal > ( ) ;
247
- orderResult . AveragePrice = order [ "price" ] . ConvertInvariant < decimal > ( ) ;
248
- orderResult . TradeId = order [ "postxid" ] . ToStringInvariant ( ) ; //verify which is orderid & tradeid
239
+ ExchangeOrderResult orderResult = new ExchangeOrderResult
240
+ {
241
+ OrderId = orderId ,
242
+ Result = ExchangeAPIOrderResult . Filled ,
243
+ Message = "" ,
244
+ MarketSymbol = order [ "pair" ] . ToStringInvariant ( ) ,
245
+ IsBuy = order [ "type" ] . ToStringInvariant ( ) == "buy" ,
246
+ Amount = order [ "vol" ] . ConvertInvariant < decimal > ( ) ,
247
+ Fees = order [ "fee" ] . ConvertInvariant < decimal > ( ) ,
248
+ Price = order [ "price" ] . ConvertInvariant < decimal > ( ) ,
249
+ AveragePrice = order [ "price" ] . ConvertInvariant < decimal > ( ) ,
250
+ TradeId = order [ "postxid" ] . ToStringInvariant ( ) //verify which is orderid & tradeid
251
+ } ;
249
252
orderResult . OrderId = order [ "ordertxid" ] . ToStringInvariant ( ) ; //verify which is orderid & tradeid
250
253
orderResult . AmountFilled = order [ "vol" ] . ConvertInvariant < decimal > ( ) ;
251
254
// orderResult.OrderDate - not provided here. ideally would be null but ExchangeOrderResult.OrderDate is not nullable
@@ -258,6 +261,21 @@ private async Task<ExchangeOrderResult> ParseHistoryOrder(string orderId, JToken
258
261
return orderResult ;
259
262
}
260
263
264
+ internal ExchangeOrderResult ExtendResultsWithOrderDescr ( ExchangeOrderResult result , string orderStr )
265
+ {
266
+ //"buy 0.00000001 XBTUSD @ limit 1000000"
267
+ //"buy 58.00000000 ADAUSDT @ market"
268
+ string [ ] orderStrParts = orderStr . Split ( ' ' ) ;
269
+ result . IsBuy = string . Equals ( orderStrParts [ 0 ] , "buy" , StringComparison . InvariantCultureIgnoreCase ) ;
270
+ result . Amount = orderStrParts [ 1 ] . ConvertInvariant < decimal > ( ) ;
271
+ result . MarketSymbol = orderStrParts [ 2 ] ;
272
+ var isMarket = string . Equals ( orderStrParts [ 4 ] , "market" , StringComparison . InvariantCultureIgnoreCase ) ;
273
+ if ( ! isMarket ) {
274
+ result . Price = orderStrParts [ 5 ] . ConvertInvariant < decimal > ( ) ;
275
+ }
276
+ return result ;
277
+ }
278
+
261
279
private async Task < IEnumerable < ExchangeOrderResult > > QueryOrdersAsync ( string symbol , string path )
262
280
{
263
281
await PopulateLookupTables ( ) ;
@@ -496,12 +514,12 @@ protected override async Task<IEnumerable<KeyValuePair<string, ExchangeTicker>>>
496
514
{
497
515
tickers . Add ( new KeyValuePair < string , ExchangeTicker > ( marketSymbol , await ConvertToExchangeTickerAsync ( marketSymbol , ticker ) ) ) ;
498
516
}
499
- catch ( Exception e )
517
+ catch ( Exception e )
500
518
{
501
519
Logger . Error ( e ) ;
502
520
}
503
521
}
504
- if ( unfoundSymbols . Count > 0 )
522
+ if ( unfoundSymbols . Count > 0 )
505
523
{
506
524
Logger . Warn ( $ "Of { marketSymbols . Count ( ) } symbols, tickers could not be found for { unfoundSymbols . Count } : [{ String . Join ( ", " , unfoundSymbols ) } ]") ;
507
525
}
@@ -700,12 +718,17 @@ protected override async Task<ExchangeOrderResult> OnPlaceOrderAsync(ExchangeOrd
700
718
JToken token = await MakeJsonRequestAsync < JToken > ( "/0/private/AddOrder" , null , payload ) ;
701
719
ExchangeOrderResult result = new ExchangeOrderResult
702
720
{
703
- OrderDate = CryptoUtility . UtcNow
721
+ OrderDate = CryptoUtility . UtcNow ,
722
+ Result = ExchangeAPIOrderResult . Open
704
723
} ;
705
724
if ( token [ "txid" ] is JArray array )
706
725
{
707
726
result . OrderId = array [ 0 ] . ToStringInvariant ( ) ;
708
727
}
728
+ if ( token [ "descr" ] is JObject descrArray )
729
+ {
730
+ result = ExtendResultsWithOrderDescr ( result , descrArray [ "order" ] . ToStringInvariant ( ) ) ;
731
+ }
709
732
return result ;
710
733
}
711
734
@@ -869,7 +892,7 @@ [3]pair string Asset pair
869
892
string marketSymbol = token [ 3 ] . ToStringInvariant ( ) ;
870
893
//Kraken updates the candle open time to the current time, but we want it as open-time i.e. close-time - interval
871
894
token [ 1 ] [ 0 ] = token [ 1 ] [ 1 ] . ConvertInvariant < long > ( ) - interval * 60 ;
872
- var candle = this . ParseCandle ( token [ 1 ] , marketSymbol , interval * 60 , 2 , 3 , 4 , 5 , 0 , TimestampType . UnixSeconds , 7 , null , 6 , 8 ) ;
895
+ var candle = this . ParseCandle ( token [ 1 ] , marketSymbol , interval * 60 , 2 , 3 , 4 , 5 , 0 , TimestampType . UnixSeconds , 7 , null , 6 , 8 ) ;
873
896
await callbackAsync ( candle ) ;
874
897
}
875
898
} , connectCallback : async ( _socket ) =>
@@ -895,7 +918,7 @@ protected override async Task<IWebSocket> OnGetPositionsWebSocketAsync(Action<Ex
895
918
{
896
919
if ( token . Count == 3 && token [ 1 ] . ToString ( ) == "openOrders" )
897
920
{
898
- foreach ( JToken element in token [ 0 ] )
921
+ foreach ( JToken element in token [ 0 ] )
899
922
{
900
923
if ( element is JObject position )
901
924
{
0 commit comments