訊號未顯示求語法除錯
大家好,最近問題有點多又來跟各位高手討教...{:4_186:}首先請看下面的語法 (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 > close and close > close
and var4 > 30 then buy("TrB") next bar at Open;
If Close < close and close < close
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,Low,Low);
If Low < Lto then sell("DMOS") next bar at open;
end;
If var5 cross under 30 and marketposition < 0 then begin
Hto = maxlist(High,High,High);
If High > Hto then buytocover("DMOB") next bar at open;
end;
當DMI+跌破30且手上有多單時,紀錄跌破時前三根K線的最低點,設為Lto,此後低點低於Lto則出場
當DMI-跌破30且手上有空單時,紀錄突破時前三根K線的最高點,設為Hto,此後高點高於Hto則出場
但請看下圖,左邊出現了出場訊號,但其低點只等於跌破30時的前三根低點,並未跌破
右邊則是早就已經穿過停損值但卻完全沒出現出場訊號...
http://www.coco-in.net/forum.php?mod=image&aid=92399&size=300x300&key=e3a7c1a30af7cd95&nocache=yes&type=fixnone
一直在想到底是哪裡寫錯了,搞不定只好上來求救
沒太多錢只能懸賞一點點了,求大家幫忙!!!!感謝!!!
第一個問題
If time > 0916
cite 發表於 15-1-10 08:38 static/image/common/back.gif
第一個問題
If time > 0916
不好意思可能沒說明清楚
這只有要判斷開盤前3根K線,若3根K線的情況沒滿足就失效
若是寫If time > 0916的話之後都會一直判斷吧
If time > 0915 and time < 0921 本帖最後由 swwang1999 於 15-1-10 09:02 編輯
If time = 0916
這個敘述可能有問題 , 因為如果用5分K , time 的變數 , 應該只有
0850,0855,0900,0905,0910,0915,0920........ 而不會有0916 這個數字出現才對 ,
因此程式可能因此條件永遠不符合而不會有買賣訊號
cite 發表於 15-1-10 08:54 static/image/common/back.gif
If time > 0915 and time < 0921
感謝c大,改成這樣第一個問題就解決了~
swwang1999,可是原語法還是有出現訊號喔只是有時有有時無
所以我推測time應該不是針對bar而是針對市場時間
第二個問題
因為沒有比較完整一點的程式,
不知道進場的寫法,所以只能用猜的,
var5 那行改成 cross over 看看? If var4 cross under 30 then Lto = minlist(Low,Low,Low);
If Low < Lto and marketposition > 0 then sell("DMOS") next bar at open;
If var5 cross under 30 then Hto = maxlist(High,High,High);
If High > Hto and marketposition < 0 then buytocover("DMOB") next bar at open;
cite 發表於 15-1-10 09:28 static/image/common/back.gif
第二個問題
因為沒有比較完整一點的程式,
不知道進場的寫法,所以只能用猜的,
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卻跳出訊號了,再度求解感謝
http://www.coco-in.net/forum.php?mod=image&aid=92408&size=300x300&key=ef0f6b9c607f7832&nocache=yes&type=fixnone
variables: var4(0),var5(0),var6(0),var7(0),var8(0),var9(0);
var: K(1);
K=iff(D<>D, 1, K+1);
Value1 = DirMovement(H,L,C,9,var4,var5,var6,var7,var8,var9);
If K=3 then begin
If Close > close and close > close and var4 > 30 then
buy("TrB") next bar at Open;
If Close < close and close < close and var5 > 30 then
sellshort("TrS") next bar at Open;
end; 讚!
果然是阿政大,
我倒忘了這個 K = iff這個政大專用寫法啊。
早上本來想說等阿政大起床再回覆,樓主的問題就不是問題了。
cross over和cross under是"當根K棒穿越"漲跌破,
和>,<的意義是不一樣的,
你要先想清楚你要的進出場邏輯是什麼. K7774 發表於 15-1-12 00:01 static/image/common/back.gif
cross over和cross under是"當根K棒穿越"漲跌破,
和>,
多謝K大提醒,
我是想說當指標突破或跌破某值之後開始往前計算出場點
只要之後低於或高於出場點就直接出場
我再多試試好了~
頁:
[1]