googleandy 發表於 13-10-2 21:17

請教 C# 問題


這個某期貨商的API
問題1: 以下這段程式大意如何?(大意即可)


問題2:為何tbTSymbol.Text的 Text後面還有中括號參數? 是何用途?

Thanks.

googleandy 發表於 13-10-2 21:37

補充說明:radioButton1 單式radioButton2複式tbTStrikePrice.Text履約價 tbTCallPut.Text買權/賣權tbTSide買/賣tbTSide2買/賣(第2商品)

rockwell 發表於 13-10-2 22:27

資訊太少,可能是這樣,胡亂回答一下!
問題一:

如果 tbTSymbol.Text = 0 且 tbTSymbol.Text = 1 且...... 的情形下,進入下面情境選擇,
如果radio按鈕1被按下的情形,
      就......
    不然
      就......

問題二:

不知道是不是有類似的文字框,所以.........用以表達不同的文字框。

googleandy 發表於 13-10-2 22:41

本帖最後由 googleandy 於 13-10-2 22:46 編輯

rockwell 發表於 13-10-2 22:27 static/image/common/back.gif
資訊太少,可能是這樣,胡亂回答一下!
問題一:


感謝rockwell大.
tbTSymbol.Text 可能是--- tbTSymbol.Text 從左算起第3個字母.以這個字母來 進一步邏輯判斷.




rockwell 發表於 13-10-2 23:12

從左算起?那為什麼不從右算起?難道 tbT 是語法嗎?


andy大,有興趣念書的話,可以參考「Head.First.C#」中文版,

看完後,應該就比較容易去修改券商的範本了。

曾經讀過30~40頁,感覺書寫得滿易懂的。

ambercrystal 發表於 13-10-2 23:29

本帖最後由 ambercrystal 於 13-10-2 23:33 編輯

G 大, 這應該是 K 公司 API sample codes?你再去他們網站下最新版 sample codes 這段應該已經改過了(如下面).實際上在寫, 只要自己做 symbol 的處理方式, 不需要參考這段的寫法.我自己的交易策略平台也是用C#寫的, 曾 port 在兩家國內期貨商和一家國外交易商的 API 上, 這家期貨商相較我另一家國內期貨商, 這家報價和國內和外期下單處理非常快速且穩定, 連人在對岸連回台灣都很穩定, 唯一的缺點是沒有國外期貨報價, 需要另外再接報價源來下API外期單.

這家 API 刪除"全部"委托單的方式稍微比較麻煩, 需要將一個個委托單刪除單和成交單放在另一個 dataGridView 來判斷處理, 但刪單處理非常快速, 你如果走完這關, 其他下單處理功能應該就沒啥問題了.Login 方式不要用範例的那種每次要輸入的方式, 直接叫tfcom.LoginDirect(...) 把參數放在裡面, 就可以按一個鍵就把登入動作完成.有什麼問題, 需要幫忙請不吝提出.


private void InputChange(object sender, EventArgs e) {
            string symbol = tbTSymbol.Text;
            if (tbTSymbol.Text.Length < 3) return;
            //if (tbTComym.Text.Length < 4) return;
            if (tbTComym.Text.Length < 5) return;

            if (radioButton2.Checked) {
                if (tbTComym2.Text.Length < 4) return;
            }

            //2013.7.5 : 期貨也有短天期,故無法再以第二碼來判別 期/選 ; 改以radiobox判別
            //if ((tbTSymbol.Text == 'O') || (tbTSymbol.Text == '1') || (tbTSymbol.Text == '2') || (tbTSymbol.Text == '4') || (tbTSymbol.Text == '5')) {
            if (rbOpt.Checked) {//2013.7.5 選擇權
                if (radioButton1.Checked)
                  tb20Code.Text = tfcom.GenOptSymbol(tbTSymbol.Text, tbTComym.Text, tbTStrikePrice.Text, tbTCallPut.Text);
                else
                  tb20Code.Text = tfcom.GenOptDoubleSymbol(tbTSymbol.Text, tbTComym.Text, tbTStrikePrice.Text, tbTCallPut.Text, tbTSide.Text, tbTComym2.Text, tbTStrikePrice2.Text, tbTCallPut2.Text, tbTSide2.Text);
            }
            else{//2013.7.5 期貨
                if (radioButton1.Checked)
                  tb20Code.Text = tfcom.GenFutSymbol(tbTSymbol.Text, tbTComym.Text, "");
                else
                  tb20Code.Text = tfcom.GenFutSymbol(tbTSymbol.Text, tbTComym.Text, tbTComym2.Text);
            }
            tbSymbol.Text = tb20Code.Text;
            if ((radioButton2.Checked) && (tb20Code.Text.Length == 0))
                tb20Code.Text = "無此商品組合";
      }

googleandy 發表於 13-10-3 00:18

ambercrystal 發表於 13-10-2 23:29 static/image/common/back.gif
G 大, 這應該是 K 公司 API sample codes?你再去他們網站下最新版 sample codes 這段應該已經改過了(如下 ...

感謝Ambercrystal大詳盡解說。
我個人用了十餘年的VB,不懂C#。
不過,既然期貨商交給我C#,只好硬著頭皮,生吞活剝去拆解。
我甚至還不知道已改版。

C#和VB的 .net版本都在.net平台共用同樣的類別庫,
不過語法有相當多的差異,
想要弄通還得花相當多的時間和精神。



googleandy 發表於 13-10-3 00:32

本帖最後由 googleandy 於 13-10-3 00:59 編輯

rockwell 發表於 13-10-2 23:12 static/image/common/back.gif
從左算起?那為什麼不從右算起?難道 tbT 是語法嗎?



譬如圖片1紅圈:TXF 從左算起第3個字母是 F ----代表期貨   
                     TXO 從左算起第3個字母是 O ----代選擇權
以上是我猜的,不一定對

電腦人 發表於 13-10-3 06:01

本帖最後由 電腦人 於 13-10-3 06:22 編輯

不需要這麼麻煩,不想再學習C#的話

這邊有快速C#轉VB.NET代碼

http://www.developerfusion.com/tools/convert/csharp-to-vb/

該網頁另一頁也有VB.NET TO C#的轉換器

VB.NET與C#沒有誰高階低階,高尚不高尚,好不好用的問題

兩個都是.NET FRAMEWORK平台,都一樣需要轉成中介語言來執行

自己找一個喜歡用的就好

但是如果是要參考別人寫的語法,只能遷就對方的原始碼了

不要去強迫任何人一定要去學會 C# 或 VB.NET,只要是.NET FRAMEWORK內的語言,現在是沒有差別的
愛用C#就用C#,愛用VB.NET就用VB.NET,兩者語法可以互轉沒問題
不過以G大的問題,應該重點在於要到市面上找書去了解C#語法結構才是正途
要解讀人家程式的意圖,需要去徹底了解語法

順勢而為...現在程式界,使用微軟的方案趨勢的確是使用C#的人比較多,若不徹底解決(看懂程式碼架構),永遠只能用猜的
連微軟認證都沒有VB.NET認證了

一直用轉換器去轉也不是好辦法,畢竟這不是一般學校作業寫寫就好,這是跟錢有關的程式....


JamesLo 發表於 13-10-3 14:41

googleandy大:
tbTSymbol.Text 可能是--- tbTSymbol.Text 從左算起第3個字母

譬如圖片1紅圈:TXF 從左算起第3個字母是 F ----代表期貨   
TXO 從左算起第3個字母是 O ----代選擇權


你說的全部正確
[ ] 是陣列(array), 例如
如果tbTSymbol.Text = "TXF";
那麼 tbTSymbol.Text 表示是 'T'
tbTSymbol.Text 表示是 'X'
tbTSymbol.Text 表示是 'F'

randloop 發表於 13-10-4 00:23

本帖最後由 randloop 於 13-10-4 00:33 編輯

VB.NET的陣列索引子用小括號(),在C#用中括號
另外radioButton是單選的控制項

以圖片來猜測radioButton1是那個"單"
意思是"單複"選中"單"要做的事,反之則是選中"複"要做的事

另外以下例說明兩個語言最常見的差異

C#
int[] intArray = new int;

VB.NET
Dim intArray As Integer() = New Integer(2) {}


建立長度為3之陣列時,兩個語言會有差1的現象
如上 在C# 中括號裡要指定為3    VB.NET在小括號裡要指定為2
我曾在寫某個程式為這個debug了半天 Orz

然後就是有中括號跟小括號的差別

另外就是宣告變數時 型別跟變數名稱之先後順序會不一樣

最後 C#一定要分號結尾

googleandy 發表於 13-10-5 11:46

randloop 發表於 13-10-4 00:23 static/image/common/back.gif
VB.NET的陣列索引子用小括號(),在C#用中括號
另外radioButton是單選的控制項



.......建立長度為3之陣列時,兩個語言會有差1的現象
如上 在C# 中括號裡要指定為3    VB.NET在小括號裡要指定為2
我曾在寫某個程式為這個debug了半天 ......

感謝 randloop 大分享很寶貴的經驗.
頁: [1]
查看完整版本: 請教 C# 問題