Exemplo n.º 1
0
        public async Task <bool> Sell(List <int> ids)
        {
            List <TradeCloseModel> closes = new List <TradeCloseModel>();
            SymbolInfoSE           symbol = null;

            while (symbol == null)
            {
                symbol = await MT4Service.Instance.GetSymbolInfoAsync(ApplicationCommon.SymbolName);
            }
            foreach (var item in ids)
            {
                closes.Add(new TradeCloseModel()
                {
                    OrderTicket = item, Price = symbol.Ask
                });
            }
            TradeCloseResponseModel[] responses = await Instance.TradeCloseAllAsync(closes.ToArray());

            foreach (var item in responses)
            {
                if (item.ErrorCode == -1)
                {
                    return(false);
                }
            }
            return(true);
        }
Exemplo n.º 2
0
 /// <summary>
 /// 更新Symbol报价
 /// </summary>
 /// <param name="symbol"></param>
 private void StartSymbolUpdate(string symbol)
 {
     Task.Factory.StartNew(() =>
     {
         while (true)
         {
             try
             {
                 SymbolInfoSE model = Core.CustomService.Service.GetSymbolInfo(symbol);
                 if (model == null)
                 {
                     continue;
                 }
                 this.bid = model.Bid;
                 this.ask = model.Ask;
                 if (priceList.Count > 10)
                 {
                     priceList = new ConcurrentQueue <double>();
                 }
                 if (isMon == true)
                 {
                     //priceList.Enqueue((bid + ask) / 2);
                     if (bid > 1000 && ((decimal)bid - (decimal)ask) <= (decimal)0.5)
                     {
                         priceList.Enqueue(bid);
                     }
                 }
                 this.BeginInvoke((MethodInvoker)(() =>
                 {
                     this.Text = string.Format("symbol:{0} bid:{1} ask:{2} update:{3} queue:{4}", model.Symbol, bid.ToString(), ask.ToString(), DateTime.Now, priceList.Count);
                 }));
                 Thread.Sleep(100);
             }
             catch (Exception ex)
             {
                 _log.Error(ex);
             }
         }
     });
 }
Exemplo n.º 3
0
        public async Task <bool> Buy(string loginId, int volume)
        {
            SymbolInfoSE symbol = null;

            while (symbol == null)
            {
                symbol = await MT4Service.Instance.GetSymbolInfoAsync(ApplicationCommon.SymbolName);
            }
            var trade = new TradeTransInfoSE()
            {
                OrderBy     = int.Parse(loginId),
                Volume      = volume * 100,
                StopLoss    = 0,
                Cmd         = 0,
                TakeProfit  = 0,
                Order       = 0,
                IeDeviation = 0,
                Symbol      = ApplicationCommon.SymbolName,
                Price       = symbol.Ask
            };
            MT4OperResult result = await Instance.TradeTranscationOpenAsync(trade);

            return(result.ErrorCode != -1);
        }
Exemplo n.º 4
0
        private async void btnOpen_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtVlome.Text) || comCmd.SelectedItem == null || cmbSymbol.SelectedItem == null)
            {
                MessageBox.Show("请填写完整开仓信息");
            }
            else
            {
                string cmd = comCmd.SelectedItem.ToString().Trim();
                int    intcmd = 0, volume = 0;
                double price = 0;

                List <TradeOpenModel> trades = new List <TradeOpenModel>();
                SymbolInfoSE          symbol = Core.CustomService.Service.GetSymbolInfo(cmbSymbol.SelectedItem.ToString());
                if (symbol == null)
                {
                    MessageBox.Show("获取Symbol信息失败,请重试!");
                    return;
                }
                //转化买卖方向

                if (!int.TryParse(txtVlome.Text, out volume))
                {
                    MessageBox.Show("请填写正确的手数");
                    return;
                }
                if (cmd == "sell")
                {
                    price  = symbol.Bid;
                    intcmd = 1;
                }
                else
                {
                    price = symbol.Ask;
                }

                foreach (DataGridViewRow row in dataGridViewOpenData.Rows)
                {
                    int            loginid = Convert.ToInt32(row.Cells["LoginId"].Value);
                    TradeOpenModel trade   = new TradeOpenModel();
                    trade.Symbol      = cmbSymbol.SelectedItem.ToString().ToUpper();
                    trade.Cmd         = intcmd;
                    trade.StopLoss    = 0;
                    trade.TakeProfit  = 0;
                    trade.OrderBy     = loginid;
                    trade.Volume      = volume * 100;
                    trade.Order       = 0;
                    trade.IeDeviation = 0;
                    trade.Expiration  = DateTime.Now;
                    trade.Price       = price;
                    trades.Add(trade);
                }
                loading.ShowLoading();
                TradeOpenRsponseModel[] responseModels = await Core.CustomService.Service.TradeOpenAllAsync(trades.ToArray());

                loading.HideLoading();
                StringBuilder sbMessage = new StringBuilder();
                foreach (TradeOpenRsponseModel response in responseModels)
                {
                    if (response.ErrorCode == -1)
                    {
                        _log.Fatal(JsonConvert.SerializeObject(response));
                        sbMessage.AppendFormat("Account :{0} Message:{1}", response.OpenModel.OrderBy, response.ErrorDescription);
                        sbMessage.AppendLine();
                        continue;
                    }
                    else
                    {
                        _log.Info(JsonConvert.SerializeObject(response));
                    }
                }
                if (sbMessage.Length == 0)
                {
                    MessageBox.Show("批量开仓成功!");
                    this.Close();
                }
                else
                {
                    MessageBox.Show("开仓失败账户:\r\b" + sbMessage.ToString());
                }
            }
        }