HSP程式交易論壇 >> 程式交易 >> 論壇主區 >> HSQL語言討論區 >> 進場一次,反手一次範例程式(This Bar)
進場一次,反手一次範例程式(This Bar)
Hunta,2010-01-17 15:52:03
其實用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-01-18 09:00:10
上面程式碼有修改,已重PO!!
kimoze1,2010-01-19 03:18:54
1500之後
平倉怎麼沒看到下單(要給API的下單動作最後部位=0)
???
Hunta,2010-01-19 08:43:59
請自行加上。
Hunta,2010-01-28 11:25:42
Sorry!!
上面程式碼有錯已修改重PO!!
jackcafe,2010-03-04 16:56:46
請問
1. 上面的例子, 與下載的版本似乎不太一樣
2. 80 1分_收盤價 = 1分_收盤價, 看不懂. 請解釋一下.
3. 80 & 380 條件相同, 開盤空手時, 照順序, 380 永遠執行不到?
This Bar 真的不好寫. 但用 Next Bar, 再加上滑價, 績效不容易提升.
Hunta,2010-03-04 17:02:54
1分_收盤價 = 1分_收盤價
是多(空)單進場條件,使用者可自行代換條件。
jackcafe,2010-03-04 17:24:37
哇 這麼快, 感恩!!
請問陣列指令的部分, 只是跟 反手的條件觸發 有關嗎?
因為陣列的指令不熟, 想直接跳過.
Hunta,2010-03-04 17:39:26
此範例之停損條件是「多單跌破前波低點」或「空單漲破前波高點」,所以利用「陣列高低點」來找出前波高低點。
條件觸發不一定與陣列相關連。
jackcafe,2010-03-04 19:58:49
請問
1180 1分_K線時間 > Vc 看不懂
Vc 是之前有下 操作訊號 時, 同時將 Vc=k線時間
既然是在同一根k線,這個條件, 永遠也不可能成立吧?
另外一個問題
Vt 的作用是否 是用來表示這根K線的處理狀態
0表示是當天第一根
1第一次處理
2被反手
3被停損
是這樣嗎?
Hunta,2010-03-04 21:22:02
1.「1分_K線時間 > Vc」表示反手訊號的下一根K線開始。
2.是的
jackcafe,2010-03-05 09:46:39
又多一些體會 謝謝
97 1 2 8: 此主題共有23帖 此頁12帖 每頁12帖
[查看完整模式] LeadBBS 5.0 耗時62毫秒 請求2次
|