alexliou
發表於 17-5-9 05:34
chang91348 發表於 17-5-8 23:20
再來請教版大,之前想在OnNotifyTick內,接收二檔(道瓊指數和小道瓊期指),經過多設個按鈕,使用事件 +=, 已可 ...
在Event Handler裡加個判斷篩選即可
if (sStockIdx !=道瓊 or 小道瓊sStockIdx)
return
else
{
收錄及運算
}
chang91348
發表於 17-5-9 12:12
目前對於事件的 handler還一知半解,我是寫在OnNotifyTick裡
void OnNotifyTicks(short sStockidx, int nPtr, int nTime, int nClose, int nQty)
{
if (sStockidx==sUSAidx1) //小道瓊期指
{
......
}
else //道瓊指數
{
........
string strData2 = nTime.ToString() + " " + nClose.ToString() + " " + nQty.ToString();
listTicks.Items.Add(strData2);
listTicks.SelectedIndex = listTicks.Items.Count - 1;
}
結果就是二檔報價會交錯記錄,後來想想,會是設Timer的關係嗎?我設Timer同時啓動
connect,quote,Tick, 在設Timer時,編繹會出現跨執行緒錯誤,經google後,Timer 內加入Timer1.SynchronizingObject = this; 就可完成編繹,是這樣會導致跨執行緒非同步嗎?
alexliou
發表於 17-5-9 12:28
本帖最後由 alexliou 於 17-5-9 12:36 編輯
chang91348 發表於 17-5-9 12:12
目前對於事件的 handler還一知半解,我是寫在OnNotifyTick裡
void OnNotifyTicks(short sStockidx, i ...
道瓊和小道是共用一個List(listTicks) 嗎?如果容器是共用的, 那前面的區分就沒作用了
如果你同一個時間只要看其中之一那就先要用page50去取消原先的Tick訂閱
或是用相同的頁碼去request 道瓊及小道的Ticks
如果同時要看兩個
就用兩個List, 兩個UI
chang91348
發表於 17-5-9 13:34
謝謝版主,其實原本是都不需要放在List,只想在背後運算而已,放在List是為了監看程式運作如何,所以只有把道瓊的Tick納入而已,而小道瓊只是在背景運算,偵測停損停利是否達成而已,不過小道瓊的nClose卻會自動跑到ListTick內......
上次版主有提到用GetStockByNo去取得不同的sStockidx,因為我不是很清楚,也不好意思一直問,加上我只需二檔的報價,所以就偷雞,先Request Tick其中一檔,取得其sStockidx,另一個sStockidx就不重要了,用else來取代,所以就變成上面的程式....
不過版主所說,用相同的頁碼去取得二檔的Tick,按照說明書,好像一個頁碼只能取得一檔而已?好像不能像RequestStocks用#隔開二檔的代碼.我是複製原本的程式碼,多做一個Textbox,和 Buton,再request Tick一起,它就會同時在OnNotifyTick接收到
還有版主所說二個UI,不知是什麼,看起來比較有可能把二檔分開,還望不吝指教
alexliou
發表於 17-5-9 15:11
chang91348 發表於 17-5-9 13:34
謝謝版主,其實原本是都不需要放在List,只想在背後運算而已,放在List是為了監看程式運作如何,所以只有把道瓊 ...
RequestTicks 一個頁碼的確只能只能取得一檔的Ticks
要取得兩檔的資料: 1)用兩個頁碼,==>傳回兩檔的Ticks
2) 用同樣的頁碼, 但帶入不同的StockNo, ==>停止傳送原先StockNo 的Ticks, 改傳新StockNo的Tick(只有一檔的Ticks在傳送)
看你描述的情形, 應該是同時需要兩檔, 用不同的頁碼去request 道瓊和小道的Ticks
但不管回傳幾檔的Ticks
當Tick傳到時, 都會引發OnNotifyTicks事件
OnNotifyTick Event Handler就會去處理它
在Event Handler裡,你雖然判斷了新傳回來的Tick是屬於哪一檔股票的Tick
但你都把它放進了同一個List裡
從這個List的角度而言, 這個List裡裝的當然是混雜的資料
如果你把Dow的資料放到List1, mini 放在List2
資料自然就分開了
UI 指的Form上面的控制項, 是用來User互動的
你現在把Ticks放在 in-memory List裡
如果要把它顯示在銀幕上, 就需要datagridview, listbox, text box這些控制項(也就是UI)了
chang91348
發表於 17-5-9 15:37
誠如版主所說,我用了二個PageNo去取得二檔Tick,不過只有將Dow 的資料放入List中,Mini應該没有,也許是我的邏輯那裡錯了,我再測試看看,謝謝你
stock1586
發表於 17-5-9 18:34
alexliou 發表於 17-5-8 09:57
no problem, 請隨便問
請問 大大有LINE ?是否方便這樣詢問比較快~~感謝
j202036
發表於 17-5-26 15:52
大大 請教一下,你最近使用api會不會出現報價中斷的問題?
謝謝
alexliou
發表於 17-5-26 21:09
j202036 發表於 17-5-26 15:52
大大 請教一下,你最近使用api會不會出現報價中斷的問題?
謝謝
沒有出現報價中斷的問題
但自四月底出現不再支援期貨停損單的狀況
lawlu
發表於 17-5-26 23:35
alex大大您好,api新手,剛剛下載您的檔案,但是MyOrderMaster應用程式檔,無法執行,但是群益的c#範例檔是可以執行開啟的,不知哪裡出問題,謝謝回復
alexliou
發表於 17-5-27 13:11
lawlu 發表於 17-5-26 23:35
alex大大您好,api新手,剛剛下載您的檔案,但是MyOrderMaster應用程式檔,無法執行,但是群益的c#範例檔是 ...
有出現甚麼樣的錯誤訊息嗎?
可以用Visual Studio 打開原始檔嗎?
lawlu
發表於 17-5-27 14:29
感謝alex大抽空回覆,由於是程式新手,所以單純先想開啟您的檔案看一下與群益提供的範例檔案之報價的差異。雖然也有下載Visual Studio 2017 community版本,但也不曉得從那開啟。真是抱歉,在什麼都不懂的情況下,就貿然提出問題發問
alexliou
發表於 17-5-27 18:36
本帖最後由 alexliou 於 17-5-27 18:43 編輯
lawlu 發表於 17-5-27 14:29
感謝alex大抽空回覆,由於是程式新手,所以單純先想開啟您的檔案看一下與群益提供的範例檔案之報價的差異。 ...
執行bin (not obj) 目錄下的執行檔就可以了
https://social.msdn.microsoft.com/Forums/en-US/456ebb0e-6fa3-4a77-a723-6984c5208562/what-is-with-all-of-the-files-for-a-simple-program?forum=csharpide
lawlu
發表於 17-5-31 22:46
Alex 大大,感謝回覆,在bin資料夾下的應用程式無法執行,且也沒有出現任何訊息,我想應該是沒有設定帳密的關係。
今天東摸摸西摸摸,用Visual Studio Community 2017打開您的檔案如附圖,冒昧問一下,要在哪裡設定我的帳密呢?
alexliou
發表於 17-6-1 05:31
lawlu 發表於 17-5-31 22:46
Alex 大大,感謝回覆,在bin資料夾下的應用程式無法執行,且也沒有出現任何訊息,我想應該是沒有設定帳密的 ...
bin\Debug 和 bin\Release 之下的 MyOrderMaster.Exe 應該都可以執行才對
初次執行時會進入帳號設定畫面
輸入帳密 選儲存後離開就會自動登入了
如果exe檔真的無法執行,
那你用VS 2017打開原始檔後按下<F5> 或 click >開始就可重新Compile並執行了
頁:
1
2
[3]
4
5
6
7
8
9
10
11
12