袋鼠皮 發表於 10-6-30 22:35

一個MC寫法的問題

假如我的買進訊號是設定為
如果有一根15點以上的長紅K
則之後的五根K棒只要突破這根15點長紅K的high + 1 tick 就買進
但如果是第六根以後的K棒才突破,則取消委託單不進場
如果我用buy next bar
則訊號只會出現在下一根突破時進場
但如果是之後的四分鐘才突破都不會有訊號
請問該如何寫????

ilpir 發表於 10-6-30 22:41

其實我看不懂問題...
是用5分K??

把next bar market 改成
buy next bar at high+1 stop;

袋鼠皮 發表於 10-7-1 00:32

抱歉..敘述的有點不是很清楚
以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好像是特定要在下一根買進
下一根若沒有買進則停止動作

不知這樣敘述有沒有比較清楚

thelastlaugher 發表於 10-7-1 11:20

請問超過 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;

是否有其他較好的寫法?
請多多指教!!

ilpir 發表於 10-7-1 12:40

可以這樣寫,只要條件符合那一根碰到最高點+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 機會不高...

thelastlaugher 發表於 10-7-1 13:23

我的程式裡買進或賣出的地方要加上 buyPoint = 0

thelastlaugher 發表於 10-7-1 13:44

本帖最後由 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

學到了不錯的寫法!!
謝謝!!

袋鼠皮 發表於 10-7-1 16:29

感謝 t大 與 i大 的詳解
讓我獲益不少
感謝感謝~~~~

袋鼠皮 發表於 10-7-1 16:37

回復 5# ilpir


    if barnumber-value2<=5 and marketposition=0 then
buy next bar at value1 stop;


這招真的很好用...感謝分享~~~
我剛剛去實際跑過了 發現<=5 應該要改成<5,或<=4也可以
這樣才會符合五根內突破的話就進場
因為是買在next bar
所以如果是寫成<=5
而剛好第六根才突破的話也會成交

mori868 發表於 10-7-3 11:45

很不錯的寫法又學到了
謝謝

new123 發表於 10-11-22 18:20

回復 5# ilpir


    先用一個變數儲存目前K棒
然後再利用他
不錯歐ㄏ~

pipi1122 發表於 10-11-23 18:44

真的是很厲害的寫法
謝謝大大的分享

無無明 發表於 10-11-24 20:25

本帖最後由 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 累加到 結束的時間

無無明 發表於 10-11-24 20:47

補充: 控制 幾根BAR
使用 CurrentBar
生效時 value2=CurrentBar+5;
做單條件 加上 CurrentBar<=Value2
也是 口以

無無明 發表於 10-11-25 08:22

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
查看完整版本: 一個MC寫法的問題