sthewissen / Mynt

An Azure Functions-based crypto currency trading bot; featuring 10 exchanges, 25 indicators, custom strategy support, backtester and more

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Exception thrown when placing an order

mehtadone opened this issue · comments

I'm getting this exception thrown when an order is about to be placed. Any thoughts? I am assuming user error but my AmountToInvestPerTrader is 0.02

2018-05-26T08:19:43.164 [Error] ExchangeSharp.APIException : {"code":-1100,"msg":"Illegal characters found in parameter 'quantity'; legal range is '^([0-9]{1,20})(\\.[0-9]{1,20})?$'."}
   at ExchangeSharp.BaseAPI.MakeRequest(String url,String baseUrl,Dictionary`2 payload,String method)
   at ExchangeSharp.ExchangeBinanceAPI.PlaceOrder(ExchangeOrderRequest order)
   at System.Threading.Tasks.Task`1.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at async Mynt.Core.Exchanges.BaseExchange.Buy(String market,Decimal quantity,Decimal rate)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at async Mynt.Core.TradeManagers.LiveTradeManager.CreateBuyOrder(Trader freeTrader,String pair,Candle signalCandle)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at async Mynt.Core.TradeManagers.LiveTradeManager.CreateNewTrade(Trader freeTrader,TradeSignal signal)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at async Mynt.Core.TradeManagers.LiveTradeManager.LookForNewTrades()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at async Mynt.Functions.BuyTimer.Run(TimerInfo buyTimer,TraceWriter log)

This problem may be related to something culture related where the decimal separator is a comma which may cause ExchangeSharp to not be able to accurately create a request?

Maybe. This is running on Azure functions and I can't seem to find a culture setting. I'll keep digging and if I figure it out, will update on here for future reference.

I think there is something wrong in the ExchangeSharp library. I updated to the latest version and forced culture in code to US. I get another error on GetOrder, with a similar error message. I logged the orderid just before the error:

2018-05-28T10:44:55.144 [Info] 2018-05-28 10:44:55.144 +00:00 [Information] GetOrder(13561326, CMTBTC)
2018-05-28T10:44:55.220 [Info] 2018-05-28 10:44:55.220 +00:00 [Information] CancelOrder(13561326, CMTBTC)
2018-05-28T10:44:55.470 [Error] 2018-05-28 10:44:55.299 +00:00 [Error] Error on BuyTimer
ExchangeSharp.APIException: {"code":-1100,"msg":"Illegal characters found in parameter 'orderId'; legal range is '^[0-9]{1,20}$'."}
   at ExchangeSharp.APIRequestMaker.<MakeRequestAsync>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

You can see the orderID is valid, but it feels like the library may be converted to scientific notation.

Think this is all related to exchangesharp. Closing on here as its not really Mynt issue per say