COCO研究院

 找回密碼
 註冊
搜索
查看: 8205|回復: 15

如何在日線層級 implement "Buy this bar at Close" + 今日慘痛經驗

[複製鏈接]
發表於 15-6-5 16:17 | 顯示全部樓層 |閱讀模式
本帖最後由 alexliou 於 15-6-5 16:50 編輯

我有一個在日線層級跑的程式
包含好幾組買賣訊號
其中有一個訊號用到了"Buy this bar at close" (實際是空單平倉)
像昨天這個訊號在收盤時就被觸發了
實際上這種單子根本送不出去
只能靠第二天補下人工單

今天我就想嘗試利用 currenttime 和  PlaceMarketOrder這兩個Keyword
來達成在某一特定時間送出市價賣單的功能
程式碼如下:
[IntrabarOrderGeneration = True];
If currenttime_s>134400 then begin     //不能用time 是因為日線bar 的timestamp 永遠是1345
     once  begin
             PlaceMarketOrder(false, false,1);  // 要下買單的話 把第一個false改為true
     end;
end;

經過我的實驗 這是可行的
我在9:05分 將currenttime_s>134400 改為 currenttime_s>090700
系統果然在09:07送出市價單 把我在九點前買進的部位平倉了

具有高度實驗精神的我
決定再嘗試一下不用once 來控制 只下一次單
而採用自訂變數來控制
程式修改如下:
[IntrabarOrderGeneration = True];
variables: orderPlaced(false);

If currenttime_s>101000 and last>9300 and orderplaced = false then begin
  PlaceMarketOrder(false, false,1);
  orderPlaced = true;
end;

在10:05 我把程式改好, 想說如果指數漲到9300以上, 系統可以把我在9290買進的人工單平掉
運氣真好!  把autotrading的開關打開後
指數果然一如預期的往9300邁進
10:15左右  指數觸到了9301
電腦發出一連串 " order submitted" "order filled"的響聲
一陣慌亂之下 我趕緊把AutoTrading的開關關掉
一檢查 系統竟然下了30口空單
平掉(憑弔)這多出來29口部位 一共虧了260點(稅費未計, 小台)
後來我檢查Log,  其實在我關掉autotrading之前, 系統共嘗試下了130口
還好保證金帳戶錢不夠 後來的單子被期貨商拒絕了

不是place market order之後, orderplaced 被改成true
之後就不該再下單了呢?
各位看倌, 您有看出端倪了嗎? 問題在哪裡?

我的高度實驗精神仍未被這小小的虧損擊倒
後來我找出了原因
改正了程式碼  可以用自訂變數來控制只執行一次
但保險起見 建議用once 比較好(或兩者合用)

PS: 實驗過程中我也發現 marketposition_at_broker 傳回的值並不包含昨天的部位
只計算今日在期貨商所有下單(人工+自動)所造成的部位口數

這種實驗以後還是先在凱衛模擬交易進行比較好


擷取1.PNG

評分

參與人數 6金錢 +10 收起 理由
merickelson + 2 好文章,但不推薦!
GOGA + 2 感謝分享
Oklin + 1
巴不倒 + 1 感謝分享
qtqt + 2 感謝分享
曾永政 + 2 感謝分享

查看全部評分

發表於 15-6-5 17:15 | 顯示全部樓層
原來....那根出量黑K就是你..
 樓主| 發表於 15-6-5 19:38 | 顯示全部樓層
沒房子的阿捨 發表於 15-6-5 17:15
原來....那根出量黑K就是你..

行情在那遲滯了一至二秒
然後就衝上去了
我回補的均價在9309-9310


 樓主| 發表於 15-6-5 22:18 | 顯示全部樓層
有人看出用自訂變數來控制賣出次數那段程式的問題了嗎?
發表於 15-6-5 23:12 | 顯示全部樓層
alexliou 發表於 15-6-5 22:18
有人看出用自訂變數來控制賣出次數那段程式的問題了嗎?

PlaceMarketOrder(IsBuy, IsEntry, Contracts)

  • Works with auto trading turned off.
  • Can be used as a mean of synchronization of strategy market position with a broker.
  • Also see the related ChangeMarketPosition keyword.

他的意思好像是要自動交易關閉時使用!? 不知道這有沒有關聯呢


發表於 15-6-5 23:16 | 顯示全部樓層
alexliou 發表於 15-6-5 22:18
有人看出用自訂變數來控制賣出次數那段程式的問題了嗎?

If currenttime_s>101000 and last>9300 and orderplaced = false then begin
  PlaceMarketOrder(false, false,1);
  orderPlaced = true;
end;
請教大大~
orderplaced = false的判斷是否可改成 marketposition<>0 呢?

發表於 15-6-6 00:23 | 顯示全部樓層
試試看?

variables: intrabarpersist orderPlaced(false);

不過, 建議先 dump 一些東西 確認 if 內只有跑一次

 樓主| 發表於 15-6-6 00:27 | 顯示全部樓層
pcking2008 發表於 15-6-6 00:23
試試看?

variables: intrabarpersist orderPlaced(false);

exactly. You are right.
打開IOG時  用來控制下單次數的變數要非常小心
 樓主| 發表於 15-6-6 00:33 | 顯示全部樓層
沒房子的阿捨 發表於 15-6-5 23:16
If currenttime_s>101000 and last>9300 and orderplaced = false then begin
  PlaceMarketOrder(false ...

可能不行
因為PlaceMarketOrder 並沒有在Chart上顯示部位
不過我會在凱衛模擬交易所測一下
發表於 15-6-7 19:56 | 顯示全部樓層
alexliou 發表於 15-6-6 00:33
可能不行
因為PlaceMarketOrder 並沒有在Chart上顯示部位
不過我會在凱衛模擬交易所測一下

請教alex大

一般我們用at 9600 stop可以在日K棒內丟出觸價單or停利單. (會滑價的市價單)
有沒有辦法在到價時, 當根日K丟出limit單呢?
(我目前能想到的是用圖表1分K, data2用日K,但這也只能在>9600後的下根1分Kbar才會丟limit單)


 樓主| 發表於 15-6-7 22:06 | 顯示全部樓層
沒房子的阿捨 發表於 15-6-7 19:56
請教alex大

一般我們用at 9600 stop可以在日K棒內丟出觸價單or停利單. (會滑價的市價單)

除了你提出的方法
我想不出其他丟Limit單的辦法

 樓主| 發表於 15-6-8 05:59 | 顯示全部樓層
沒房子的阿捨 發表於 15-6-7 19:56
請教alex大

一般我們用at 9600 stop可以在日K棒內丟出觸價單or停利單. (會滑價的市價單)

如果可以考慮不使用MC內建下單機的話
寫一個DLL 直接下單至期貨商可能是個選項
 樓主| 發表於 15-6-9 16:37 | 顯示全部樓層
本帖最後由 alexliou 於 15-6-9 16:47 編輯
沒房子的阿捨 發表於 15-6-7 19:56
請教alex大

一般我們用at 9600 stop可以在日K棒內丟出觸價單or停利單. (會滑價的市價單)


仔細思考了一下
覺得您所提出的用兩個資料序列
而在1分K Chart 丟單 才是好的做法
原先我那個方法 硬要在日線丟單 可能必須開啟IOG模式
如果原先策略不採IOG模式  會無法相容
發表於 15-6-9 16:54 | 顯示全部樓層
alexliou 發表於 15-6-9 16:37
仔細思考了一下
覺得您所提出的用兩個資料序列
而在1分K Chart 丟單 才是好的做法

大大您讓我忽然想通了...對吼
只要把1分K再縮小成1秒K or tick 圖, 就可以再最短時間丟單了
 樓主| 發表於 15-6-10 09:34 | 顯示全部樓層
本帖最後由 alexliou 於 15-6-10 09:35 編輯

剛剛在凱衛模擬交易所與實體帳戶測試
PlaceMarketOrder這個指令在IOG未開時也可作用
重點是控制好只能下單一次

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 24-11-23 07:03

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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