jetluo88 發表於 16-2-25 14:22

在倉部位不會賣出 加碼部位卻正常

var:aa(0),mp(0);


mp=marketposition*currentcontracts;


if mp=0 and time>0845 and time<1344 then begin

once(close=7800)begin
        buy ("firstentry")30 contract next bar at 7800 limit;
                aa=7800;
               
        end;
end;

if mp>0 and time>0845 and time<1344 then begin
        if close-aa<-50 then begin
                buy 1 contract next bar at market;
                aa=aa-50;
               
        end else
       
        ifclose-aa>100 then begin
                sell1 contract total next bar at market;
                aa=aa+100;
               
               
       
        end;
end;
http://www.coco-in.net/forum.php?mod=image&aid=100439&size=300x300&key=85e4ec17859630b6&nocache=yes&type=fixnone
訊號只會針對 Firstentry的部位執行一次,請問要怎麼讓他可以持續賣出?
後面的加碼部位卻可以正常買賣
http://www.coco-in.net/forum.php?mod=image&aid=100440&size=300x300&key=3c917f99c70500a9&nocache=yes&type=fixnone



TrendRover 發表於 16-3-1 01:09

alexliou 發表於 16-2-29 18:01
原PO提到   "訊號只會針對 Firstentry的部位執行一次,請問要怎麼讓他可以持續賣出?"

因為好奇心   這個 ...

為了實驗方便 ,把手工設定價為改成浮動這樣 +100 -100也是浮動
這樣人工下單 ,機器幫忙看家的方式就自行發揮了~~~~

input: FirstLots(30),handkeyprice(7800),starttime(0845),endtime(1344),TP(100),SL(50) ;

var: aa(0),mp(0),counter(0),ename(""),counter2(0);

mp=marketposition*currentcontracts;
if mp=0 and time>starttime and time<endtime then begin
      once(close=handkeyprice)begin
                buy ("firstentry") FirstLots contract next bar at handkeyprice limit;
               aa=handkeyprice;               
       end;
end;

if mp>0 and time>starttime and time<endtime then begin
         if close-aa<-SL then begin
            buy("Buy") 1 contract next bar at market;
            counter2=counter2+1;
            aa=aa-SL;               
       end else ifclose-aa>TP then begin
               If counter2<=0 then begin
                     counter=counter+1;
                     ename="S"+NumtoStr(counter,0);
                     sell(ename) 1 contract total next bar at market;
               end else begin
                     sell from entry("Buy") 1 contract total next bar at market;
                     counter2=counter2-1;
               end;               
               aa=aa+TP;               
      end;
end;


alexliou 發表於 16-3-1 06:02

原先版大策略的邏輯稍微複雜
我摸索好久   一直無法精確看出partial selling entry是如何運作的
後來我寫了底下這個程式
玩弄幾下   就確認了
1. partial selling entry的行為模式
    同一個partial selling entry 針對同一"次"的buying entry 只能進行一次的partial sale
2. 有total 與 無total 的差別
3. 庫存部位的出售是採取first in first out 的作法
其中2,3 MC官方文件都有說明,   1則是undocumented

有興趣的人可以自己玩玩看
resolution 建議為5分線
記得在策略屬性將 Allow mutiple entryorders 勾起來

If Date = 1160226 then Begin   
        If Time = 0900 then
                 Buy 5 contracts next bar at the market;
         
       If Time = 0915 then
               Buy 3 contracts next bar at the market;
      
           If Time = 0930 then
            sell 1 contracts next bar at the market;                  
      
       If Time >= 1000 then
            sell 1 contracts total next bar at the market;   
   
End;

alexliou 發表於 16-2-29 18:01

原PO提到   "訊號只會針對 Firstentry的部位執行一次,請問要怎麼讓他可以持續賣出?"

因為好奇心   這個問題我實驗了一下午
結果顯示每個partial sell 的entry的確只會對相同的long entry進行一次而已
所以第一次買進的30口
如果要部分平倉   每次賣出一口   就需要30個sell entry
假設你原先買的30口在新買的契約沒消化前不賣
我將原先Code更改如下

var:aa(0),mp(0),counter(0),ename(""),counter2(0);

mp=marketposition*currentcontracts;
if mp=0 and time>0845 and time<1344 then begin
        once(close=7800)begin
              buy ("firstentry")30 contract next bar at 7800 limit;
               aa=7800;               
       end;
end;

if mp>0 and time>0845 and time<1344 then begin
           if close-aa<-100 then begin
            buy("Buy") 1 contract next bar at market;
            counter2=counter2+1;
            aa=aa-100;               
       end else ifclose-aa>100 then begin
               If counter2<=0 then begin
                       counter=counter+1;
                       ename="S"+NumtoStr(counter,0);
                       sell(ename) 1 contract total next bar at market;
               end else begin
                       sell from entry("Buy") 1 contract total next bar at market;
                       counter2=counter2-1;
               end;                
               aa=aa+100;             
      end;
end;

我把每50點向下買一口改為每100點買一口
要不然不對稱的買法
若非大大大多頭行情
會買到永遠賣不完(甚至賣不到)原先那30口

沒房子的阿捨 發表於 16-2-27 23:00

應該是這個.....


沒房子的阿捨 發表於 16-2-26 01:13

這邊有沒有設定?


jetluo88 發表於 16-2-26 08:40

有耶~ 我把它設定到最高值了{:4_155:}

沒房子的阿捨 發表於 16-2-26 23:10

jetluo88 發表於 16-2-26 08:40
有耶~ 我把它設定到最高值了

你是想要做成這樣子嗎?


TrendRover 發表於 16-2-29 09:12

我作了一下實驗把 sell 換成 sellshort 試了試, marketposition被指令影響的機制跟我們的想像不同 .
   我把sell 換成 sellshort後他認定 marketposition變成負值 (在 position =initial -1口時----)


alexliou 發表於 16-2-29 18:14

本帖最後由 alexliou 於 16-2-29 18:29 編輯

我想這應該是原PO想要的結果


沒房子的阿捨 發表於 16-2-29 19:39

alex大太厲害了~又跟您偷偷學到新招XD

我也又修改了一下, 應該是這樣吧XD


沒房子的阿捨 發表於 16-3-1 09:39

alexliou 發表於 16-3-1 06:02
原先版大策略的邏輯稍微複雜
我摸索好久   一直無法精確看出partial selling entry是如何運作的
後來我寫了 ...

有個分批出場開關

加了這行以後就可以不分entry 只要有多單部位都可以分批Sell
但結果就會像我第二張圖一樣...好像全都先從firstentry出場, 看起來怪怪的{:4_186:}

jetluo88 發表於 16-3-4 12:52

真是太感謝各位大大的幫忙 {:4_82:}

jetluo88 發表於 16-3-4 13:20

想要請問各位大神 要在哪裡可以學到這些資訊.....   
想要進步 可是不知道要從何開始還是新手 還有好長的路要走
頁: [1]
查看完整版本: 在倉部位不會賣出 加碼部位卻正常