@@ -539,7 +539,11 @@ protected override IWebSocket OnGetCompletedOrderDetailsWebSocket(Action<Exchang
539
539
return ConnectWebSocket ( string . Empty , ( _socket , msg ) =>
540
540
{
541
541
JToken token = JToken . Parse ( msg . ToStringFromUTF8 ( ) ) ;
542
- if ( token is JArray array && array . Count > 1 && array [ 2 ] is JArray && array [ 1 ] . ToStringInvariant ( ) == "os" )
542
+ if ( token [ 1 ] . ToStringInvariant ( ) == "hb" )
543
+ {
544
+ // heartbeat
545
+ }
546
+ else if ( token is JArray array && array . Count > 1 && array [ 2 ] is JArray && array [ 1 ] . ToStringInvariant ( ) == "os" )
543
547
{
544
548
foreach ( JToken orderToken in array [ 2 ] )
545
549
{
@@ -888,9 +892,9 @@ private ExchangeOrderResult ParseOrder(JToken order)
888
892
} ;
889
893
}
890
894
891
- private ExchangeOrderResult ParseOrderWebSocket ( JToken order )
892
- {
893
- /*
895
+ private ExchangeOrderResult ParseOrderWebSocket ( JToken order )
896
+ {
897
+ /*
894
898
[ 0, "os", [ [
895
899
"<ORD_ID>",
896
900
"<ORD_PAIR>",
@@ -907,22 +911,31 @@ private ExchangeOrderResult ParseOrderWebSocket(JToken order)
907
911
] ] ];
908
912
*/
909
913
910
- decimal amount = order [ 2 ] . ConvertInvariant < decimal > ( ) ;
911
- return new ExchangeOrderResult
912
- {
913
- Amount = amount ,
914
- AmountFilled = amount ,
915
- Price = order [ 6 ] . ConvertInvariant < decimal > ( ) ,
916
- AveragePrice = order [ 7 ] . ConvertInvariant < decimal > ( ) ,
917
- IsBuy = ( amount > 0m ) ,
918
- OrderDate = CryptoUtility . UnixTimeStampToDateTimeMilliseconds ( order [ 8 ] . ConvertInvariant < long > ( ) ) ,
919
- OrderId = order [ 0 ] . ToStringInvariant ( ) ,
920
- Result = ExchangeAPIOrderResult . Filled ,
921
- MarketSymbol = order [ 1 ] . ToStringInvariant ( )
922
- } ;
923
- }
924
-
925
- private IEnumerable < ExchangeOrderResult > ParseOrderV2 ( Dictionary < string , List < JToken > > trades )
914
+ decimal amount = order [ 2 ] . ConvertInvariant < decimal > ( ) ;
915
+ /*
916
+ ACTIVE, EXECUTED @ PRICE(AMOUNT) e.g. "EXECUTED @ 107.6(-0.2)", PARTIALLY FILLED @ PRICE(AMOUNT), INSUFFICIENT MARGIN was: PARTIALLY FILLED @ PRICE(AMOUNT), CANCELED, CANCELED was: PARTIALLY FILLED @ PRICE(AMOUNT)
917
+ */
918
+ string orderStatusString = order [ 5 ] . ToStringInvariant ( ) . Split ( ' ' ) [ 0 ] ;
919
+ return new ExchangeOrderResult
920
+ {
921
+ Amount = amount ,
922
+ AmountFilled = amount ,
923
+ Price = order [ 6 ] . ConvertInvariant < decimal > ( ) ,
924
+ AveragePrice = order [ 7 ] . ConvertInvariant < decimal > ( ) ,
925
+ IsBuy = ( amount > 0m ) ,
926
+ OrderDate = order [ 8 ] . ToDateTimeInvariant ( ) ,
927
+ OrderId = order [ 0 ] . ToStringInvariant ( ) ,
928
+ Result = orderStatusString == "ACTIVE" ? ExchangeAPIOrderResult . Pending
929
+ : orderStatusString == "EXECUTED" ? ExchangeAPIOrderResult . Filled
930
+ : orderStatusString == "PARTIALLY" ? ExchangeAPIOrderResult . FilledPartially
931
+ : orderStatusString == "INSUFFICIENT" ? ExchangeAPIOrderResult . Canceled
932
+ : orderStatusString == "CANCELED" ? ExchangeAPIOrderResult . Canceled
933
+ : ExchangeAPIOrderResult . Unknown ,
934
+ MarketSymbol = order [ 1 ] . ToStringInvariant ( ) ,
935
+ } ;
936
+ }
937
+
938
+ private IEnumerable < ExchangeOrderResult > ParseOrderV2 ( Dictionary < string , List < JToken > > trades )
926
939
{
927
940
928
941
/*
@@ -941,7 +954,7 @@ FEE_CURRENCY string Fee currency
941
954
],
942
955
*/
943
956
944
- foreach ( var kv in trades )
957
+ foreach ( var kv in trades )
945
958
{
946
959
ExchangeOrderResult order = new ExchangeOrderResult { Result = ExchangeAPIOrderResult . Filled } ;
947
960
foreach ( JToken trade in kv . Value )
0 commit comments