HSQL程式教學--範例說明(策略實作編1)
範例1.
本範例以MACD指標(參數為10,10,20)為操作標的,當MACD指標黃金交叉時多單建倉,當MACD指標死亡交叉時空單建倉。
10 If 前1_5分_MACD交叉( 10 , 10 , 20 ) = 是 Then
20 If 交叉類型 = 1 Then
30 If 目前部位( 倉位多空 ) <= 0 Then
40 Show [ K線下方 , 多 ]
50 Va = 5分_開盤價
60 操作訊號( 空單平倉 , 1口 , Va )
70 操作訊號( 多單建倉 , 1口 , Va )
80 End If
90 Else
100 If 目前部位( 倉位多空 ) >= 0 Then
110 Show [ K線上方 , 空 ]
120 Va = 5分_開盤價
130 操作訊號( 多單平倉 , 1口 , Va )
140 操作訊號( 空單建倉 , 1口 , Va )
150 End If
160 End If
170 End If
下載式檔1001.rda (請下載至Huntap資#料匣內)
說明:
行號10 當前1根5分鐘線產生MACD交叉時執行行號20,否則結束執行;
至於為什麼是檢查前1根K線而不是當根K線?因為若是當根K線,因為K線還在進行當中,價位可能忽上忽下,有可能造成MACD
指標忽而交叉忽而分開,如此會造成訊號跳動的問題發生。
行號20 如果是黃金交叉執行行號30,否則執行行號100。
行號30 如果目前手中部位為空單或是空手則執執行行號40,否則結束執行。
行號40 在K線下方顯示一個「多」字。
行號50 變數Va等於目前K線之開盤價。
行號60 發佈空單平倉之操作訊號,平倉價位在Va(即開盤價);若目前為空手,系統內定不會處理空單平倉之動作。
行號70 發佈多單建倉之操作訊號,建倉價位在Va(即開盤價)。
....
行號100 如果目前手中部位為多單或是空手則執執行行號110,否則結束執行。
行號110 在K線上方顯示一個「空」字。
行號120 變數Va等於目前K線之開盤價。
行號130 發佈多單平倉之操作訊號,平倉價位在Va(即開盤價);若目前為空手,系統內定不會處理多單平倉之動作。
行號140 發佈空單建倉之操作訊號,建倉價位在Va(即開盤價)。
以上策略程式可在K線圖上即時顯示多空訊號,並且可以進行績效回測,畫面如下:
※加入下單機程式
以範例1程式為主體,介紹如何加入下單機程式:
(本範例是以雅策下單機為例,其下單機之命令檔為c:\cur_cmd.txt,格式為yyyy/mm/dd hh:nn 多空部位 )
10 If 前1_5分_MACD交叉(
10 , 10 , 20 ) = 是 Then
20 If 交叉類型 = 1 Then
30 If 目前部位( 倉位多空 ) <= 0 Then
40 Show [ K線下方 , 多 ]
50 Va = 5分_開盤價
60 操作訊號( 空單平倉 , 1口 , Va )
70 操作訊號( 多單建倉 , 1口 , Va )
80 S1$ = '1'
90 S2$ = Cstr( Va )
100 輸出命令檔( c:\cur_cmd.txt , [yyyy]/[mm]/[dd]□[hh]:[nn]:[ss]□[S1$]□[S2$]
, 單次 )
110 End If
120 Else
130 If 目前部位( 倉位多空 ) >= 0 Then
140 Show [ K線上方 , 空 ]
150 Va = 5分_開盤價
160 操作訊號( 多單平倉 , 1口 , Va )
170 操作訊號( 空單建倉 , 1口 , Va )
180 S1$ = '-1'
190 S2$ = Cstr( Va )
200 輸出命令檔( c:\cur_cmd.txt , [yyyy]/[mm]/[dd]□[hh]:[nn]:[ss]□[S1$]□[S2$]
, 單次 )
210 End If
220 End If
230 End If
下載式檔1021.rda
(請下載至Huntap資料匣內)
※加入進場價位及警示聲響
以範例1程式為主體,介紹如何加入顯示進場價位及警示聲響::
10 If 前1_5分_MACD交叉( 10 , 10 , 20 ) = 是 Then
20 If 交叉類型 = 1 Then
30 If 目前部位( 倉位多空 ) <= 0 Then
40 Va = 5分_開盤價
50 Vb = 5分_最低價 - 10
60 S2$ = '多' + Cstr( Va )
70 顯示文字[ S2$ , 主畫面 , ( 0 , Vb ) , 字型: 新細明體 , 大小: 009 , 顏色: 16777215 ]
80 操作訊號( 空單平倉 , 1口 , Va )
90 操作訊號( 多單建倉 , 1口 , Va )
100 If 最後K線 = 是 And 單K計數器( 目前K線 , 1 ) = 0 Then
110 播放聲音( ALARM.WAV )
120 單K計數器( 目前K線 , 1 ) = 1
130 End If
140 End If
150 Else
160 If 目前部位( 倉位多空 ) >= 0 Then
170 Va = 5分_開盤價
180 Vb = 5分_最高價 + 15
190 S2$ = '空' + Cstr( Va )
200 顯示文字[ S2$ , 主畫面 , ( 0 , Vb ) , 字型: 新細明體 , 大小: 009 , 顏色: 16777215 ]
210 操作訊號( 多單平倉 , 1口 , Va )
220 操作訊號( 空單建倉 , 1口 , Va )
230 If 最後K線 = 是 And 單K計數器( 目前K線 , 1 ) = 0 Then
240 播放聲音( ALARM.WAV )
250 單K計數器( 目前K線 , 1 ) = 1
260 End If
270 End If
280 End If
290 End If
下載式檔1003.rda (請下載至Huntap資料匣內)
說明:
行號50 將目前K線之最低價減10點當做多訊文字顯示位置,存放於變數Vb。
行號60 組合文字字串S2$=文字「多」再加上開盤價,其中開盤價Va因為是數字,所以必須透過Cstr函數轉換為文字。
行號70 在K線圖上顯示多方訊息。
行號100 如果是最後一根K線並且單K計數器(1)為零,則執行行號110,其中單K計數器(1)用來控管警示聲響是否已發出。
行號110 發出警示聲響,聲音檔案c:\huntap/wav/ALARM.WAV。
行號120 單K計數器(1)標示為1,表示已發出警示聲響。
※加入即時績效資訊
以範例1程式為主體,介紹如何在K線圖右方之顯示資料欄加入目前多空部位及即時績效,如下圖:
10 If 前1_5分_MACD交叉( 10 , 10 , 20 ) = 是 Then
20 If 交叉類型 = 1 Then
30 If 目前部位( 倉位多空 ) <= 0 Then
40 Show [ K線下方 , 多 ]
50 Va = 5分_開盤價
60 操作訊號( 空單平倉 , 1口 , Va )
70 操作訊號( 多單建倉 , 1口 , Va )
80 End If
90 Else
100 If 目前部位( 倉位多空 ) >= 0 Then
110 Show [ K線上方 , 空 ]
120 Va = 5分_開盤價
130 操作訊號( 多單平倉 , 1口 , Va )
140 操作訊號( 空單建倉 , 1口 , Va )
150 End If
160 End If
170 End If
180
190 顯示資訊[ 目前部位 , 序號: 5 , 大小: 009 , 文字色: 0 , 背景色: 16777215 , 置中 , 字型: 新細明體 ]
200 If 目前部位( 倉位多空 ) = 1 Then
210 顯示資訊[ 多單 , 序號: 6 , 大小: 009 , 文字色: 255 , 背景色: 16777215 , 置中 , 字型: 新細明體 ]
220 Else
230 顯示資訊[ 空單 , 序號: 6 , 大小: 009 , 文字色: 32768 , 背景色: 16777215 , 置中 , 字型: 新細明體
]
240 End If
250 顯示資訊[ 建倉價位 , 序號: 8 , 大小: 009 , 文字色: 0 , 背景色: 16777215 , 置中 , 字型: 新細明體 ]
260 Vb = 目前部位( 第 1 次成本價位 )
270 顯示資訊[ Vb , 序號: 9 , 大小: 009 , 文字色: 12615680 , 背景色: 16777215 , 置中 , 字型: 新細明體
]
280 顯示資訊[ 目前績效 , 序號: 11 , 大小: 009 , 文字色: 0 , 背景色: 16777215 , 置中 , 字型: 新細明體 ]
290 If 目前部位( 倉位多空 ) = 1 Then
300 Vc = 5分_收盤價 - Vb
310 Else
320 Vc = Vb - 5分_收盤價
330 End If
340 If Vc >= 0 Then
350 顯示資訊[ Vc , 序號: 12 , 大小: 009 , 文字色: 255 , 背景色: 16777215 , 置中 , 字型: 新細明體
]
360 Else
370 顯示資訊[ Vc , 序號: 12 , 大小: 009 , 文字色: 32768 , 背景色: 16777215 , 置中 , 字型: 新細明體
]
380 End If
下載式檔1004.rda (請下載至Huntap資料匣內)
說明:
行號190 在資訊欄位第5列,顯示「目前部位」文字。
行號200 ~ 240 在資訊欄位第6列,顯示目前部位多空。
行號250 在資訊欄位第8列,顯示「建倉價位」文字。
行號260 ~270 在資訊欄位第9列,顯示建倉價位。
行號280 在資訊欄位第11列,顯示「目前績效」文字。
行號290 ~ 380 在資訊欄位第12列,顯示目前績效。。