一個MC寫法的問題
假如我的買進訊號是設定為如果有一根15點以上的長紅K
則之後的五根K棒只要突破這根15點長紅K的high + 1 tick 就買進
但如果是第六根以後的K棒才突破,則取消委託單不進場
如果我用buy next bar
則訊號只會出現在下一根突破時進場
但如果是之後的四分鐘才突破都不會有訊號
請問該如何寫???? 其實我看不懂問題...
是用5分K??
把next bar market 改成
buy next bar at high+1 stop; 抱歉..敘述的有點不是很清楚
以5分K為例子
如果在9:00出現一根超過15點的長紅棒 假設其最高點是7210點
因此我希望在之後的五根K棒 也就是9:05 9:10 9:15 9:20 9:25
只要這五根K棒的哪一根碰到7211我就進多單
但如果這五根K棒都沒有碰到7211
而是9:30或以後的時間才碰到7211的話
則不要成交
如果我的程式是寫成if 9:00的訊號出現則buy next bar的話
好像只有 9:05這跟K棒碰到7211才會成交
若9:05沒碰到而是之後的9:10~9:25碰到的都不會成交
因為用buy next bar好像是特定要在下一根買進
下一根若沒有買進則停止動作
不知這樣敘述有沒有比較清楚 請問超過 15點 的長紅棒之後的 5根 是每根只要有超過就進多單嗎?
還是總共只進一次?
如果是 5根內 只要有突破就 只進 一次 多單的話..
我會用 3個變數..order: 買賣紀錄、 buyPoint: 待突破點位、 kBar: 紀錄K棒數..
variables: order(0), buyPoint(0), kBar(0);
if order = 0 then begin
if buyPoint = 0 then begin
if Close - Open > 15 then begin
buyPoint = High + 1;
end;
end
else begin
if kBar < 6 then begin
kBar = kBar + 1;
if High > buyPoint then begin
Buy next bar at market;
order = 1;
kBar = 0;
end;
end
else begin
kBar = 0;
buyPoint = 0;
end;
end;
end
else begin
若符合條件則賣出,且將 order 設回 0;
end;
是否有其他較好的寫法?
請多多指教!! 可以這樣寫,只要條件符合那一根碰到最高點+1都會成交
if close-open>15 andmarketposition=0 then begin
buy next bar at high+1 stop;
end;
接下來加入5根以內才買賣條件
更改如下:
if close-open>15then begin
value1=high+1;
value2=barnumber;
end;
if barnumber-value2<=5 and marketposition=0 then
buy next bar at value1 stop;
不過紅k 15點,下根要不碰到high+1 機會不高... 我的程式裡買進或賣出的地方要加上 buyPoint = 0 本帖最後由 thelastlaugher 於 10-7-1 02:10 PM 編輯
..
if barnumber-value2<=5 and marketposition=0 then
buy next bar at value1 stop;
..
ilpir 發表於 10-7-1 12:40 PM http://coco-in.net/images/common/back.gif
學到了不錯的寫法!!
謝謝!! 感謝 t大 與 i大 的詳解
讓我獲益不少
感謝感謝~~~~ 回復 5# ilpir
if barnumber-value2<=5 and marketposition=0 then
buy next bar at value1 stop;
這招真的很好用...感謝分享~~~
我剛剛去實際跑過了 發現<=5 應該要改成<5,或<=4也可以
這樣才會符合五根內突破的話就進場
因為是買在next bar
所以如果是寫成<=5
而剛好第六根才突破的話也會成交 很不錯的寫法又學到了
謝謝 回復 5# ilpir
先用一個變數儲存目前K棒
然後再利用他
不錯歐ㄏ~ 真的是很厲害的寫法
謝謝大大的分享 本帖最後由 trading144 於 10-11-24 08:32 PM 編輯
if high-low>15 points then begin
trace=1;
count=0;
value1=high;
end;
if trace=1 and marketposition=0 and count<=5 then begin
buy("BH") 1 contract next bar at value1 stop;
count=count+1;
end;
if marketposition<>0 then trace=0;
如果 count 控制不行的話
改用 時間 去 控制
生效時 的 時間記錄到變數,依照 每根棒時間Period 累加到 結束的時間 補充: 控制 幾根BAR
使用 CurrentBar
生效時 value2=CurrentBar+5;
做單條件 加上 CurrentBar<=Value2
也是 口以 if Close-Open>15 points and trace=0 and marketposition=0 then begin
trace=1;
value1=high;
value2=CurrentBar+5;
end;
if trace=1 and marketposition=0 and CurrentBar<=Value2 then begin
buy("BH") 1 contract next bar at value1 stop;
end;
if marketposition<>0 orCurrentBar>Value2 then trace=0;
頁:
[1]
2