COCO研究院

 找回密碼
 註冊
搜索
查看: 7516|回復: 5

遇到SetDollarTrailing 畫面上顯示成交,但卻沒丟單到後台

[複製鏈接]
發表於 16-7-4 15:56 | 顯示全部樓層 |閱讀模式
本帖最後由 wldtw2008 於 16-7-4 16:25 編輯

這個問題害得我好苦啊! 請參考下面這個討論,他是在5.5/6.0的版本的問題,但我現在用9.0依然還是有
http://www.multicharts.com.tw/di ... rd=1&D_ID=2&SN=1535
因為沒有權限發文在那邊,所以在這邊發文。看看有沒有人跟我一樣遇到相同的問題。
狀況描述:
  • 台指,10秒K棒,沒有手續費與滑價,進場訊號不寫了,就把他當作是開盤進場做多,主要是出場行為是用移動停損(停利):
    if time>845 then begin
        setdollarTrailing(5000);
    end;
  • 今天我一開盤0845就成交做多在8636,而今天開盤後一路往下,沒有高於我的進場價,因此追蹤停損應該就是一值保持在8636-25 = 8611才對。
    但我觀察MC下單紀錄,竟然最早是掛在Sell Stop@8605,數字不對就算了,今天MC竟然一路調整STOP價格,STOP@8605 -> STOP@8606 ->  STOP@8607 -> STOP@8608 一路往高掛。
    但是今天開盤後,價格都是往下,沒有一根比前面高,從頭到尾沒有上到我的入場價以上啊,為什麼trailing價格會越來越高?
  • 然後更詭異的是,在8:51:35就在價格往下要觸到停損價8608的時候(還沒碰到,那時候我觀察到價格是在8609~8610),MC的TrackingCenter就顯示這個STOP單被取消了、而同時圖面上竟然顯示平倉(顯示$ Trailing Stop 看圖面上箭頭是在8609)。
    也就是,MC跟後台說取消STOP單。但在畫面上卻顯示平倉。那麼出場單就這樣不見了,今天也就再也沒有訊號了。我只能手動去期貨商網站下SELL平掉他。
    *這邊就跟上面貼的那個討論區裡面描述的行為一樣,圖面顯示成交,但後台從頭到尾都沒有往後台送單。
    **詭異處為,明明MC掛的是SELL STOP @ 8608,又沒有碰到,為什麼圖面顯示 TrailingStop@8609
    ***又,就算瞬間改價到STOP @ 8609好了,那也要往後台丟單,為什麼在TrackingCenter上顯示Cancel?
  • 我有試著調整程式碼,我發現當我把setdollarTrailing 從if中移出去,畫面上正常的停損在8611、放到if中 就怪怪停損在8609@8:51:40。但是當我把資料重新load後,竟然放到if中或放到if外面,都一樣了。(這個我下次抓圖給大家看)

這問題出現好幾天了,每每都是我在9點10點檢查部位時才發現該停損出場的根本沒送單,氣死人了!
不曉得各位先進有遇過類似的問題嗎?!  有沒有推薦的解法?  是不是真的就是SET類的命令不能放到IF中??


評分

參與人數 2金錢 +4 收起 理由
paf + 2 請問有開精密回測嗎?
f29825604 + 2 辛苦了!debug大隊!幫不上忙

查看全部評分

發表於 16-7-11 23:49 | 顯示全部樓層
這種症狀並不是每次都會發生,有時正常下單,有時沒執行下單
MC 9.1解決了這個問題
但凱衛不升級9.1,就只能自己跟原廠買一套英文版9.1來用

評分

參與人數 1金錢 +2 收起 理由
wldtw2008 + 2 感謝! 原來如此!!

查看全部評分

發表於 16-7-12 14:13 | 顯示全部樓層
http://www.multicharts.com.tw/di ... D_ID=1&SN=27587
這篇的2樓,有個連結,可以下載替代語法的模組,在凱衛MC9.1出來之前,先拿來用吧

評分

參與人數 1金錢 +2 收起 理由
wldtw2008 + 2 謝謝提供解法!!

查看全部評分

 樓主| 發表於 16-7-12 15:50 | 顯示全部樓層
我已經把setdollartrailing 從if 中移出,經過這幾天的測試是都沒問題,我會繼續觀察並來此回報。
 樓主| 發表於 16-7-22 22:26 | 顯示全部樓層
到現在不再發生了,看來真的是放在if中造成的。
 樓主| 發表於 17-10-5 11:35 | 顯示全部樓層
反正就是set 之類的命令不能夾在IF中間,比方說你不能寫下面這樣:
if t > 845 and t<1345 then begin
    setstoploss(20*bigpointvalues); //日盤20點停損
end else begin
    setstoploss(30*bigpointvalues); //夜盤30點停損
end;

要這樣改寫就可以避免這種怪問題
if t > 845 and t<1345 then begin
    value77=20; //日盤20點停損
end else begin
    value77=30; //夜盤30點停損
end;
setstoploss(value77*bigpointvalues);
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 24-12-21 23:43

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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