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次