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次