Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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();
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        public ApiResult Save(BitmexOrderData order, BitmexUser user)
        {
            Order = order;
            User  = user;

            return(_api.UserQuery("/v1/order", HttpMethod.Post, JsonConvert.SerializeObject(this), true));
        }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
        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));
        }
Exemplo n.º 7
0
        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));
        }
Exemplo n.º 8
0
        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));
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
 public DbMessage GetDbTrades(BitmexUser user, DateTime startTime, DateTime endTime, string instrument)
 {
     return(createTradeRequest().GetDbTrades(user, startTime, endTime, instrument));
 }
Exemplo n.º 11
0
 public DbMessage GetDbTrades(BitmexUser user, string instrument, int count = 20)
 {
     return(createTradeRequest().GetDbTrades(user, instrument, count));
 }
Exemplo n.º 12
0
 public DbPositionState GetPositionState(BitmexUser account, string instrument)
 {
     return(createPosRequest().GetPositionState(account, instrument));
 }
Exemplo n.º 13
0
 public void SavePositionState(BitmexUser account, List <DbPositionState> states)
 {
     createPosRequest().SavePositionState(account, states);
 }