HSP程式交易論壇 >> 程式交易 >> 論壇主區 >> HSQL語言討論區 >> 如何只寫出停損後的反向單
如何只寫出停損後的反向單
hunt168,2009-07-08 19:36:32
版主您好...
1.若只是針對虧損的單(當沖操作),當停損後(前K),應如何寫出適合的反向單呢?因程式中有停利單,目前個人編寫的程式也會一並將停利的單反向去操作,這一點請版主多賜教指點...
2.HSP的程式交易策略平台未來可以在開啟前,需填入密碼才能啟動的功能嗎?
3.版主近期還會有開班授課的教學課程嗎?
感謝回答!!
Hunta,2009-07-08 21:58:49
1.架構大致如下:
//多單進場
..........
//空單進場
..........
Vk = 0
//多單出場
..........
Vk = 1
..........
Vl = 0
//空單出場
..........
Vl = 1
..........
//反向多單進場
If Vk = 1 then
..........
//反向空單進場
If Vl = 1 then
..........
2.加入密碼功能,我們將在後續版本陸續加入。
3.上課部份到目前為止我們並未曾開課,但是未來我們應會舉辦,到時歡迎各位踴躍參加!!
bw5168,2009-07-08 22:38:39
這功能不錯 推一下
hunt168,2009-07-09 08:57:14
版主您好...
依您指導的架構模式,程式已能於停損後執行反向單的操作,但是先前停損單的程式卻是會不斷的在執行停損,所以執行下來的結論變成在當日結算前會不斷的出現買入與賣出,請問如何能解決此一問題....感謝指導,謝謝!!
Hunta,2009-07-09 10:16:31
那就再加上一個單K計數器來控管:
//多單進場
..........
//空單進場
..........
Vk = 0
//多單出場
If 單K計數器(目前K線,0) = 0 then
..........
Vk = 1
..........
Vl = 0
//空單出場
If 單K計數器(目前K線,0) = 0 then
..........
Vl = 1
..........
//反向多單進場
If Vk = 1 then
單K計數器(目前K線,0) = 1
..........
//反向空單進場
If Vl = 1 then
單K計數器(目前K線,0) = 1
..........
hunt168,2009-07-10 09:44:02
版主您好...
在加入"個人認為"的單K計數器的使用方法及您指導的方式,程式還是與先前的結果是相同,已下是我的程式內容,煩請版主再次指導賜教...感謝!! (我的策略是當沖單)
10 If 初始K線 = 是 Or 5分_K線時間 = 850 Then
20 Va = 0
30 Vh = 99999
40 Vl = 0
50 Vk = 0
60 Vj = 0
70 End If
.........
..........
...
140 Vb = 5分_開盤價
150
160 // 多單進場
.........
...........
...
270 End If
280
290 // 空單進場
.........
...........
...
400 End If
410
420
430 // 多單出場
440 If 目前部位( 倉位多空 ) > 0 Then
450 If 單K計數器( 目前K線 , 0 ) = 0 Then
460 If 前1_5分_K線時間 = 1325 Then
470 操作訊號( 多單平倉 , 1口 , Vb )
480 Show [ K線上方 , ◎ ]
490 單K計數器( 目前K線 , 0 ) = 1
500 Vk = 0
510 ElseIf 目前部位( 倉位多空 ) > 0 Then
...........
530 操作訊號( 多單平倉 , 1口 , Vb )
540 Show [ K線下方 , ◎ ]
550 單K計數器( 目前K線 , 0 ) = 0
560 Vk = 0
570 ElseIf 目前部位( 倉位多空 ) > 0 Then
...........
590 操作訊號( 多單平倉 , 1口 , Vb )
600 Show [ K線下方 , ◎ ]
610 單K計數器( 目前K線 , 0 ) = 0
620 Vk = 1
630 ElseIf 目前部位( 倉位多空 ) > 0 Then
...........
650 操作訊號( 多單平倉 , 1口 , Vb )
660 Show [ K線下方 , ◎ ]
670 單K計數器( 目前K線 , 0 ) = 0
680 Vk = 1
690 End If
700 End If
710 End If
720 End If
730 End If
740 End If
750
760 // 空單出場
770 If 目前部位( 倉位多空 ) < 0 Then
780 If 單K計數器( 目前K線 , 0 ) = 0 Then
790 If 前1_5分_K線時間 = 1325 Then
800 操作訊號( 空單平倉 , 1口 , Vb )
810 Show [ K線上方 , ◎ ]
820 單K計數器( 目前K線 , 0 ) = 1
830 Vj = 0
840 ElseIf 目前部位( 倉位多空 ) < 0 Then
............
860 操作訊號( 空單平倉 , 1口 , Vb )
870 Show [ K線下方 , ◎ ]
880 單K計數器( 目前K線 , 0 ) = 0
890 Vj = 0
900 ElseIf 目前部位( 倉位多空 ) < 0 Then
.............
920 操作訊號( 空單平倉 , 1口 , Vb )
930 Show [ K線下方 , ◎ ]
940 單K計數器( 目前K線 , 0 ) = 0
950 Vj = 1
960 ElseIf 目前部位( 倉位多空 ) < 0 Then
............
980 操作訊號( 空單平倉 , 1口 , Vb )
990 Show [ K線下方 , ◎ ]
1000 單K計數器( 目前K線 , 0 ) = 0
1010 Vj = 1
1020 End If
1030 End If
1040 End If
1050 End If
1060 End If
1070 End If
1080
1090
1100
1110 // 反向空單
1120
1130 If Vk = 1 Then
1140 If 前1_5分_K線時間 < 1255 Then
1150 操作訊號( 空單建倉 , 1口 , Vb )
1160 Show [ K線上方 , 反 ]
1170 單K計數器( 目前K線 , 0 ) = 1
1180
1190 End If
1200 End If
1210
1220 // 反向多單
1230 If Vj = 1 Then
1240 If 前1_5分_K線時間 < 1255 Then
1250 操作訊號( 多單建倉 , 1口 , Vb )
1260 Show [ K線上方 , 反 ]
1270 單K計數器( 目前K線 , 0 ) = 1
1280
1290 End If
1300 End If
1310
1320 // 反空回補
1330 If 目前部位( 倉位多空 ) < 0 Then
1340 If 前1_5分_K線時間 = 1325 Then
1350 操作訊號( 空單平倉 , 1口 , Vb )
1360 Show [ K線下方 , 回 ]
1370 End If
1380 End If
1390
1400 // 反多回補
1410 If 目前部位( 倉位多空 ) > 0 Then
1420 If 前1_5分_K線時間 = 1325 Then
1430 操作訊號( 多單平倉 , 1口 , Vb )
1440 Show [ K線下方 , 回 ]
1450 End If
1460 End If
Hunta,2009-07-10 11:57:57
照你的寫法反向多空單應該都不會進場,例如:你的程式行號510,570,630都是「ElseIf 目前部位( 倉位多空 ) > 0 Then」
所以程式永遠只會執行第510行之處理,而不會執行到第630行之反向單起始處理。
hunt168,2009-07-10 18:23:14
版主您好...
那麼在"多重判斷"的原則下,應改如何正確的去編寫停損後的反向單呢??
如果在沒有這樣的想法前,依上述程式所回測的資料是否就是不正確了是嗎?
(但是我有詳細的看過每一個進出場點,似乎都有照我的意思去正確執行)
唉....個人自修的功力目前極限到此了,希望還有突破的機會
感謝版主不吝指導!!...謝謝!!
Hunta,2009-07-10 20:55:26
所謂的多重條件顧名思義就是有好幾種不同條件,所以照理說每一個條件都應該不一樣。
就一個初學者而言,可以寫到這種地步已經算不錯了,我想欠缺的是程式邏輯的周嚴性,而這一點只有不斷的觀摩及練習,別無他法。
你可以將你的[U]出場條件[/U]及[U]反向單相關條件[/U]PO上來或E_mail給我(可將關鍵參數變更),我可以幫你試寫一下!!
hunt168,2009-07-11 00:54:02
版主您好...
必須說HSP交易策略,在您精闢又耐心的解說指導下,真的很不敢相信自己竟然可以有編撰"交易程式"的能力,而且在這短短的一個月中,利用回測的功能,讓我找到許多以往錯誤的原因,大大修正了自己投資的手法與心態。HSP真的不只是提供一個精確的買賣訊號,個人認為HSP程式交易的最大好處就是如GPS定位般,不用多走冤枉路讓你很清楚的可以找到通往黃金山的方向...
謝謝版主的關心,請幫我看一下由430開始的出場策略,由於是以當沖的條件去做構思,所以在460執行絕對清倉的動作,對於K線紀錄器及VK條件的設定實在不知是否正確?
您提到"510 ElseIf 目前部位( 倉位多空 ) > 0 Then"是讓後續無法符合邏輯的原因,這就是讓我無法了解的地方了,因為若不做"反向空單(多單)"的策略時,整個程式可以在回測時都符合我下的條件,順利的回測資料。若是不用"ElseIf 目前部位( 倉位多空 ) > 0 Then "這樣的寫法,我應該如何去寫510的開端呢??
520我是寫一個前1 5K的均線如果向下就執行530的動作,而580 640都是一樣類似的方式,只是參數不同而已,620 680的 VK=1 就是如您指導的希望符合這兩項之 一的話,去執行"反向單"的執行..
而"反向單"的執行,1130-1170是希望如果符合停損單條件後,立即執行反向下單,達到程式的要求。
"反空回補"是我認為已經有單在手,在時間1325到時,執行回補,以符合"當沖'的構思
以上是這程式整個執行的內容....
再次感謝版主的指導...謝謝您!!
Hunta,2009-07-11 08:24:57
Vk是用於控制反向空單是否進場,Vk=1進場,Vk=0不進場。
Vj是用於控制反向多單是否進場,Vj=1進場,Vj=0不進場。
至於程式部份,你應該把行號520的均線判斷式直接取代行號510以ElseIf方式判斷,例如:ElseIf 前1_5分_均線趨勢(10) = -1 Then
同樣的,行號580放在570,行號640放在630,行號850放在840,行號910放在900,行號970放在960
而原本的「ElseIf 目前部位( 倉位多空 ) >(<) 0 Then」就不用寫了。
照這樣改一改試試看吧!!
fkkshih,2009-07-16 00:18:58
版大你好,看了這篇文章我也在研究如何避免KD or MACD鈍化導致訊號失真的問題..
我的想法是假設當下K棒程式送出平空作多訊號,但是鈍化後又沒訊號了..但此時已送單至下單機,
為了改善此問題,我想寫出利用下一根K棒去判斷前一根K棒的狀況去做平多作空的反向單..就如你前幾篇寫的。
想請你幫我檢查一下,是否有什麼問題~感謝!!
10 Vk = 0
20 // 空單平倉多單進場
...
70 Va = 5分_開盤價
80 Vc = 5分_最低價 - 12
90 S2$ = '多' + Cstr( Va )
100 顯示文字[ S2$ , 主畫面 , ( 0 , Vc ) , 字型: 新細明體 , 大小: 009 , 顏色: 16777215 ]
110 Show [ K線下方 , ↑ ]
120 操作訊號( 空單平倉 , 1口 , Va )
130 操作訊號( 多單建倉 , 1口 , Va )
140 If 最後K線 = 是 And 單K計數器( 目前K線 , 0 ) = 0 Then
150 Vk = 1
160 GoSub date_time
170 S1$ = S1$ + '1 ' + Cstr( Va )
180 輸出文字檔( C:\KD.txt , S1$ )
190 單K計數器( 目前K線 , 0 ) = 1
200 End If
210 End If
220 End If
230
240 Vj = 0
250 // 多單平倉空單進場
260 Else
...
330 Show [ K線上方 , ↓ ]
340 操作訊號( 多單平倉 , 1口 , Va )
350 操作訊號( 空單建倉 , 1口 , Va )
360 If 最後K線 = 是 And 單K計數器( 目前K線 , 0 ) = 0 Then
370 Vj = 1
380 GoSub date_time
390 S1$ = S1$ + '-1 ' + Cstr( Va )
400 輸出文字檔( C:\KD.txt , S1$ )
410 單K計數器( 目前K線 , 0 ) = 1
420 End If
430 End If
440 End If
450 End If
460 End If
470
480
490 // 停損多單並作空
500 If Vk = 1 Then
510 單K計數器( 目前K線 , 0 ) = 1
...
530 If 目前部位( 倉位多空 ) >= 0 Then
540 Va = 5分_開盤價
550 Vc = 5分_最高價 + 12
560 S2$ = '空' + Cstr( Va )
570 顯示文字[ S2$ , 主畫面 , ( 0 , Vc ) , 字型: 新細明體 , 大小: 009 , 顏色: 16777215 ]
580 Show [ K線上方 , ↓ ]
590 操作訊號( 多單平倉 , 1口 , Va )
600 操作訊號( 空單建倉 , 1口 , Va )
610 If 最後K線 = 是 And 單K計數器( 目前K線 , 0 ) = 0 Then
620 GoSub date_time
630 S1$ = S1$ + '-1 ' + Cstr( Va )
640 輸出文字檔( C:\KD.txt , S1$ )
650 單K計數器( 目前K線 , 0 ) = 1
660 End If
670 End If
680 End If
690 End If
700
710
720 // 停損空單並作多
730 If Vj = 1 Then
740 單K計數器( 目前K線 , 0 ) = 1
...
760 If 目前部位( 倉位多空 ) <= 0 Then
770 Va = 5分_開盤價
780 Vc = 5分_最低價 - 12
790 S2$ = '多' + Cstr( Va )
800 顯示文字[ S2$ , 主畫面 , ( 0 , Vc ) , 字型: 新細明體 , 大小: 009 , 顏色: 16777215 ]
810 Show [ K線下方 , ↑ ]
820 操作訊號( 空單平倉 , 1口 , Va )
830 操作訊號( 多單建倉 , 1口 , Va )
840 If 最後K線 = 是 And 單K計數器( 目前K線 , 0 ) = 0 Then
850 GoSub date_time
860 S1$ = S1$ + '1 ' + Cstr( Va )
870 輸出文字檔( C:\KD.txt , S1$ )
880 單K計數器( 目前K線 , 0 ) = 1
890 End If
900 End If
910 End If
920 End If
97 1 2 8: 此主題共有15帖 此頁12帖 每頁12帖
[查看完整模式] LeadBBS 5.0 耗時62.5毫秒 請求2次
|