HSP程式交易論壇 >> 程式交易 >> 論壇主區 >> HSQL語言討論區 >> 多空條件重複確立兩次??
多空條件重複確立兩次?? pop616,2009-07-28 12:31:13

10 Vf = 5分_SAR回補價( 20 , 0.02 , 0.2 ) 
  20 Vg = 5分_SAR賣出價( 20 , 0.02 , 0.2 ) 
  30 
  40 If 5分_K線時間 > 0855 And 5分_K線時間 < 1335 Then 
  50 If Vf = 0 And Vg > 0 Then 
  60 If 目前部位( 倉位多空 ) <= 0 Then 
  70 Show [ K線下方 , ↑ ] 
  80 Va = 5分_開盤價 
  90 Vb = 5分_最低價 - 15 
 100 S2$ = '多' + Cstr( Va ) 
 110 顯示文字[ S2$ , 主畫面 , ( -3 , Vb ) , 字型: MS Sans Serif , 大小: 008 , 顏色: 16777215 ] 
 120 操作訊號( 空單平倉 , 1口 , Va ) 
 130 操作訊號( 多單建倉 , 1口 , Va ) 
 140 If 最後K線 = 是 And 單K計數器( 目前K線 , 0 ) = 0 Then 
 150 S1$ = '1' 
 160 輸出命令檔( c:\cur_cmd.txt , [yyyy]/[mm]/[dd]□[hh]:[nn]□[S1$] ) 
 170 單K計數器( 目前K線 , 0 ) = 1 
 180 End If 
 190 End If 
 200 End If 
 210 End If 
 220 
 230 If 5分_K線時間 > 0855 And 5分_K線時間 < 1335 Then 
 240 If Vg = 0 And Vf > 0 Then 
 250 If 目前部位( 倉位多空 ) >= 0 Then 
 260 Show [ K線上方 , ↓ ] 
 270 Va = 5分_開盤價 
 280 Vb = 5分_最高價 + 15 
 290 操作訊號( 多單平倉 , 1口 , Va ) 
 300 操作訊號( 空單建倉 , 1口 , Va ) 
 310 S2$ = '空' + Cstr( Va ) 
 320 顯示文字[ S2$ , 主畫面 , ( -3 , Vb ) , 字型: MS Sans Serif , 大小: 008 , 顏色: 16777215 ] 
 330 If 最後K線 = 是 And 單K計數器( 目前K線 , 0 ) = 0 Then 
 340 S1$ = '-1' 
 350 輸出命令檔( c:\cur_cmd.txt , [yyyy]/[mm]/[dd]□[hh]:[nn]□[S1$] ) 
 360 單K計數器( 目前K線 , 0 ) = 1 
 370 End If 
 380 End If 
 390 End If 
 400 End If 
 
版大請問,在實測過程中,常有此困擾∼
盤中訊號成立一閃就過,就會輸出文字檔....
但即時畫面是沒有箭頭訊號的∼
 
請問︰
 
1.這樣單k計數器沒有作用嗎?那為何箭頭會不見呢?
 
2.訊號已產生,這樣的單在會紀錄在單k計數器中嗎?
 
3.這樣程式會判斷此時為多單或空單嗎?
  如我有停損機制,停損機制會成立嗎?
 
4.如果我想讓多空條件重複確立兩次,再輸出文字及箭頭訊號,
  我該怎麼寫ㄋ?
 
以上問題,有勞版大了∼
 
 
 

Hunta,2009-07-28 16:17:19

1.你的單k計數器(0)是為了確保只在最後一根K線成立時才輸出命令檔,並且只輸出一次,當命令檔輸出後單k計數器(0)=1,與訊號出現沒有直接關係,而且我實際Run過程式,訊號似乎不會消失才對!!
 
2.訊號產生並且有執行輸出命令檔函數,單k計數器(0)就會等於1。
 
3.要判斷此時的多空狀態,可用目前部位(倉位多空)來判斷;可加入停損機制,欲停損時,只需下達多(空)單平倉訊號即可。
 
4.只要把程式改一下:
 100    S2$ = '多' + Cstr( Va ) 
 110    顯示文字[ S2$ , 主畫面 , ( -3 , Vb ) , 字型: 新細明體 , 大小: 009 , 顏色: 16777215 ] 
 120    操作訊號( 空單平倉 , 1口 , Va ) 
 130    操作訊號( 多單建倉 , 1口 , Va ) 
 140    [COLOR=#ff0000]單K計數器( 目前K線 , 0 ) = 單K計數器( 目前K線 , 0 ) + 1[/COLOR] 
 150    If 最後K線 = 是 And [COLOR=#ff0000]單K計數器( 目前K線 , 0 ) = 2[/COLOR] Then 
 160     S1$ = '1' 
 170     輸出命令檔( c:\cur_cmd.txt , [yyyy]/[mm]/[dd]□[hh]/[nn]□[S1$] ) 
 180    End If 
 190   End If 
 200  End If 

pop616,2009-07-28 17:06:49

多謝版大回答∼

1.程式執行時,我確實看到訊號消失,且輸出下單機文字檔∼
  但在事後執行,卻都是沒問題的∼
  關於這個問題,我會在觀察看看,如有疑問會在請教∼

2.所以版大的意思是,只要單k計數器等於1,
  無論盤中show的訊號不見與否,並不會影響到程式的判斷嗎?
   
3.單k計數器再加1後=2,是否就是等於數據傳送第二次且符合才會成立???
  跟之前另一位大大所提的訊號延遲3秒或4秒是否效果一樣呢??
  這樣是否可以解決訊號跳動太快的問題呢??

謝謝∼

Hunta,2009-07-28 19:46:01

1.ok!!

2.訊號應該不可以不見,否則部位多空口數會出問題。

3.就是系統掃描至兩次訊號皆成立,即會輸出命令檔,但第3次之後並不會再重覆輸出命令檔,有點類似訊號延遲效果。

fkkshih,2009-07-28 21:27:53

看到這個討論群又引起我興趣了,
 
請問一下對於第三點
 
1.假設訊號只出現一次,是否就不會輸出訊號呢?因為掃描兩次才成立。
 
2.多久掃描一次?假設我設定掃描兩次,當下5分K線的訊號出現在第1分鐘跟第4分鐘,這樣訊號仍會輸出嗎?

Hunta,2009-07-28 22:52:54

1.是的!!

2.多久掃描一次?看策略平台右上方紅點(即時傳輸啟動)閃一次就是那麼久,平均約1秒左右吧!!
在1分鐘時一次,在4分鐘時又一次,此時會輸出!!若想要連續兩次才算的話,就必須在行號180之後加上:

Else
  單K計數器( 目前K線 , 0 ) = 0

讓單K計數器(0)歸零。

pop616,2009-07-29 06:54:31

多謝說明~
問題再請問~

1.那我如何知道第一次成立的時間點跟第二次的時間點呢??
程式又該怎麼寫呢???
因為若照大大說明的~讓計數器歸零,會不會第一分鐘成立一次、第三分鐘又成立一次,
五分k棒成交多次呢???

2.是否在連續兩次成立後先讓計數器歸零,然後再讓計數器等於2,
  讓這支5分k不再動作,不知這樣邏輯正確嗎?
 
一支五分k很可能就是50~100點的落差,對當沖很傷~
第一分鐘成交跟在第四分鐘成交,差異很大的~
所以之前才會有是否收費後推出一分k的疑問~

因為測試多日以來,訊號不穩定是個人最大的困擾~
自己的程式測試多天,每天幾乎都會發生~

在事後做測試或回測都不會有這個問題,而且績效是好的
我想若能解決這個問題~我會更有信心的~

多謝大大解答~





Hunta,2009-07-29 08:18:58

因為處理當根K線(This BAR)本來就屬於比較複雜(跟Next BAR比較),因為若是對於訊號控管不夠嚴謹,就很容易出差錯,就如你提到的是否會成交多次,或者訊號閃爍,其實大部份應該還是回歸到程式來討論,因為畢竟訊號是依照程式來產生的,訊號會出現是因為符合條件,訊號不出現是因為不符合條件,那為什麼訊號出現又消失了呢?是因為程式掃描第一次是符合條件的,但後續掃描時,又不符合條件,那為什麼後續會不符合呢?原因1.因為K線數值仍持續變動中,可能剛才的價位成立,現在價位不成立;原因2.某些因素已改變,例如單K計數器,第一次成立時可能單K計數器被設定一些數值,後續單K計數器的值就會持續存在,而直接影響程式的運作。

至於有關於昨天回答連續兩次訊號才算成立的問題,睡前回想發現會有漏洞,因為可能會造成訊號重複出現,所以必須再加1個單K計數器來控管,程式如下:
  10 Vf = 5分_SAR回補價( 20 , 0.02 , 0.2 ) 
  20 Vg = 5分_SAR賣出價( 20 , 0.02 , 0.2 ) 
  30 
  40 If 5分_K線時間 > 855 And 5分_K線時間 < 1335 Then 
  50  If Vf = 0 And Vg > 0 Then 
  60   If 單K計數器( 目前K線 , 1 ) = 0 Then 
  70    If 目前部位( 倉位多空 ) <= 0 Then 
  80     Show [ K線下方 , ↑ ] 
  90     Va = 5分_開盤價 
 100     Vb = 5分_最低價 - 15 
 110     S2$ = '多' + Cstr( Va ) 
 120     顯示文字[ S2$ , 主畫面 , ( -3 , Vb ) , 字型: 新細明體 , 大小: 009 , 顏色: 16777215 ] 
 130     操作訊號( 空單平倉 , 1口 , Va ) 
 140     操作訊號( 多單建倉 , 1口 , Va ) 
 150     單K計數器( 目前K線 , 0 ) = 單K計數器( 目前K線 , 0 ) + 1 
 160     If 最後K線 = 是 And 單K計數器( 目前K線 , 0 ) = 2 Then 
 170      S1$ = '1' 
 180      輸出命令檔( c:\cur_cmd.txt , [yyyy]/[mm]/[dd]□[hh]/[nn]□[S1$] ) 
 190      單K計數器( 目前K線 , 1 ) = 1 
 200     End If 
 210    End If 
 220   Else 
 230    單K計數器( 目前K線 , 0 ) = 0 
 240   End If 
 250  End If 
 260  
 270  If Vf > 0 And Vg = 0 Then 
 280   If 單K計數器( 目前K線 , 2 ) = 0 Then 
 290    If 目前部位( 倉位多空 ) >= 0 Then 
 300     Show [ K線上方 , ↓ ] 
 310     Va = 5分_開盤價 
 320     Vb = 5分_最高價 + 15 
 330     S2$ = '空' + Cstr( Va ) 
 340     顯示文字[ S2$ , 主畫面 , ( -3 , Vb ) , 字型: 新細明體 , 大小: 009 , 顏色: 16777215 ] 
 350     操作訊號( 多單平倉 , 1口 , Va ) 
 360     操作訊號( 空單建倉 , 1口 , Va ) 
 370     單K計數器( 目前K線 , 0 ) = 單K計數器( 目前K線 , 0 ) + 1 
 380     If 最後K線 = 是 And 單K計數器( 目前K線 , 0 ) = 2 Then 
 390      S1$ = '-1' 
 400      輸出命令檔( c:\cur_cmd.txt , [yyyy]/[mm]/[dd]□[hh]/[nn]□[S1$] ) 
 410      單K計數器( 目前K線 , 2 ) = 1 
 420     End If 
 430    End If 
 440   Else 
 450    單K計數器( 目前K線 , 0 ) = 0 
 460   End If 
 470  End If 
 480 End If 

Hunta,2009-07-30 14:54:16

Sorry,上一程式有誤,以下為修正程式:

  10 Vf = 5分_SAR回補價( 20 , 0.02 , 0.2 ) 
  20 Vg = 5分_SAR賣出價( 20 , 0.02 , 0.2 ) 
  30 
  40 If 5分_K線時間 > 0855 And 5分_K線時間 < 1340 Then 
  50  If Vf = 0 And Vg > 0 Then 
  60   If 單K計數器( 目前K線 , 1 ) = 0 Then 
  70    If 目前部位( 倉位多空 ) <= 0 Then 
  80     Show [ K線下方 , ↑ ] 
  90     Va = 5分_開盤價 
 100     Vb = 5分_最低價 - 15 
 110     S2$ = '多' + Cstr( Va ) 
 120     顯示文字[ S2$ , 主畫面 , ( 0 , Vb ) , 字型: MS Sans Serif , 大小: 008 , 顏色: 16777215 ] 
 130     操作訊號( 空單平倉 , 1口 , Va ) 
 140     操作訊號( 多單建倉 , 1口 , Va ) 
 150     單K計數器( 目前K線 , 0 ) = 單K計數器( 目前K線 , 0 ) + 1 
 160     If 最後K線 = 是 And 單K計數器( 目前K線 , 0 ) = 2 Then 
 170      S1$ = '1' 
 180      輸出命令檔( c:\cur_cmd.txt , [yyyy]/[mm]/[dd]□[hh]:[nn]□[S1$] ) 
 190      單K計數器( 目前K線 , 1 ) = 1 
 200     End If 
 210    End If 
 220   Else 
 230    Va = 5分_開盤價 
 240    Show [ K線下方 , ↑ ] 
 250    操作訊號( 多單平倉 , 1口 , Va ) 
 260    操作訊號( 多單建倉 , 1口 , Va ) 
 270   End If 
 280  Else 
 290   單K計數器( 目前K線 , 0 ) = 0 
 300  End If 
 310  
 320  If Vf > 0 And Vg = 0 Then 
 330   If 單K計數器( 目前K線 , 2 ) = 0 Then 
 340    If 目前部位( 倉位多空 ) >= 0 Then 
 350     Show [ K線上方 , ↓ ] 
 360     Va = 5分_開盤價 
 370     Vb = 5分_最高價 + 15 
 380     S2$ = '空' + Cstr( Va ) 
 390     顯示文字[ S2$ , 主畫面 , ( 0 , Vb ) , 字型: MS Sans Serif , 大小: 008 , 顏色: 16777215 ] 
 400     操作訊號( 多單平倉 , 1口 , Va ) 
 410     操作訊號( 空單建倉 , 1口 , Va ) 
 420     單K計數器( 目前K線 , 0 ) = 單K計數器( 目前K線 , 0 ) + 1 
 430     If 最後K線 = 是 And 單K計數器( 目前K線 , 0 ) = 2 Then 
 440      S1$ = '-1' 
 450      輸出命令檔( c:\cur_cmd.txt , [yyyy]/[mm]/[dd]□[hh]:[nn]□[S1$] ) 
 460      單K計數器( 目前K線 , 2 ) = 1 
 470     End If 
 480    End If 
 490   Else 
 500    Va = 5分_開盤價 
 510    Show [ K線上方 , ↓ ] 
 520    操作訊號( 多單平倉 , 1口 , Va ) 
 530    操作訊號( 空單建倉 , 1口 , Va ) 
 540   End If 
 550  Else 
 560   單K計數器( 目前K線 , 0 ) = 0 
 570  End If 
 580 End If 

pop616,2009-07-31 12:33:50

大大∼

測試了一整天∼
單K計數器都是維持在1跟0(我增加右側資訊欄)
根本不會到2∼
所以根本不會輸出命令檔
連行號230∼260跟510∼530
都走不到(你把符號改掉就知道)

這語法好像有問題∼
煩請大大在試試∼

Hunta,2009-07-31 13:09:22

Sorry!!
策略有點問題!!
我已經重新寄了一個新的策略0040.rda給你了,請收信!!

 97 1 8: 此主題共有11帖 此頁11帖 每頁12帖 

[查看完整模式]

LeadBBS 5.0 耗時62毫秒 請求2次