COCO研究院

 找回密碼
 註冊
搜索
查看: 5184|回復: 10

Java呼叫下單大師萬用API

[複製鏈接]
發表於 15-3-27 23:09 | 顯示全部樓層 |閱讀模式
本帖最後由 ufai0005 於 15-3-27 23:15 編輯

今天簡單說一下Java程式要怎麼呼叫下單大師萬用API..第一步當然是先安裝下單大師..這個請參考下單大師手冊即可.
安裝好以後..就到一鍵搞定把你的券商API元件裝起來.
一定要先把券商API裝好..才能進行後續下單大師的設定..
而券商API登入的權限需跟營業員申請..這部份請洽你的營業員.
若只想亂玩一下....則下單大師可以先設定模擬帳戶也可以..
詳情可以參考下單大師的手冊(雖然很久沒更新,寫的又......很程式設計師調調)


接下來就是.....Java怎麼呼叫啦~
1.下載jna.jar...放到你的project下的lib資料夾裡(並不一定要放這位置,只要放到你記得的位置就好)
谷阿莫在9分鐘看完哈利波特說...真的是只要有心學校就可以有密道...因此只要有心那裡都可以下載到jna.jar
2.eclipse裡加入classpath
eclipse工具列裡Project->Properties->Java Build Path->Libraries->AddExternal JARs
點選你第1步驟下載的jna.jar
3.建立 Interface
可以到版主的部落格找到Interface程式(下單大師的範例就是版主提供)..並加入你的java專案.
因為下單大師安裝路徑已變更,因此需把路徑修改成"C:\\OrderMaster\\AutoOrder\\OMSignAPI"
Noname.jpg
4.真正呼叫下單大師的java程式就只有這3行...
import jna.OMSignAPI;
boolean x = OMSignAPI.INSTANCE.IniDllAndPosition("OOXX123", 0); //起始部位
boolean y = OMSignAPI.INSTANCE.GoOrder("OOXX123", "", getNowTime(), 1, 9500); //下單


看起來很簡單..但裡面的重點若沒人講..你可能也得搞一陣才能知道怎麼用..
而且下單大師手冊或範例裡也都沒有
首先
那個OOXX123是什麼??
這個就是策略管理裡萬用API的識別碼.....可以改成你想要的文數字..只要程式和下單大師的識別碼一樣即可.
Noname.jpg
再來
你設定好下單大師後..要按開始下單可能會出現以下訊息
Noname.jpg
這就是因為你沒有先跑第一行程式...告訴下單大師起始倉位是多少.
boolean x = OMSignAPI.INSTANCE.IniDllAndPosition("OOXX123", 起始倉位); //起始部位
但並不是隨便送一個數字..是若你送錯數字(和下單大師記錄的策略倉位不同)..吔...還是不行.
第一行執行過後.....就可以啟動啦~
據我測試.....每次下單大師啟動都要跑過一次...

再來就進入到下單了
boolean y = OMSignAPI.INSTANCE.GoOrder("OOXX123", "", getNowTime(), 1, 9500); //下單
單看這行..各位應該是想說..下1口單限價9500吧~
boolean y = OMSignAPI.INSTANCE.GoOrder("OOXX123", "", getNowTime(), -1, 9500); //下單
而這行各位應該是想說..下1口單限價9500吧~
這可能是對的.也可能是錯的.
要看你在下單大師的設定是怎樣.下圖裡有一個選項就是總倉位下單
若你勾起來的話..下單大師會自動把你的倉位變成總共多單1口
假設你本來有倉位-500口(放空500口),而你下了那一行指令.下單大師會幫你買501口多單來達到總倉位1口多單
依此類推..沒勾的話就是..一行指令增減幾口.

再來...就是限價9500點這件事啦..
你程式裡放的9500也不一定會用9500去掛...還是得看設定.
Noname.jpg
若你在這選項裡選市價掛單...
則你放任何數字皆可...反正就幫你掛市價成交..
而如果如上圖一樣設定限價讓5點..則你送9500多單.下單大師會幫你掛9505多單買1口
相對空單就9495放空1口.
而後面那個市價平倉選項...指的就是你可以限價買進(放空),然後用市價平倉....就是沒買到沒關係..但想跑的時候無論如何一定要跑得掉就對了~這個逃命應該蠻有用的XD
另外就是你若選限價..9500改放0 下單大師就變成市價掛單.

對程式交易者來說一般應該都是用市價單...因為你的策略把下單訊號丟到下單大師,而下單大師也正常丟出去.但是到了券商卻沒成交..此時你的策略是不會知道低..策略程式會認為有成交..接下來要平倉的時候再丟個反向的出去..最後的結果是沒平倉 +_+
因此這整體的細節還是有很多要注意的...要小心.

大概講一下就一大堆了...有問題大家再討論吧~

評分

參與人數 2金錢 +7 收起 理由
soumont + 2 好文章,我推薦
philipz + 5 好文章,我推薦

查看全部評分

 樓主| 發表於 15-3-27 23:28 | 顯示全部樓層
記得作業系統若是win7 64位元...要安裝x86版的java & jdk
發表於 15-3-28 00:11 | 顯示全部樓層
感謝分享  很不錯
發表於 15-3-28 10:07 | 顯示全部樓層
感謝分享好好研究研究
發表於 15-3-29 21:50 | 顯示全部樓層
感謝版大的分享。
 樓主| 發表於 15-4-9 17:03 | 顯示全部樓層
boolean y = OMSignAPI.INSTANCE.GoOrder("OOXX123", "", getNowTime(), 1, 9500); //下單

第二個欄位在範例中放""(空字串)的原因是因為在下單機中已經選定好商品...
若程式裡想要動態的改變商品時...例如.當OOO時下大台指.當SSS時下小台指
那你就要選擇訊號決定這個選項. Noname.jpg
在訊號決定選項中你要動態的組合出字串..格式如下.
Noname.jpg
但我個人認為這樣做有點複雜..我喜歡單純一點.因此我是在下單機中設定好要下那種商品.

另外..
程式和下單機的開啟順序.這部份在下單大師的說明檔裡有說
先開下單大師再開程式.因為若先開程式再開下單大師,則下單大師不會自動更新.
為什麼我會特別提出來.....
是因為先開下單大師時,會出現"無法取得訊號倉位,或策略起始倉位與目前訊號倉位不同步,無法啟動下單。"
我有試過...先開程式,再開下單大師...就不會出現這訊息.
所以我以為這樣才是對的..但這樣會造成下單大師不能自動更新.因此要注意一下.


另只要你主程式開著..下單大師不管重新開啟幾次.都可以不用重啟主程式.
這是什麼意思呢?
意思就是..萬一下單大師當掉(有時多按幾下某一個button[monkey test],就當了..),你只要把下單大師重啟即可.不用主程式也要跟著一起重啟.

萬一主程式掛了..則下單大師不用重啟.只要你的主程式重啟即可(但這要看你的程式寫法...能不能允許重啟..)
若程式內沒有記錄倉位.主程式重啟後不知道倉位..可以呼叫下單大師萬用API裡的功能---GetNowPosition(string signID);

我寫這些都是想要讓有心從java進入程式交易的人有一些可參考..順便我自己記錄一下我的學習過程.
若有錯或有更好的方式也請大家不吝指教..感謝~
發表於 15-4-10 00:14 | 顯示全部樓層
感謝大大的分享,
受益良多
發表於 15-4-10 08:56 | 顯示全部樓層
感謝大大的分享,
受益良多......
 樓主| 發表於 15-4-10 13:52 | 顯示全部樓層
當你依照下單大師手冊的開啟順序

<請注意>使用萬用 API,軟體啟動順序
1.先開下單大師 (更新版本)。
2.再開會用到萬用 API 的程式:印鈔機、TS、Excel 等等。
3.最後再按「開始下單」。


此時會有1個問題...
當使用 windows 排程讓電腦自動依時間執行程式..但是最後........誰來按那個 "開始下單"鈕咧??
下單大師有提供下單時間設定功能..如下圖
依下圖的設定..下單大師會自動在8:41分時自動按下"開始下單"鈕.
Noname.jpg

因此假設你就是設定8:41分..
那麼順序應該是(以下時間是我亂弄的..重點是順序.)
8:27開啟下單大師..此時下單大師會警示"無法取得訊號倉位".
8:38開啟主程式
下單大師會在8:41時自動執行"開始下單"
8:44開啟報價程式

發表於 16-8-24 22:25 | 顯示全部樓層
太好了,正在找這個~~~
發表於 19-6-12 20:43 | 顯示全部樓層
感謝分享好好研究研究
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-11-25 11:32

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |