using System; using sharp.extensions; using System.CodeDom; using System.Collections.Generic; namespace sharp.trading { public abstract class TradingConnection : MarshalByRefObject { public String UniqueProviderName { get; private set; } public TradingConnection(string providerID) { UniqueProviderName = providerID; } public abstract object[] getConstructorArguments(); public abstract Currency[] getCurrencies(); public abstract Balance[] getBalances(); public abstract Market openMarket(string tradedSymbol, string payingSymbol); public abstract Pair[] listMarkets(); public abstract Order[] getOpenOrders(); public abstract Order[] getHistoricOrders(); public abstract Order createOrder(OrderType orderType, OrderTarget orderTarget, string marketSymbol, string baseSymbol, double amount, double price); public abstract Order getOrder(string orderID); public abstract void cancelOrder(string orderID); public abstract void refreshOrder(Order order); public Currency getCurrency(string symbol){ foreach (Currency c in getCurrencies()){ if (c.Symbol.Equals(symbol)){ return c; } } throw new NotSupportedException(String.Format("Currency '{0}' not supported by Bittrex",symbol)); } public Market openMarket(Pair pair){ return openMarket(pair.Item2, pair.Item1); } public Pair[] getMarketsForSymbol(string symbol){ List> r = new List>(); foreach (Pair p in listMarkets()){ if (p.Item1.Equals(symbol) || p.Item2.Equals(symbol)){ r.Add(p); } } return r.ToArray(); } public void cancelOrder(Order order){ cancelOrder(order.OrderID); } } }