HSP程式交易論壇 >> 程式交易 >> 論壇主區 >> 下單機討論區 >> 程式交易自動下單原理與流程介紹
程式交易自動下單原理與流程介紹
Hunta,2009-06-13 10:56:15
最近有好幾位使用者詢問有關於自動下單的問題,發現有很多人對於自動下單的原理與流程仍十分陌生,所以在此介紹一下。
請先參考下圖:
[IMGA=0,left]http://www.huntasoft.com/hsp/image/flow-1.jpg[/IMGA]
名詞定義:
1.策略平台:可用於編輯及執行策略程式之系統平台,可藉由系統之即時運算功能,執行使用者所編寫的策略程式,並且產生多空進出場決策訊息;簡單來說,就像大腦做出決定而已,但並未真正付諸執行(送單)。
2.下單機:是一支獨立的小程式,主要用於執行下單的動作,當然,它必須依據策略程式的多空訊號來送單,而它與策略程式之間是透過所謂的「命令檔」來進行溝通,即「下單機」會一直掃描此命令檔,看是否出現下單指令,一旦出現,則立即依照指令送單;而使用者可利用策略程式,將下單指令寫至「命令檔」,來控制「下單機」動作。
3.期貨商:即一般之期貨劵商。
4.API程式:由劵商所提供之下單程式元件,「下單機」即是透過此元件直接與劵商主機連線,進行下單動作。
程式交易自動下單步驟建議:
1.藉由HSP策略平台,先編輯策略程式,並且檢驗程式之獲利績效,至滿意為止。
2.向所屬劵商之營業員申請API程式及辦妥相關手續,注意,目前提供API下單的期貨商有:[SIZE=2]康和、台証、日盛、統一、群益、永豐、寶來。[/SIZE]
3.安裝劵商之API程式元件。
4.選擇下單機,目前市面上有很多下單機程式,有些免費,有些需付費,當然這部份由使用者自行決定,但必須注意是否有支援你所屬的劵商,以及是否以API方式送單(非網頁送單)。
5.在策略程式中加入「命令檔輸出程式」。可參考 [URL=http://www.huntasoft.com/hsp/lesson13.htm]http://www.huntasoft.com/hsp/lesson13.htm[/URL]
6.[SIZE=3][SIZE=2]下單機在正式開始下單之前,建議先以模擬單(僅記錄資料不真正下單)方式跑個幾天,待確認下單機所收到的多空訊號、時間、價位及口數都沒有問題時,再正式下單。[/SIZE] [/SIZE]
mingyi1973,2009-06-15 13:56:08
您說:下單機在正式開始下單之前,建議先以模擬單(僅記錄資料不真正下單)方式跑個幾天,待確認下單機所收到的多空訊號、時間、價位及口數都沒有問題時,再正式下單。
我想請教一下,可以在雅策下單機以模擬單(僅記錄資料不真正下單)方式跑嗎?要如何跑跑看?
謝謝!
Hunta,2009-06-15 14:11:30
[QUOTE][B]下面引用由[U]mingyi1973[/U]發表的內容:[/B]
您說:下單機在正式開始下單之前,建議先以模擬單(僅記錄資料不真正下單)方式跑個幾天,待確認下單機所收到的多空訊號、時間、價位及口數都沒有問題時,再正式下單。
我想請教一下,可以在雅策下單機以模擬...[/QUOTE]
原則上HSQL程式語言可以搭配雅策下單機,但模擬單的操作方式可能要問一下雅策,因為下單機是由他們寫的!!
mingyi1973,2009-06-16 11:31:33
這是我照您寫的例子改的,但是雅策都沒有交易,請問能幫我看看那裡有問題嗎?謝謝!
10 If 目前部位( 倉位多空 ) > 0 Then
20 If 前1_5分_K線時間 = 1340 Then
30 操作訊號( 多單平倉 , 1口 , Va )
40 Show [ K線下方 , 收 ]
50 End If
60 End If
70
80 If 目前部位( 倉位多空 ) < 0 Then
90 If 前1_5分_K線時間 = 1340 Then
100 操作訊號( 空單平倉 , 1口 , Va )
110 Show [ K線上方 , 收 ]
120 End If
130 End If
140
150 Va = 5分_開盤價
160
170 // 多單進場
180 If 目前部位( 倉位多空 ) <= 0 Then
190 If 5分_MACD交叉( 6 , 6 , 9 ) = 是 And 交叉類型 = 1 Then
200 Vb = 1
210 If 目前部位( 倉位多空 ) < 0 Then
220 Vb = K線序號( 目前K線 ) - 目前部位( 第 1 次建倉K線序號 )
230 End If
240 If Vb >= 1 Then
250 Show [ K線下方 , 多 ]
260 操作訊號( 空單平倉 , 1口 , Va )
270 操作訊號( 多單建倉 , 1口 , Va )
280 If 最後K線 = 是 And 單K計數器( 目前K線 , 0 ) = 0 Then
290 GoSub date_time
300 S1$ = S1$ + '1'
310 輸出文字檔( C:\cur_cmd.txt , S1$ )
320 單K計數器( 目前K線 , 0 ) = 1
330 End If
340 End If
350 End If
360 End If
370
380 // 空單進場
390 If 目前部位( 倉位多空 ) >= 0 Then
400 If 5分_MACD交叉( 6 , 6 , 9 ) = 是 And 交叉類型 = -1 Then
410 Vb = 1
420 If 目前部位( 倉位多空 ) > 0 Then
430 Vb = K線序號( 目前K線 ) - 目前部位( 第 1 次建倉K線序號 )
440 End If
450 If Vb >= 1 Then
460 Show [ K線上方 , 空 ]
470 操作訊號( 多單平倉 , 1口 , Va )
480 操作訊號( 空單建倉 , 1口 , Va )
490 If 最後K線 = 是 And 單K計數器( 目前K線 , 0 ) = 0 Then
500 GoSub date_time
510 S1$ = S1$ + '1'
520 輸出文字檔( C:\cur_cmd.txt , S1$ )
530 單K計數器( 目前K線 , 0 ) = 1
540 End If
550 End If
560 End If
570 End If
580
590 Sub date_time
600 Vc = 目前時間( 西元年4碼 )
610 S1$ = Cstr( Vc ) + '/'
620 Vc = 目前時間( 月 )
630 If Vc < 10 Then
640 S1$ = S1$ + '0' + Cstr( Vc ) + '/'
650 Else
660 S1$ = S1$ + Cstr( Vc ) + '/'
670 End If
680 Vc = 目前時間( 日 )
690 If Vc < 10 Then
700 S1$ = S1$ + '0' + Cstr( Vc ) + ''
710 Else
720 S1$ = S1$ + Cstr( Vc ) + ''
730 End If
740 Vc = 目前時間( 時 )
750 If Vc < 10 Then
760 S1$ = S1$ + '0' + Cstr( Vc ) + ':'
770 Else
780 S1$ = S1$ + Cstr( Vc ) + ':'
790 End If
800 Vc = 目前時間( 分 )
810 If Vc < 10 Then
820 S1$ = S1$ + '0' + Cstr( Vc ) + ''
830 Else
840 S1$ = S1$ + Cstr( Vc ) + ''
850 End If
860 End Sub
Hunta,2009-06-16 11:46:28
請檢查一下C:\cur_cmd.txt檔案的內容,是否有輸出類似
2009/06/17 11:20 1
格式的文字內容?
mingyi1973,2009-06-16 11:56:32
還有一個問題
客戶管理\進階設定\api路徑
和
客戶管理\進階設定\主程式路徑
要指向那裡?
Hunta,2009-06-16 12:13:11
[QUOTE][B]下面引用由[U]mingyi1973[/U]發表的內容:[/B]
還有一個問題
客戶管理\進階設定\api路徑
和
客戶管理\進階設定\主程式路徑
要指向那裡?[/QUOTE]
這個部份可能要問雅策了。
97 1 8: 此主題共有7帖 此頁7帖 每頁12帖
[查看完整模式] LeadBBS 5.0 耗時62.5毫秒 請求2次
|