COCO研究院

 找回密碼
 註冊
搜索
查看: 4472|回復: 12

訊號未顯示求語法除錯

[複製鏈接]
發表於 15-1-10 07:35 | 顯示全部樓層 |閱讀模式
10金錢
大家好,最近問題有點多又來跟各位高手討教...

首先請看下面的語法 (ps以下兩個語法編譯都沒問題,為省版面只抓出有問題的部分)
variables: var4(0),var5(0),var6(0),var7(0),var8(0),var9(0);

Value1 = DirMovement(H,L,C,9,var4,var5,var6,var7,var8,var9);
If time = 0916 then begin         If Close[1] > close[2] and close[2] > close[3]
           and var4 > 30 then buy("TrB") next bar at Open;
        If Close[1] < close[2] and close[2] < close[3]
           and var5 > 30 then sellshort("TrS") next bar at Open;
   end;
這語法很簡單,開盤後完成三根5分K時,若每根的收盤價都高於前一根,且DMI+>30買進
若每根的收盤價都低於前一根且DMI->30賣出,可是看下圖,前三根的收盤都低於前一根且DMI->30
但卻沒有跑出訊號,是不是語法哪裡寫錯了呢... (ps.但此數據某些情況下這個訊號還是會出現)

問題一

問題一

另一個問題也請大家看一下語法
If var4 cross under 30 and marketposition > 0 then begin
                           Lto = minlist(Low[1],Low[2],Low[3]);
                           If Low < Lto then sell("DMOS") next bar at open;
end;
If var5 cross under 30 and marketposition < 0 then begin
                           Hto = maxlist(High[1],High[2],High[3]);
                           If High > Hto then buytocover("DMOB") next bar at open;

end;

當DMI+跌破30且手上有多單時,紀錄跌破時前三根K線的最低點,設為Lto,此後低點低於Lto則出場
當DMI-跌破30且手上有空單時,紀錄突破時前三根K線的最高點,設為Hto,此後高點高於Hto則出場
但請看下圖,左邊出現了出場訊號,但其低點只等於跌破30時的前三根低點,並未跌破
右邊則是早就已經穿過停損值但卻完全沒出現出場訊號...


一直在想到底是哪裡寫錯了,搞不定只好上來求救
沒太多錢只能懸賞一點點了,求大家幫忙!!!!感謝!!!

問題二

問題二
發表於 15-1-10 08:38 | 顯示全部樓層

第一個問題

If time > 0916


回復

使用道具 舉報

 樓主| 發表於 15-1-10 08:49 | 顯示全部樓層
cite 發表於 15-1-10 08:38
第一個問題

If time > 0916

不好意思可能沒說明清楚
這只有要判斷開盤前3根K線,若3根K線的情況沒滿足就失效
若是寫If time > 0916的話之後都會一直判斷吧
回復

使用道具 舉報

發表於 15-1-10 08:54 | 顯示全部樓層

If time > 0915 and time < 0921

評分

參與人數 1金錢 +2 收起 理由
tradesque + 2 感謝解惑~ 給錢給錢

查看全部評分

回復

使用道具 舉報

發表於 15-1-10 08:58 | 顯示全部樓層
本帖最後由 swwang1999 於 15-1-10 09:02 編輯

If time = 0916  

這個敘述可能有問題 , 因為如果用5分K , time 的變數 , 應該只有
0850,0855,0900,0905,0910,0915,0920........ 而不會有0916 這個數字出現才對 ,
因此程式可能因此條件永遠不符合而不會有買賣訊號
回復

使用道具 舉報

 樓主| 發表於 15-1-10 09:21 | 顯示全部樓層
cite 發表於 15-1-10 08:54
If time > 0915 and time < 0921

感謝c大,改成這樣第一個問題就解決了~

swwang1999,可是原語法還是有出現訊號喔只是有時有有時無
所以我推測time應該不是針對bar而是針對市場時間


回復

使用道具 舉報

發表於 15-1-10 09:28 | 顯示全部樓層
第二個問題
因為沒有比較完整一點的程式,
不知道進場的寫法,所以只能用猜的,
var5 那行改成 cross over 看看?
回復

使用道具 舉報

發表於 15-1-10 09:43 | 顯示全部樓層
If var4 cross under 30 then Lto = minlist(Low[1],Low[2],Low[3]);
If Low < Lto and marketposition > 0 then sell("DMOS") next bar at open;

If var5 cross under 30 then Hto = maxlist(High[1],High[2],High[3]);
If High > Hto and marketposition < 0 then buytocover("DMOB") next bar at open;
回復

使用道具 舉報

 樓主| 發表於 15-1-10 19:36 | 顯示全部樓層
cite 發表於 15-1-10 09:28
第二個問題
因為沒有比較完整一點的程式,
不知道進場的寫法,所以只能用猜的,

If var4 cross over 30 and marketposition = 0 then buy("DMB") next bar at open;
If var5 cross over 30 and marketposition = 0 then sellshort("DMS") next bar at open;

這是進場訊號,也就是說這個進出場訊號在於DMI+>30進多單,<30且低於前三低則出場
DMI->30進空單,<30且高於前三高則出場


K大我改了你說的那個語法之後出現了下面這個情況,不知道為啥會在這邊出現訊號...
兩次的出場DMI-都沒有<30卻跳出訊號了,再度求解感謝


未命名.png
回復

使用道具 舉報

發表於 15-1-10 19:46 | 顯示全部樓層
variables: var4(0),var5(0),var6(0),var7(0),var8(0),var9(0);
var: K(1);

K=iff(D<>D[1], 1, K+1);

Value1 = DirMovement(H,L,C,9,var4,var5,var6,var7,var8,var9);
If K=3 then begin         
  If Close[0] > close[1] and close[1] > close[2] and var4 > 30 then
    buy("TrB") next bar at Open;

  If Close[0] < close[1] and close[1] < close[2] and var5 > 30 then
    sellshort("TrS") next bar at Open;

end;

評分

參與人數 1金錢 +2 收起 理由
tradesque + 2 感謝感謝~

查看全部評分

回復

使用道具 舉報

發表於 15-1-10 20:09 | 顯示全部樓層
讚!
果然是阿政大,
我倒忘了這個 K = iff  這個政大專用寫法啊。
早上本來想說等阿政大起床再回覆,樓主的問題就不是問題了。
回復

使用道具 舉報

發表於 15-1-12 00:01 | 顯示全部樓層
cross over和cross under是"當根K棒穿越"漲跌破,
和>,<的意義是不一樣的,
你要先想清楚你要的進出場邏輯是什麼.

評分

參與人數 1金錢 +5 收起 理由
jodo + 5 long time

查看全部評分

回復

使用道具 舉報

 樓主| 發表於 15-1-14 07:49 | 顯示全部樓層
K7774 發表於 15-1-12 00:01
cross over和cross under是"當根K棒穿越"漲跌破,
和>,

多謝K大提醒,
我是想說當指標突破或跌破某值之後開始往前計算出場點
只要之後低於或高於出場點就直接出場
我再多試試好了~
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-11-29 08:17

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |