コード例 #1
0
        private async void buttonOrderDel_ClickAsync(object sender, EventArgs e)
        {
            var ordid = textBox_ORD_OrdId.Text.Trim();

            if (ordid.Length < 1)
            {
                return;
            }

            var sym = textBox_ORD_sym.Text.Trim();

            if (sym.Length < 1)
            {
                return;
            }

            var acctype = comboBox_ORD_AccType.SelectedIndex + 1;

            Gmex.API.Models.Ord ord = new Gmex.API.Models.Ord
            {
                AId   = cli4trd.GetCurrentUId() + acctype.ToString("D2"),
                Sym   = sym,
                OrdId = ordid
            };

            try
            {
                var ret = await cli4trd.OrderDelAsync(ord);

                LOG($"[OrderDel] <<\r\n");
                LOG($"{Helper.MyJsonMarshal(ret)}\r\n");
                LOG($"========\r\n");
            }
            catch (Exception ex)
            {
                LOG("[ERROR] Exception: " + ex.Message);
                return;
            }
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: zgbilltalent/gmex.api
        private async void buttonOrderDel_ClickAsync(object sender, EventArgs e)
        {
            if (!IsClient4TradeOK())
            {
                LOG("[WARN] trade client is not connected!\r\n");
                return;
            }
            var ordid = textBox_ORD_OrdId.Text.Trim();

            if (ordid.Length < 1)
            {
                return;
            }

            var sym = textBox_ORD_sym.Text.Trim();

            if (sym.Length < 1)
            {
                return;
            }

            var acctype = comboBox_ORD_AccType.SelectedIndex + 1;

            Gmex.API.Models.Ord ord = new Gmex.API.Models.Ord
            {
                AId   = cli4trd.GetCurrentUId() + acctype.ToString("D2"),
                Sym   = sym,
                OrdId = ordid
            };

            await cli4trd.REQ_OrderDelAsync(ord, (code, obj) =>
            {
                LOG($"[DEBUG] OrderDel ret {code}\r\n");
                LOG("<< OrderDel: " + Helper.MyJsonMarshal(obj) + "\r\n");
            }, cts4trd.Token);
        }
コード例 #3
0
        private async void buttonOrderNew_ClickAsync(object sender, EventArgs e)
        {
            /******
             * 用户下单注意事项:
             * 1. 用户通常在本地维护 【所有委托】表; 主键使用 COrdId;
             * 2. 所有委托通常会被分为三种:当前委托,条件委托,历史委托;
             * 2. 尽管 Server 端是使用 OrdId 来作为 Ord 的主键的,但是由于websockets的异步通讯机制,用户在下单(新建委托)时只能
             *    自己维护 COrdId 而要等待服务器返回对应的 OrdId;因此建议本地使用GUID来自己维护自己Ord的唯一性;故,本地保存的
             *    所有委托的主键使用 COrdId 比较方便;
             * 3. 特别注意的是,在WebSocket模式下, OrderNew 的返回结果并不能保证一定比 onOrder 消息到来的快,因此,在下单前,应该
             *    先本地保存 COrdId 入表以便 onOrder 能正确识别;
             * 4. 委托的有效性,首先看 ErrorCode 是否为 0,然后再看 Status;
             * 5. 对于条件委托,一开始OType是条件类型,触发后会自动变成 Limit 或 Market 类型;如在历史单中想判断是否条件单,可借
             *    助 StopPrz 来进一步判断。
             * 6. 性能考虑,建议单独建立一个历史委托的表单独存放已经不活动的委托,因为这些委托数据是不会再变化了。
             */
            if (cli4trd == null)
            {
                return;
            }

            var sym = textBox_ORD_sym.Text.Trim();

            if (sym.Length < 1)
            {
                return;
            }

            var acctype = comboBox_ORD_AccType.SelectedIndex + 1;

            Gmex.API.Models.Ord ord = new Gmex.API.Models.Ord();
            try
            {
                ord.COrdId = Guid.NewGuid().ToString();
                ord.AId    = cli4trd.GetCurrentUId() + acctype.ToString("D2");
                ord.Sym    = sym;
                ord.Prz    = Convert.ToDecimal(textBox_ORD_Prz.Text.Trim());
                ord.Qty    = Convert.ToDecimal(textBox_ORD_Qty.Text.Trim());
                ord.Dir    = comboBox_ORD_DIR.SelectedIndex == 1 ? Gmex.API.Models.Dir.SELL : Gmex.API.Models.Dir.BUY;
                ord.Tif    = (Gmex.API.Models.TimeInForce)comboBox_ORD_TIF.SelectedIndex;
                ord.OType  = (Gmex.API.Models.OfferType)comboBox_ORD_OffetType.SelectedIndex;

                if (checkBoxPOSTONLY.Checked)
                {
                    ord.OrdFlag__Set(Gmex.API.Models.OrdFlag.POSTONLY);
                }
                if (checkBoxREDUCEONLY.Checked)
                {
                    ord.OrdFlag__Set(Gmex.API.Models.OrdFlag.REDUCEONLY);
                }

                var ret = await cli4trd.OrderNewAsync(ord);

                LOG($"[OrderNew] <<\r\n");
                LOG($"{Helper.MyJsonMarshal(ret)}\r\n");
                LOG($"========\r\n");
            }
            catch (Exception ex)
            {
                LOG("[ERROR] Exception: " + ex.Message);
                return;
            }
        }