註冊  登入
 

 搜尋

迷你方式顯示論壇 RSS訂閱此版新訊息  

加入收藏 

使用幫助 

聯繫我們 
首頁 >> 程式交易 >> 論壇主區 >> HSQL語言討論區 >> 查看文章
 新帖 新投票 回覆文章 上篇 重新整理 下篇  


 97128: 此主題共有23帖 此頁12帖 每頁12帖
 


 主題:進場一次,反手一次範例程式(This Bar) - 複製地址
 

帥哥,離線

Hunta 



門派 管理員
職務 總版主
級別 法老
聲望 +100000
財富 100002
積分 101915
經驗 642850
文章 1733
註冊 09-04-10 17:15
發表: 2010-01-17 15:52:03 人氣:110025樓主

進場一次,反手一次範例程式(This Bar)

其實用This Bar方式編寫程式是比較複雜而且非常容易出錯的做法,但是我發現HSP系統的使用者都非常勇於挑戰極限,所以我就寫一個「This Bar進場一次,反手一次」的範例程式,供大家參考。
 
程式碼如下:
  10 If 1分_K線日期 <> 前1_1分_K線日期 Then 
  20  Vt = 0 
  30 End If 
  40 
  50 // 多單進場 
  60 If 目前部位( 倉位多空 ) <= 0 And Vt = 0 Then 
  70  If 單K計數器( 目前K線 , 0 ) = 0 Then 
  80   If 1分_收盤價 = 1分_收盤價 Then 
  90    Show [ K線下方 , ▲ ] 
 100    Va = 1分_開盤價 
 110    操作訊號( 空單平倉 , 1口 , Va ) 
 120    操作訊號( 多單建倉 , 1口 , Va ) 
 130    下單[ MTX 小台指期 , 操作價位:市價 , 最終部位:1 ] 
 140    Vt = 1 
 150    Vc = 1分_K線時間 
 160    載入陣列[ 1分_最低價 , 最低價 -> 陣列1 ] 
 170    A2{} = 陣列高低點( 陣列1 , 1 ~ 249 , 級數=4 ) 
 180    Vl = 陣列2值( 1 ) 
 190    單K計數器( 目前K線 , 0 ) = 1 
 200   End If 
 210  Else 
 220   Show [ K線下方 , ▲ ] 
 230   Va = 1分_開盤價 
 240   操作訊號( 空單平倉 , 1口 , Va ) 
 250   操作訊號( 多單建倉 , 1口 , Va ) 
 260   Vt = 1 
 270   Vc = 1分_K線時間 
 280   載入陣列[ 1分_最低價 , 最低價 -> 陣列1 ] 
 290   A2{} = 陣列高低點( 陣列1 , 1 ~ 249 , 級數=4 ) 
 300   Vl = 陣列2值( 1 ) 
 310  End If 
 320 End If 
 330 
 340 // 空單進場 
 350 If 目前部位( 倉位多空 ) >= 0 And Vt = 0 Then 
 360  If 單K計數器( 目前K線 , 1 ) = 0 Then 
 370   If 1分_收盤價 = 1分_收盤價 Then 
 380    Show [ K線上方 , ▼ ] 
 390    Va = 1分_開盤價 
 400    操作訊號( 多單平倉 , 1口 , Va ) 
 410    操作訊號( 空單建倉 , 1口 , Va ) 
 420    下單[ MTX 小台指期 , 操作價位:市價 , 最終部位:-1 ] 
 430    Vt = 1 
 440    Vc = 1分_K線時間 
 450    載入陣列[ 1分_最高價 , 最高價 -> 陣列1 ] 
 460    A2{} = 陣列高低點( 陣列1 , 1 ~ 249 , 級數=4 ) 
 470    Vh = 陣列2值( 101 ) 
 480    單K計數器( 目前K線 , 1 ) = 1 
 490   End If 
 500  Else 
 510   Show [ K線上方 , ▼ ] 
 520   Va = 1分_開盤價 
 530   操作訊號( 多單平倉 , 1口 , Va ) 
 540   操作訊號( 空單建倉 , 1口 , Va ) 
 550   Vt = 1 
 560   Vc = 1分_K線時間 
 570   載入陣列[ 1分_最高價 , 最高價 -> 陣列1 ] 
 580   A2{} = 陣列高低點( 陣列1 , 1 ~ 249 , 級數=4 ) 
 590   Vh = 陣列2值( 101 ) 
 600  End If 
 610 End If 
 620 
 630 If Vt = 1 And 1分_K線時間 > Vc Then 
 640  // 多單停損反手 
 650  If 目前部位( 倉位多空 ) > 0 Then 
 660   If 單K計數器( 目前K線 , 2 ) = 0 Then 
 670    If 條件觸發[ 成交價位一度小於Vl點 ] = 是 Then 
 680     Show [ K線上方 , ★ ] 
 690     操作訊號( 多單平倉 , 1口 , Vl ) 
 700     操作訊號( 空單建倉 , 1口 , Vl ) 
 710     下單[ MTX 小台指期 , 操作價位:市價 , 最終部位:-1 ] 
 720     Vt = 2 
 730     Vc = 1分_K線時間 
 740     載入陣列[ 1分_最高價 , 最高價 -> 陣列1 ] 
 750     A2{} = 陣列高低點( 陣列1 , 1 ~ 249 , 級數=4 ) 
 760     Vh = 陣列2值( 101 ) 
 770     單K計數器( 目前K線 , 2 ) = 1 
 780    End If 
 790   Else 
 800    Show [ K線上方 , ★ ] 
 810    操作訊號( 多單平倉 , 1口 , Vl ) 
 820    操作訊號( 空單建倉 , 1口 , Vl ) 
 830    Vt = 2 
 840    Vc = 1分_K線時間 
 850    載入陣列[ 1分_最高價 , 最高價 -> 陣列1 ] 
 860    A2{} = 陣列高低點( 陣列1 , 1 ~ 249 , 級數=4 ) 
 870    Vh = 陣列2值( 101 ) 
 880   End If 
 890   // 空單停損反手 
 900  Else 
 910   If 單K計數器( 目前K線 , 3 ) = 0 Then 
 920    If 條件觸發[ 成交價位一度大於Vh點 ] = 是 Then 
 930     Show [ K線下方 , ★ ] 
 940     操作訊號( 空單平倉 , 1口 , Vh ) 
 950     操作訊號( 多單建倉 , 1口 , Vh ) 
 960     下單[ MTX 小台指期 , 操作價位:市價 , 最終部位:1 ] 
 970     Vt = 2 
 980     Vc = 1分_K線時間 
 990     載入陣列[ 1分_最低價 , 最低價 -> 陣列1 ] 
1000     A2{} = 陣列高低點( 陣列1 , 1 ~ 249 , 級數=4 ) 
1010     Vl = 陣列2值( 1 ) 
1020     單K計數器( 目前K線 , 3 ) = 1 
1030    End If 
1040   Else 
1050    Show [ K線下方 , ★ ] 
1060    操作訊號( 空單平倉 , 1口 , Vh ) 
1070    操作訊號( 多單建倉 , 1口 , Vh ) 
1080    下單[ MTX 小台指期 , 操作價位:市價 , 最終部位:1 ] 
1090    Vt = 2 
1100    Vc = 1分_K線時間 
1110    載入陣列[ 1分_最低價 , 最低價 -> 陣列1 ] 
1120    A2{} = 陣列高低點( 陣列1 , 1 ~ 249 , 級數=4 ) 
1130    Vl = 陣列2值( 1 ) 
1140   End If 
1150  End If 
1160 End If 
1170 
1180 If Vt = 2 And 1分_K線時間 > Vc Then 
1190  If 目前部位( 倉位多空 ) > 0 Then 
1200   If 單K計數器( 目前K線 , 4 ) = 0 Then 
1210    If 條件觸發[ 成交價位一度小於Vl點 ] = 是 Then 
1220     Show [ K線下方 , ※ ] 
1230     操作訊號( 多單平倉 , 1口 , Vl ) 
1240     下單[ MTX 小台指期 , 操作價位:市價 , 最終部位:0 ] 
1250     Vt = 3 
1260     單K計數器( 目前K線 , 4 ) = 1 
1270    End If 
1280   Else 
1290    Show [ K線下方 , ※ ] 
1300    操作訊號( 多單平倉 , 1口 , Vl ) 
1310    Vt = 3 
1320   End If 
1330  Else 
1340   If 單K計數器( 目前K線 , 5 ) = 0 Then 
1350    If 條件觸發[ 成交價位一度大於Vh點 ] = 是 Then 
1360     Show [ K線上方 , ※ ] 
1370     操作訊號( 空單平倉 , 1口 , Vh ) 
1380     下單[ MTX 小台指期 , 操作價位:市價 , 最終部位:0 ] 
1390     Vt = 3 
1400     單K計數器( 目前K線 , 5 ) = 1 
1410    End If 
1420   Else 
1430    Show [ K線上方 , ※ ] 
1440    操作訊號( 空單平倉 , 1口 , Vh ) 
1450    Vt = 3 
1460   End If 
1470  End If 
1480 End If 
1490 
1500 // 尾盤平倉 
1510 If 1分_K線時間 = 1340 Then 
1520  Va = 1分_開盤價 
1530  If 目前部位( 倉位多空 ) > 0 Then 
1540   Show [ K線下方 , ※ ] 
1550   操作訊號( 多單平倉 , 1口 , Va ) 
1560   Vt = 3 
1570  End If 
1580  If 目前部位( 倉位多空 ) < 0 Then 
1590   Show [ K線上方 , ※ ] 
1600   操作訊號( 空單平倉 , 1口 , Va ) 
1610   Vt = 3 
1620  End If 
1630 End If 
 
程式碼下載 [URL=http://www.huntasoft.com/hsp/0102.rda]http://www.huntasoft.com/hsp/0102.rda[/URL]

[ 此貼最後由Hunta在2010/1/28 上午 11:24:53編輯過 ]   


帥哥,離線

Hunta 



門派 管理員
職務 總版主
級別 法老
聲望 +100000
財富 100002
積分 101915
經驗 642850
文章 1733
註冊 09-04-10 17:15
發表: 2010-01-18 09:00:102

上面程式碼有修改,已重PO!!

帥哥,離線

kimoze1 



級別 騎士
積分 255
經驗 15589
文章 203
註冊 09-06-07 23:33
發表: 2010-01-19 03:18:543

1500之後
平倉怎麼沒看到下單(要給API的下單動作最後部位=0)
???

帥哥,離線

Hunta 



門派 管理員
職務 總版主
級別 法老
聲望 +100000
財富 100002
積分 101915
經驗 642850
文章 1733
註冊 09-04-10 17:15
發表: 2010-01-19 08:43:594

請自行加上。

帥哥,離線

Hunta 



門派 管理員
職務 總版主
級別 法老
聲望 +100000
財富 100002
積分 101915
經驗 642850
文章 1733
註冊 09-04-10 17:15
發表: 2010-01-28 11:25:425

Sorry!!
上面程式碼有錯已修改重PO!!

帥哥,離線

jackcafe 



級別 職業俠客
積分 74
經驗 7953
文章 59
註冊 10-02-11 16:01
發表: 2010-03-04 16:56:466

請問
1. 上面的例子, 與下載的版本似乎不太一樣
2. 80    1分_收盤價 = 1分_收盤價, 看不懂.  請解釋一下.
3. 80 & 380 條件相同, 開盤空手時, 照順序, 380 永遠執行不到?

This Bar 真的不好寫.  但用 Next Bar, 再加上滑價, 績效不容易提升.

帥哥,離線

Hunta 



門派 管理員
職務 總版主
級別 法老
聲望 +100000
財富 100002
積分 101915
經驗 642850
文章 1733
註冊 09-04-10 17:15
發表: 2010-03-04 17:02:547

1分_收盤價 = 1分_收盤價
是多(空)單進場條件,使用者可自行代換條件。

帥哥,離線

jackcafe 



級別 職業俠客
積分 74
經驗 7953
文章 59
註冊 10-02-11 16:01
發表: 2010-03-04 17:24:378

哇 這麼快, 感恩!!

請問陣列指令的部分, 只是跟 反手的條件觸發 有關嗎?
因為陣列的指令不熟, 想直接跳過.


帥哥,離線

Hunta 



門派 管理員
職務 總版主
級別 法老
聲望 +100000
財富 100002
積分 101915
經驗 642850
文章 1733
註冊 09-04-10 17:15
發表: 2010-03-04 17:39:269

此範例之停損條件是「多單跌破前波低點」或「空單漲破前波高點」,所以利用「陣列高低點」來找出前波高低點。
條件觸發不一定與陣列相關連。

帥哥,離線

jackcafe 



級別 職業俠客
積分 74
經驗 7953
文章 59
註冊 10-02-11 16:01
發表: 2010-03-04 19:58:4910

請問
1180  1分_K線時間 > Vc 看不懂
Vc 是之前有下 操作訊號 時, 同時將 Vc=k線時間
既然是在同一根k線,這個條件, 永遠也不可能成立吧?

另外一個問題
Vt 的作用是否 是用來表示這根K線的處理狀態
0表示是當天第一根
1第一次處理
2被反手
3被停損
是這樣嗎?

帥哥,離線

Hunta 



門派 管理員
職務 總版主
級別 法老
聲望 +100000
財富 100002
積分 101915
經驗 642850
文章 1733
註冊 09-04-10 17:15
發表: 2010-03-04 21:22:0211

1.「1分_K線時間 > Vc」表示反手訊號的下一根K線開始。
2.是的

帥哥,離線

jackcafe 



級別 職業俠客
積分 74
經驗 7953
文章 59
註冊 10-02-11 16:01
發表: 2010-03-05 09:46:3912

又多一些體會 謝謝


 97128: 此主題共有23帖 此頁12帖 每頁12帖
 

 新帖 新投票 回覆文章



回覆文章 注意: *為必填項
*驗證訊息
用戶名稱 密碼 註冊
*文章名稱 長度不得超過255字
內容(最大25K)

是否是UBB代碼

內容支持插入UBB標籤
使用方法請參考幫助
其它選項:  顯示簽名   鎖定文章  - 顏色表   Alt+S或Ctrl+Enter快速提交