public void Start() { var config = (BotcoinConfigSection)ConfigurationManager.GetSection("botcoin"); var btxSetting = SettingRequest.Get(_apiClient, config.BitmexBot.AccountMode); _bitmex = new BitmexExchange(btxSetting); _bitmex.Log = Log; _bitmex.ExecutionChanged += OnExecutionChanged; _bitmex.MarginChanged += OnMarginChanged; _bitmex.OrderChanged += OnOrderChanged; _bitmex.WalletChanged += OnWalletChanged; _bitmex.AuthPassed += OnAuthPassed; _bitmex.Logon(); _btxUser = _bitmex.Exchange.Client.GetAccount(); _bitmex.SubscriptionAuth(null); _instrumentSettingsTimer.Start(); _vwapGainsTimer.Start(); _wsServer.Start(); OnInstrumentSettingsTimerElapsed(null, null); OnVwapGainsTimerElapsed(null, null); }
internal void Init(BitmexUser account) { var obj = Controller.GetPositionState(account, _instrument); if (obj != null) { if (obj.Opened == 1) { var msg = String.Format("The application has been launched on the '{0}'", obj.HostName); throw new InvalidOperationException(msg); } else { var type = Assembly.GetExecutingAssembly().GetType(obj.StateName); PositionState = (IPositionState)Activator.CreateInstance(type, this, obj.Instrument); PositionState.Init(obj); _stopObj = obj; StartWatchingPrice = obj.StartWatchPrice; StopPrice = obj.StopPrice; } } else { ResetState(); } }
public void InitPositionWatcher(BitmexUser account, Dictionary <string, ICryptoIntrument> instruments) { _priceMultiplier = PriceMultiplier; _instrument = Instrument; _instrumentObj = (InstrumentBaseType)instruments[_instrument]; _posWatcher = new PositionWatcher(_instrument, MainWnd.Controller, MainWindow.Error); var ex = MainWnd.Controller.Exchange; ex.PositionChanged += _posWatcher.OnPositionChanged; ex.OrderChanged += _posWatcher.OnOrderChanged; this.PositionSizeChanged += (s, e) => { MainWindow.HandleException(() => _posWatcher.OnPositionSizeChanged(e.PositionSize)); }; _posWatcher.WatcherChanged += (s, e) => { ChangeControl(() => LogWatcherEvent(e.Message)); }; _posWatcher.StateChanged += (s, e) => ChangeControl(() => { lblState.Content = e.Message; var state = e.Message == "BuyLimit" || e.Message == "SellLimit"; btnCancelWatching.Visibility = state ? Visibility.Visible : Visibility.Hidden; }); MainWnd.PriceChangedSubscription(true, _instrument); _posWatcher.Init(account); }
public ApiResult Save(BitmexOrderData order, BitmexUser user) { Order = order; User = user; return(_api.UserQuery("/v1/order", HttpMethod.Post, JsonConvert.SerializeObject(this), true)); }
public DbMessage SavePosition(BitmexTradeHistory trade, BitmexUser account) { Trade = trade; User = account; var result = _api.UserQuery("/v1/position", HttpMethod.Post, JsonConvert.SerializeObject(this), true); return(JsonConvert.DeserializeObject <DbMessage>(result.Content)); }
public DbPositionState GetPositionState(BitmexUser user, string instrument) { var args = new Dictionary <string, string>(); args.Add("account", user.Id); args.Add("host_name", Dns.GetHostName()); args.Add("instrument", instrument); var json = _api.GetQuery("/v1/position/state", null, RestApiClient.UrlEncode(args)); return(JsonConvert.DeserializeObject <DbPositionState>(json)); }
public DbMessage GetDbTrades(BitmexUser user, string instrument, int count) { var args = new Dictionary <string, string>(); args.Add("account", user.Id); args.Add("count", count.ToString()); args.Add("instrument", instrument); var json = _api.GetQuery("/v1/trade", null, RestApiClient.UrlEncode(args)); return(JsonConvert.DeserializeObject <DbMessage>(json)); }
public DbMessage GetDbTrades(BitmexUser user, DateTime startTime, DateTime endTime, string instrument = "XBTUSD") { var args = new Dictionary <string, string>(); args.Add("account", user.Id); args.Add("start_date", startTime.ToShortDateString()); args.Add("end_date", endTime.ToShortDateString()); args.Add("instrument", instrument); var json = _api.GetQuery("/v1/trade", null, RestApiClient.UrlEncode(args)); return(JsonConvert.DeserializeObject <DbMessage>(json)); }
public void SavePositionState(BitmexUser user, List <DbPositionState> states) { PositionStates = states.ToArray(); User = user; var host = Dns.GetHostName(); foreach (var state in PositionStates) { state.HostName = host; } _api.UserQuery("/v1/position/states", HttpMethod.Post, JsonConvert.SerializeObject(this), true); }
public DbMessage GetDbTrades(BitmexUser user, DateTime startTime, DateTime endTime, string instrument) { return(createTradeRequest().GetDbTrades(user, startTime, endTime, instrument)); }
public DbMessage GetDbTrades(BitmexUser user, string instrument, int count = 20) { return(createTradeRequest().GetDbTrades(user, instrument, count)); }
public DbPositionState GetPositionState(BitmexUser account, string instrument) { return(createPosRequest().GetPositionState(account, instrument)); }
public void SavePositionState(BitmexUser account, List <DbPositionState> states) { createPosRequest().SavePositionState(account, states); }