Advertisement
Guest User

Untitled

a guest
Apr 18th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. foreach (string symbol in account.OpenOrderDictionary.Keys)
  2. {
  3. if (symbol.EndsWith("SPOT")) continue;
  4. decimal symbolOrdersMargin = 0;
  5. decimal sumPV = 0;
  6. decimal sumV = 0;
  7. decimal sumsignV = 0;
  8. lock (account.OpenOrderDictionary[symbol].locker)
  9. {
  10. foreach (BbodOrder order in account.OpenOrderDictionary[symbol].OrderList)
  11. {
  12. if (order.OrderStatus.Equals('0') || order.OrderStatus.Equals('1')) //0-NEW, 1-PartialFill
  13. {
  14. if (order.Price != null)
  15. {
  16. decimal V = Math.Abs(order.LeavesQty.GetValueOrDefault());
  17. sumPV += order.Price.GetValueOrDefault() * V;
  18. sumV += V;
  19. if (order.Side.Equals('1')) sumsignV += V;
  20. else sumsignV -= V;
  21.  
  22. }
  23. }
  24. }
  25. }
  26. if (Math.Round(sumsignV, 10) != 0 && sumV != 0)
  27. {
  28. var marketDbSymbol = SymbolsData.GetSymbolFromMarketContextByKey(symbol);
  29. Asset asset = assetMap.GetAsset(marketDbSymbol);
  30. if (asset != null)
  31. {
  32. decimal IMR = 0;
  33. if (assetIMRDictionary.ContainsKey(symbol))
  34. {
  35. IMR = assetIMRDictionary[symbol];
  36. }
  37. else
  38. {
  39. IMR = (decimal)asset.InitialMarginBasePercent * 0.01m;
  40. }
  41. symbolOrdersMargin = Math.Round(IMR * Math.Abs(sumsignV) * asset.ContractSize * sumPV / sumV, 8);
  42. account.TotalMarginOur += Math.Abs(symbolOrdersMargin);
  43. }
  44. }
  45. }
  46.  
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement