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); }
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; } }
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; } }
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; } }
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(); }
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>(); }
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) { }
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; }
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); }
public StocksTable(QuoteCom quote) { quoteCom = quote; Stocks = new Dictionary <string, Stock>(); }