HSP程式交易論壇 >> 程式交易 >> 論壇主區 >> 程式交易討論區 >> 指標交叉時,訊號忽有忽無?
指標交叉時,訊號忽有忽無?
fkkshih,2009-06-11 02:10:10
大家好~
又是我來發問了,雖然現在是凌晨快兩點...不過這個問題讓我想了一天@@,希望有人可以幫我想一下..
今天盤中照著指標進出時,當均線交叉的時候會出現假訊號(5分K),
我想應該是當下那根5分K還沒跑完的關係,所以出現多訊後過幾秒鐘忽然又不見了...但是還是會輸出至下單策略檔,
像6/10 11:55建一筆空單後,卻看到12:05程式發出多訊..此時程式會立刻空單平倉並建立多倉,
不過那個多訊過幾秒就消失了,但我去看我輸出的文字檔已經是空單平倉並建多單...
請問版大有關這種假訊號我要怎麼去克服呢?是不是要當下K線跑完後再發出訊號比較好?
謝謝指導~
Hunta,2009-06-11 09:58:15
你的問題就是一般程式交易者經常會遇到的問題,也就是This Bar及Next Bar的操作差別。
所謂This Bar的意思,就是以當根K線做為進出場依據,而Next Bar是以上一根K線做為進出場依據。
當然,以程式寫作而言,This Bar肯定較Next Bar難度高,因為以當根K線來判斷的話,此K線尚未正式結束,所以還會持續變動,如此就有可能會造成訊號閃爍的情況。
至於,究竟要用This Bar或Next Bar的方式?當然這取決於作者本身之需求,唯若用This Bar的方式,就必需妥善處理訊號的問題,例如訊號一旦產生,程式就必須鎖定,第一、訊號不可以再消失,第二、更不可重覆送單;以下連結之範例可參考This Bar與Next Bar程式寫法之不同:
[URL=http://www.huntasoft.com/hsp/lesson24.htm]http://www.huntasoft.com/hsp/lesson24.htm[/URL]
※上例This Bar程式部份,「下單機輸出程式」可插入行號80、150、250、330、510及590處。
fkkshih,2009-06-11 22:15:32
小弟有點看不懂文章內的描述...下面是我的平空建多幾行程式..
如果我要以next bar當基準,那我該怎麼修改呢?
感恩!![EM14]
40 Va = 5分_開盤價
50 Vc = 5分_最低價 - 12
60 S2$ = '多' + Cstr( Va )
70 顯示文字[ S2$ , 主畫面 , ( 0 , Vc ) , 字型: 新細明體 , 大小: 009 , 顏色: 16777215 ]
80 Show [ K線下方 , ↑ ]
90 操作訊號( 空單平倉 , 1口 , Va )
100 操作訊號( 多單建倉 , 1口 , Va )
110 If 最後K線 = 是 And 單K計數器( 目前K線 , 0 ) = 0 Then
120 GoSub date_time
130 S1$ = S1$ + '1' + '多進'
140 輸出文字檔( R:\KD.txt , S1$ )
150 單K計數器( 目前K線 , 0 ) = 1
160 End If
170 End If
Hunta,2009-06-11 22:33:06
這幾行不是重點,而是之前的判斷式,例如:
If[COLOR=#cc0029] 前1[/COLOR]_5分_均價(10) > [COLOR=#ff0033]前1[/COLOR]_5分_均價(20) Then
以[COLOR=#ff0033]前1[/COLOR]根K線做為判斷條件,這就是所謂的Next Bar的寫法。
fkkshih,2009-06-12 21:40:50
版大你好:
如果我想寫當均線交叉時且"交叉持續3秒"才送出建倉訊號,
以版大你的這套軟體有辦法寫嗎?
我看到程式裡面有一個"時間延遲",不知道單位好像是秒還是分?..
感謝版大的指導~~
Hunta,2009-06-12 22:30:14
嗯!!很有創意,持續3秒,這個條件好像第1次聽到!!
是可以做到,只是要耍些手段。
10 Vk = -1
20
30 // 多單進場
40 If 目前部位( 倉位多空 ) <= 0 Then
50 If 5分_均價( 10 ) > 5分_均價( 20 ) Then
60 If Vk = -1 Then
70 Vk = 目前時間( 秒 ) + 3
80 Else
90 Vh = 目前時間( 秒 )
100 If Vh <= 2 Then
110 Vh = Vh + 60
120 End If
130 If Vh >= Vk Then
140 Va = 5分_收盤價
150 Show [ K線下方 , ↑ ]
160 操作訊號( 空單平倉 , 1口 , Va )
170 操作訊號( 多單建倉 , 1口 , Va )
180 Vk = -1
190 End If
200 End If
210 Else
220 Vk = -1
230 End If
240 End If
注意!!此為雛型程式,你可以依此為骨架,進行修改。
其中變數Vk用於記錄滿足秒數(第一次發生時之秒數+3);若Vk等於-1代表尚未發生交叉。
fkkshih,2009-06-15 15:40:52
Dear 版大:
我照著你上面的程式去寫,寫出來執行後卻都沒訊號?
請你幫我看一下,感恩再感恩~~
10 Vk = -1
20
30 // 多單進場
40 If 5分_KD交叉( 9 ) = 是 Then
50 If 交叉類型 = 1 Then
60 If 目前部位( 倉位多空 ) <= 0 Then
70 If Vk = -1 Then
80 Vk = 目前時間( 秒 ) + 3
90 Else
100 Vh = 目前時間( 秒 )
110 If Vh <= 2 Then
120 Vh = Vh + 60
130 End If
140 If Vh >= Vk Then
150 Va = 5分_開盤價
160 Vc = 5分_最低價 - 12
170 S2$ = '多' + Cstr( Va )
180 顯示文字[ S2$ , 主畫面 , ( 0 , Vc ) , 字型: 新細明體 , 大小: 009 , 顏色: 16777215 ]
190 Show [ K線下方 , ↑ ]
200 操作訊號( 空單平倉 , 1口 , Va )
210 操作訊號( 多單建倉 , 1口 , Va )
220 If 最後K線 = 是 And 單K計數器( 目前K線 , 0 ) = 0 Then
230 GoSub date_time
240 S1$ = S1$ + '1' + '多進'
250 輸出文字檔( R:\KD.txt , S1$ )
260 單K計數器( 目前K線 , 0 ) = 1
270 Vk = -1
280 End If
290 End If
300 Else
310 Vk = -1
320 End If
330 End If
340 End If
350 End If
360
370 Vk = -1
380
390 // 空單進場
400 If 5分_KD交叉( 9 ) = 是 Then
410 If 交叉類型 = -1 Then
420 If 目前部位( 倉位多空 ) >= 0 Then
430 If Vk = -1 Then
440 Vk = 目前時間( 秒 ) + 3
450 Else
460 Vh = 目前時間( 秒 )
470 If Vh <= 2 Then
480 Vh = Vh + 60
490 End If
500 If Vh >= Vk Then
510 Va = 5分_開盤價
520 Vc = 5分_最高價 + 15
530 S2$ = '空' + Cstr( Va )
540 顯示文字[ S2$ , 主畫面 , ( 0 , Vc ) , 字型: 新細明體 , 大小: 009 , 顏色: 16777215 ]
550 Show [ K線上方 , ↓ ]
560 操作訊號( 多單平倉 , 1口 , Va )
570 操作訊號( 空單建倉 , 1口 , Va )
580 Vk = -1
590 End If
600 End If
610 Else
620 Vk = -1
630 End If
640 End If
650 If 最後K線 = 是 And 單K計數器( 目前K線 , 0 ) = 0 Then
660 GoSub date_time
670 S1$ = S1$ + '-1' + '空進'
680 輸出文字檔( R:\KD.txt , S1$ )
690 單K計數器( 目前K線 , 0 ) = 1
700 End If
710 End If
Hunta,2009-06-15 17:30:26
因為你的訊號要交叉3秒才成立,但是你在K線圖上它是瞬間掃描過去,可能不到0.1秒,沒有達到3秒的標準,所以全部不成立!!
因為你的條件比較特殊,而且使用This Bar方式操作,所以比較棘手,不過慢慢修正,應該還是可以搞定。
我想第一步先觀察此策略在盤中是否會出現訊號?
因為唯有在盤中實際在跑才會達到交叉3秒的標準,訊號才會出現。
若盤中訊號會出現,接下來就是要把訊號留住,不要讓它消失。
一步一步來...
fkkshih,2009-06-15 17:41:47
原來如此,我明天盤中用此程式run看看,感謝版大囉~
pop616,2009-07-23 13:44:39
板大∼
可以把這個式子的語法說明一下嗎?
1.為何在最後還要有下列幾行ㄋ???
210 Else
220 Vk = -1
230 End If
240 End If
2.若盤中都沒出現訊號∼可能是哪出問題ㄋ???
謝謝∼
Hunta,2009-07-23 14:26:13
1.此程式Vk是用於記錄訊號成立時間(滿3秒),若Vk = -1代表目前沒有任何訊號,因為此程式是MA10向上穿越MA20才開始計算3秒鐘,所以行號210 Else代表MA10沒有向上穿越MA20,自然訊號不成立所以Vk = -1。
2.此程式在事後執行是不會有訊號的,因為程式事後掃過當根K線時,根本不會超過3秒鐘(大約只有0.0幾秒而已)。
97 1 8: 此主題共有11帖 此頁11帖 每頁12帖
[查看完整模式] LeadBBS 5.0 耗時62毫秒 請求2次
|