Esempio n. 1
0
 public Adapter()
 {
     quoteCom = new Intelligence.QuoteCom(url, 8000, sid, token);
     quoteCom.OnRcvMessage    += OnQuoteRcvMessage;
     quoteCom.OnGetStatus     += OnQuoteGetStatus;
     quoteCom.OnRecoverStatus += OnRecoverStatus;
     quoteCom.QDebugLog        = false;
     quoteCom.FQDebugLog       = false;
     Console.WriteLine("QuoteCom 範例程式 FOR 證券 [ Version : {0}]", quoteCom.version);  //2014.6.19 ADD
     quoteCom.Connect(url, 8000);
 }
Esempio n. 2
0
        private void OnRecoverStatus(object sender, string Topic, RECOVER_STATUS status, uint RecoverCount)
        {
            QuoteCom com = (QuoteCom)sender;

            switch (status)
            {
            case RECOVER_STATUS.RS_DONE:            //回補資料結束
                AddInfo(String.Format("結束回補 Topic:[{0}]{1}", Topic, RecoverCount));
                break;

            case RECOVER_STATUS.RS_BEGIN:           //開始回補資料
                AddInfo(String.Format("開始回補 Topic:[{0}]", Topic));
                break;
            }
        }
Esempio n. 3
0
        private void OnRecoverStatus(object sender, string Topic, RECOVER_STATUS status, uint RecoverCount)
        {
            QuoteCom com = (QuoteCom)sender;

            switch (status)
            {
            case RECOVER_STATUS.RS_DONE:            //回補資料結束
                PrintInfo($"結束回補 Topic:[{Topic}]{RecoverCount}");
                break;

            case RECOVER_STATUS.RS_BEGIN:           //開始回補資料
                PrintInfo($"開始回補 Topic:[{Topic}]");
                break;
            }
        }
Esempio n. 4
0
        private void OnRecoverStatus(object sender, string Topic, RECOVER_STATUS status, uint RecoverCount)
        {
            if (this.InvokeRequired)
            {
                Intelligence.OnRecover_EvenHandler d = new Intelligence.OnRecover_EvenHandler(OnRecoverStatus);
                this.Invoke(d, new object[] { sender, Topic, status, RecoverCount });
                return;
            }
            QuoteCom com = (QuoteCom)sender;

            switch (status)
            {
            case RECOVER_STATUS.RS_DONE:            //回補資料結束
                AddInfo(String.Format("結束回補 Topic:[{0}]{1}", Topic, RecoverCount));
                break;

            case RECOVER_STATUS.RS_BEGIN:           //開始回補資料
                AddInfo(String.Format("開始回補 Topic:[{0}]", Topic));
                break;
            }
        }
Esempio n. 5
0
        private void OnQuoteGetStatus(object sender, COM_STATUS staus, byte[] msg)
        {
            QuoteCom com  = (QuoteCom)sender;
            string   smsg = null;

            switch (staus)
            {
            case COM_STATUS.LOGIN_READY:
                AddInfo(String.Format("LOGIN_READY:[{0}]", encoding.GetString(msg)));
                break;

            case COM_STATUS.LOGIN_FAIL:
                AddInfo(String.Format("LOGIN FAIL:[{0}]", encoding.GetString(msg)));
                break;

            case COM_STATUS.LOGIN_UNKNOW:
                AddInfo(String.Format("LOGIN UNKNOW:[{0}]", encoding.GetString(msg)));
                break;

            case COM_STATUS.CONNECT_READY:
                //quoteCom.Login(tfcom.Main_ID, tfcom.Main_PWD, tfcom.Main_CENTER);
                smsg = "QuoteCom: [" + encoding.GetString(msg) + "] MyIP=" + quoteCom.MyIP;
                AddInfo(smsg);
                break;

            case COM_STATUS.CONNECT_FAIL:
                smsg = encoding.GetString(msg);
                AddInfo("CONNECT_FAIL:" + smsg);
                break;

            case COM_STATUS.DISCONNECTED:
                smsg = encoding.GetString(msg);
                AddInfo("DISCONNECTED:" + smsg);
                break;

            case COM_STATUS.SUBSCRIBE:
                smsg = encoding.GetString(msg, 0, msg.Length - 1);
                AddInfo(String.Format("SUBSCRIBE:[{0}]", smsg));
                //txtQuoteList.AppendText(String.Format("SUBSCRIBE:[{0}]", smsg));  //2012.02.16 LYNN TEMPORARY ;
                break;

            case COM_STATUS.UNSUBSCRIBE:
                smsg = encoding.GetString(msg, 0, msg.Length - 1);
                AddInfo(String.Format("UNSUBSCRIBE:[{0}]", smsg));
                break;

            case COM_STATUS.ACK_REQUESTID:
                long RequestId = BitConverter.ToInt64(msg, 0);
                byte status    = msg[8];
                AddInfo("Request Id BACK: " + RequestId + " Status=" + status);
                break;

            case COM_STATUS.RECOVER_DATA:
                smsg = encoding.GetString(msg, 1, msg.Length - 1);
                if (!RecoverMap.ContainsKey(smsg))
                {
                    RecoverMap.Add(smsg, 0);
                }

                if (msg[0] == 0)
                {
                    RecoverMap[smsg] = 0;
                    AddInfo(String.Format("開始回補 Topic:[{0}]", smsg));
                }

                if (msg[0] == 1)
                {
                    AddInfo(String.Format("結束回補 Topic:[{0} 筆數:{1}]", smsg, RecoverMap[smsg]));
                }
                break;
            }
            com.Processed();
        }
Esempio n. 6
0
            private void OnQuoteGetStatus(object sender, COM_STATUS staus, byte[] msg)
            {
                QuoteCom com  = (QuoteCom)sender;
                string   smsg = "";

                switch (staus)
                {
                case COM_STATUS.LOGIN_READY:
                    Console.WriteLine(String.Format("LOGIN_READY"));
                    Console.WriteLine(smsg);
                    break;

                case COM_STATUS.LOGIN_FAIL:
                    Console.WriteLine(String.Format("LOGIN FAIL:[{0}]", encoding.GetString(msg)));
                    break;

                case COM_STATUS.LOGIN_UNKNOW:
                    Console.WriteLine(String.Format("LOGIN UNKNOW:[{0}]", encoding.GetString(msg)));
                    break;

                case COM_STATUS.CONNECT_READY:
                    smsg = "QuoteCom: [" + encoding.GetString(msg) + "] MyIP=" + quoteCom.MyIP;
                    break;

                case COM_STATUS.CONNECT_FAIL:
                    smsg = encoding.GetString(msg);
                    Console.WriteLine("CONNECT_FAIL:" + smsg);
                    break;

                case COM_STATUS.DISCONNECTED:
                    smsg = encoding.GetString(msg);
                    Console.WriteLine("DISCONNECTED:" + smsg);
                    break;

                case COM_STATUS.SUBSCRIBE:
                    smsg = encoding.GetString(msg, 0, msg.Length - 1);
                    Console.WriteLine(String.Format("SUBSCRIBE:[{0}]", smsg));
                    break;

                case COM_STATUS.UNSUBSCRIBE:
                    smsg = encoding.GetString(msg, 0, msg.Length - 1);
                    Console.WriteLine(String.Format("UNSUBSCRIBE:[{0}]", smsg));
                    break;

                case COM_STATUS.ACK_REQUESTID:
                    long RequestId = BitConverter.ToInt64(msg, 0);
                    byte status    = msg[8];
                    Console.WriteLine("Request Id BACK: " + RequestId + " Status=" + status);
                    break;

                case COM_STATUS.RECOVER_DATA:
                    smsg = encoding.GetString(msg, 1, msg.Length - 1);
                    if (!RecoverMap.ContainsKey(smsg))
                    {
                        RecoverMap.Add(smsg, 0);
                    }

                    if (msg[0] == 0)
                    {
                        RecoverMap[smsg] = 0;
                        Console.WriteLine(String.Format("開始回補 Topic:[{0}]", smsg));
                    }

                    if (msg[0] == 1)
                    {
                        Console.WriteLine(String.Format("結束回補 Topic:[{0} 筆數:{1}]", smsg, RecoverMap[smsg]));
                    }
                    break;
                }
                com.Processed();
            }
 public WarrantsTable(QuoteCom quote)
 {
     quoteCom    = quote;
     Warrants    = new Dictionary <string, Warrant>();
     WarrantsAll = new Dictionary <string, Warrant>();
 }
Esempio n. 8
0
 public TradeBotLong(string stockid, string brokerid, string account, ushort BuyQty, QuoteCom quotecom, TaiFexCom taifexcom, int amountthreshold, BuyMode buymode, StopLossMode stoplossmode, LockGainMode lockgainmode) : base(stockid, brokerid, account, BuyQty, quotecom, taifexcom, amountthreshold, buymode, stoplossmode, lockgainmode)
 {
 }
Esempio n. 9
0
        public StockEditor(DataTable table, QuoteCom quotecom, TaiFexCom tfcom, string brokerid, string account, string StockHistoryFile)
        {
            InitializeComponent();
            this.StockTable       = table;
            this.quotecom         = quotecom;
            this.tfcom            = tfcom;
            this.brokerid         = brokerid;
            this.account          = account;
            this.StockHistoryFile = StockHistoryFile;

            //建立下拉選單表格
            BuyModeTable.Columns.Add("BuyMode", typeof(string));
            BuyModeTable.Columns.Add("BuyMode_Text", typeof(string));
            BuyModeTable.Rows.Add("Auto", "自動");
            BuyModeTable.Rows.Add("Notify", "手動");
            BindingSource bindingBuyMode = new BindingSource();

            bindingBuyMode.DataSource = BuyModeTable;

            StatusTable.Columns.Add("Status", typeof(string));
            StatusTable.Columns.Add("Status_Text", typeof(string));
            StatusTable.Rows.Add("StandBy", "待命中");
            StatusTable.Rows.Add("WaitingBuySignal", "等待買入訊號");
            StatusTable.Rows.Add("WaitingBuy", "等待買入");
            StatusTable.Rows.Add("ConfirmBuyOrder", "確認委托買單");
            StatusTable.Rows.Add("ConfirmBuyMatch", "確認買單成交");
            StatusTable.Rows.Add("WaitingSellSignal", "等待賣出訊號");
            StatusTable.Rows.Add("WaitingSell", "等待賣出");
            StatusTable.Rows.Add("ConfirmSellOrder", "確認委托賣單");
            StatusTable.Rows.Add("ConfirmSellMatch", "確認賣單成交");
            StatusTable.Rows.Add("Stop", "中止流程");
            StatusTable.Rows.Add("Error", "錯誤");

            BindingSource bindingStatus = new BindingSource();

            bindingStatus.DataSource = StatusTable;

            StopLossModeTable.Columns.Add("StopLossMode", typeof(string));
            StopLossModeTable.Columns.Add("StopLossMode_Text", typeof(string));
            StopLossModeTable.Rows.Add("Auto", "自動");
            StopLossModeTable.Rows.Add("Manual", "手動");
            BindingSource bindingStopLossMode = new BindingSource();

            bindingStopLossMode.DataSource = StopLossModeTable;

            LockGainModeTable.Columns.Add("LockGainMode", typeof(string));
            LockGainModeTable.Columns.Add("LockGainMode_Text", typeof(string));
            LockGainModeTable.Rows.Add("Auto", "自動");
            LockGainModeTable.Rows.Add("Manual", "手動");
            BindingSource bindingLockGainMode = new BindingSource();

            bindingLockGainMode.DataSource = LockGainModeTable;

            //增加欄位名稱
            dgv_StockEditor.Columns.Add("StockID", "代號");
            dgv_StockEditor.Columns["StockID"].DataPropertyName = "StockID";
            dgv_StockEditor.Columns["StockID"].ReadOnly         = true;


            DataGridViewComboBoxColumn StatusCol = new DataGridViewComboBoxColumn();

            StatusCol.ValueMember      = "Status";
            StatusCol.DisplayMember    = "Status_Text";
            StatusCol.DataSource       = bindingStatus;
            StatusCol.Name             = "Status";
            StatusCol.DataPropertyName = "Status";
            StatusCol.HeaderText       = "狀態";
            StatusCol.ReadOnly         = true;
            StatusCol.DisplayStyle     = DataGridViewComboBoxDisplayStyle.Nothing;
            StatusCol.SortMode         = DataGridViewColumnSortMode.Automatic;
            dgv_StockEditor.Columns.Add(StatusCol);

            dgv_StockEditor.Columns.Add("AmountThreshold", "成交量門檻");
            dgv_StockEditor.Columns["AmountThreshold"].DataPropertyName = "AmountThreshold";
            dgv_StockEditor.Columns["AmountThreshold"].ToolTipText      = "前五分鐘成交量門檻";
            //dgv_StockEditor.Columns["AmountThreshold"].ReadOnly = true;



            DataGridViewComboBoxColumn BuyModeCol = new DataGridViewComboBoxColumn();

            BuyModeCol.ValueMember      = "BuyMode";
            BuyModeCol.DisplayMember    = "BuyMode_Text";
            BuyModeCol.DataSource       = bindingBuyMode;
            BuyModeCol.Name             = "BuyMode";
            BuyModeCol.DataPropertyName = "BuyMode";
            BuyModeCol.HeaderText       = "買入模式";
            //BuyModeCol.ReadOnly = true;
            BuyModeCol.DisplayStyle = DataGridViewComboBoxDisplayStyle.DropDownButton;
            BuyModeCol.SortMode     = DataGridViewColumnSortMode.Automatic;
            dgv_StockEditor.Columns.Add(BuyModeCol);

            DataGridViewComboBoxColumn StopLossModeCol = new DataGridViewComboBoxColumn();

            StopLossModeCol.ValueMember      = "StopLossMode";
            StopLossModeCol.DisplayMember    = "StopLossMode_Text";
            StopLossModeCol.DataSource       = bindingStopLossMode;
            StopLossModeCol.Name             = "StopLossMode";
            StopLossModeCol.DataPropertyName = "StopLossMode";
            StopLossModeCol.HeaderText       = "停損模式";
            //StopLossModeCol.ReadOnly = true;
            StopLossModeCol.DisplayStyle = DataGridViewComboBoxDisplayStyle.DropDownButton;
            StopLossModeCol.SortMode     = DataGridViewColumnSortMode.Automatic;
            dgv_StockEditor.Columns.Add(StopLossModeCol);

            DataGridViewComboBoxColumn LockGainModeCol = new DataGridViewComboBoxColumn();

            LockGainModeCol.ValueMember      = "LockGainMode";
            LockGainModeCol.DisplayMember    = "LockGainMode_Text";
            LockGainModeCol.DataSource       = bindingLockGainMode;
            LockGainModeCol.Name             = "LockGainMode";
            LockGainModeCol.DataPropertyName = "LockGainMode";
            LockGainModeCol.HeaderText       = "停利模式";
            //LockGainModeCol.ReadOnly = true;
            LockGainModeCol.DisplayStyle = DataGridViewComboBoxDisplayStyle.DropDownButton;
            LockGainModeCol.SortMode     = DataGridViewColumnSortMode.Automatic;
            dgv_StockEditor.Columns.Add(LockGainModeCol);

            //DataGridViewComboBoxColumn BuyQtyCol = new DataGridViewComboBoxColumn();
            //BuyQtyCol.Items.AddRange(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
            //BuyQtyCol.Name = "BuyQty";
            //BuyQtyCol.DataPropertyName = "BuyQty";
            //BuyQtyCol.HeaderText = "設定買量";
            //dgv_StockList.Columns.Add(BuyQtyCol);
            dgv_StockEditor.Columns.Add("BuyQty", "設定買量");
            dgv_StockEditor.Columns["BuyQty"].DataPropertyName = "BuyQty";
            //dgv_StockEditor.Columns["BuyQty"].ReadOnly = true;


            BindingSource bs = new BindingSource();

            bs.DataSource = StockTable;
            dgv_StockEditor.DataSource = bs;

            ////隱藏不顯示欄位
            dgv_StockEditor.Columns["TradeBot"].Visible     = false;
            dgv_StockEditor.Columns["BuyAvgPrice"].Visible  = false;
            dgv_StockEditor.Columns["MatchBuyQty"].Visible  = false;
            dgv_StockEditor.Columns["SellAvgPrice"].Visible = false;
            dgv_StockEditor.Columns["MatchSellQty"].Visible = false;
            dgv_StockEditor.Columns["ROI"].Visible          = false;
            dgv_StockEditor.Columns["ClosePrice"].Visible   = false;
            dgv_StockEditor.Columns["OpenPrice"].Visible    = false;
            dgv_StockEditor.Columns["MatchTime"].Visible    = false;
            dgv_StockEditor.Columns["MatchPrice"].Visible   = false;
            dgv_StockEditor.Columns["MatchQty"].Visible     = false;
            dgv_StockEditor.Columns["TotalQty"].Visible     = false;
            dgv_StockEditor.Columns["AH"].Visible           = false;
            dgv_StockEditor.Columns["NH"].Visible           = false;
            dgv_StockEditor.Columns["NL"].Visible           = false;
            dgv_StockEditor.Columns["AL"].Visible           = false;

            //設定下拉選單預設值
            cb_BuyMode.SelectedIndex      = 0;
            cb_StopLossMode.SelectedIndex = 0;
            cb_LockGainMode.SelectedIndex = 0;
        }
Esempio n. 10
0
 private string MatchLogFolder = ""; //買入賣出成交紀錄
 public TradeBotQA(string stockid, string brokerid, string account, ushort BuyQty, QuoteCom quotecom, TaiFexCom taifexcom, int amountthreshold, BuyMode buymode, StopLossMode stoplossmode, LockGainMode lockgainmode) : base(stockid, brokerid, account, BuyQty, quotecom, taifexcom, amountthreshold, buymode, stoplossmode, lockgainmode)
 {
     //初始化成交明細下載目錄
     this.MatchLogFolder = Path.Combine(Directory.GetCurrentDirectory(), DateTime.Now.ToString("yyyyMMdd"));
     //建立目錄
     if (!Directory.Exists(this.MatchLogFolder))
     {
         Directory.CreateDirectory(this.MatchLogFolder);
     }
     Console.WriteLine(MatchLog);
 }
Esempio n. 11
0
 public StocksTable(QuoteCom quote)
 {
     quoteCom = quote;
     Stocks   = new Dictionary <string, Stock>();
 }