kilroy 發表於 14-5-31 12:57

greg 發表於 14-5-31 02:08 static/image/common/back.gif
你好, K 大, 想請教一下~ 我的自動交易(AB+IB)出現的"進出點" 跟我backtesting 時"進出點"大致一樣, 但出現 ...

Hi,

1. 小弟不是很清楚了解這個問題的意思
    請問是指,當開始下單時,會先下出一個 -1 的部位嗎?

    我不了解的意思是,當IB無部位時, sell 1 pos. 再buy 1 pos. 時

    這樣 pos. 會是 0

    ---
    所以我猜你的部位原本是 1 pos. 在每個月開始時, buy 訊號出現的同時

    會先平倉(close)原本的 1 pos. 再 buy 1 pos. (回到原本的 1 pos.)

    這樣的情況就是重複送出 buy 訊號了

    AFL 語法裡,你可以這樣加

    buy = buy condition.
    sell = sell condition.

    buy=exrem(buy,sell);
    sell=exrem(sell,buy);
    buy=flip(buy,sell);
    sell=flip(sell,buy);


    不過我不清楚的第二個地方是,"每月的開始" 是指這個策略每個月開一次倉嗎?

---
2. stop loss 的單子,可以考慮在新部位建倉的同時就送出止蝕單

    或是在買賣條件裡寫(符合條件時就把單子送出去)

    我沒有使用 stop loss 在我的策略裡

    而 AB 裡的 applystop 只限於 backtest mode

    實際與 IB TWS 是沒有關聯的

    所以還是得寫在 AFL 裡把單子送出去



參考看看了

greg 發表於 14-5-31 14:07

謝謝K 大耐心的回覆!

1. 對不起, 我說得不夠清楚, 我意思是每月轉換 期指 月份時(新一個月), 在還沒有部位時, Sell 在buy 之前就出現了, 我會試一下用buy=flip(buy,sell); 的方法再試一下, 謝謝K 大

2. 是的, 我無法成功在建倉的同時就送出止蝕單, 我的語法法如下
      OID = ibc.PlaceOrder( IBName, "Buy", 1, "MKT", 0, TickSize,"DAY", False, TickSize/0.0001, "outsideRTH" );
      OIDSTP = ibc.PlaceOrder( IBName, "Sell", 1, "STP", 0, lastvaluebuy*0.99 , "DAY", Ture, TickSize/0.0001,"outsideRTH", OID);

真心的說, 在研究過程中經常遇到樽頸, 有像K 大的神人熱心幫助, 真的給了我們很大的鼓勵 , 謝謝K大!


greg 發表於 14-6-1 04:30

我想再問一下, 假設我將"BUY" 跟"STP(止蝕)"一起發到IB , 現在"Buy"已建立了部位, 止蝕也在之後觸發了, 但我的"Sell" 依然會發送到 IB,
因為止蝕由IB 觸發, 但Sell Signal 由AB 送出, 有沒有coding 可以避免這個Sell 兩次的情況情況?

謝謝解答!

kilroy 發表於 14-6-1 22:49

本帖最後由 kilroy 於 14-6-1 22:53 編輯

greg 發表於 14-5-31 14:07 static/image/common/back.gif
謝謝K 大耐心的回覆!

1. 對不起, 我說得不夠清楚, 我意思是每月轉換 期指 月份時(新一個月), 在還沒有部位 ...
Hi,

1.
   可否以範例的方式寫一下買賣條件以及 IB Controller 送的語法

   這樣比較好了解

2.
    這個部份小弟寫了一個 bracket order 的 pending 範例

    ex.

    ContractMonth="YM   JUN 14-ECBOT-FUT";
    ibc=GetTradingInterface("IB");
    Buy=ParamTrigger("BUY","BUY");
    Short=ParamTrigger("SELL","SELL");
    BuyTrigger = LastValue(buy);
    SellTrigger = LastValue(short);
    PrevTN = StaticVarGet("TimeNumber"+Name());
    TN = LastValue(TimeNum());
    NewBar = TN != PrevTN;
    StaticVarSet("TimeNumber"+Name(),TN);
    BuyOrderID = StaticVarGetText("BuyOrderID"+Name());
    SellOrderID = StaticVarGetText("SellOrderID"+Name());
    BuyPending = ibc.IsOrderPending(BuyOrderID);
    SellPending = ibc.IsOrderPending(SellOrderID);


    Shares = 1;

   if( NewBar )
{
   if( NOT BuyPending ) StaticVarSetText("BuyOrderID"+Name(),"");
   if( NOT SellPending ) StaticVarSetText("SellOrderID"+Name(),"");
}
if( BuyTrigger AND BuyOrderID == "" )
{
   ibc.CloseAllOpenPositions(ContractMonth);
   BuyOrderID = ibc.PlaceOrder(ContractMonth, "BUY", Shares, "MKT", 0, 0, "DAY", True);
   ibc.PlaceOrder(ContractMonth, "SELL", Shares, "LMT", BUYPRICE*1.1, 0, "DAY", True);
   ibc.PlaceOrder(ContractMonth, "SELL", Shares, "STP", BUYPRICE*0.9,buyprice*0.99, "DAY", True);
   StaticVarSetText("BuyOrderID"+Name(),BuyOrderID);
}
else if( SellTrigger AND SellOrderID == "" )
{
   ibc.CloseAllOpenPositions(ContractMonth);
   SellORderID = ibc.PlaceOrder(ContractMonth, "SELL", Shares, "MKT", 0, 0, "DAY", True);
   ibc.PlaceOrder(ContractMonth, "BUY", Shares, "LMT", SELLPRICE*0.9, 0, "DAY", True);
   ibc.PlaceOrder(ContractMonth, "BUY", Shares, "STP", SELLPRICE*1.1,SELLPRICE*1.1, "DAY", True);

   StaticVarSetText("SellOrderID"+Name(),SellOrderID);
}

---
上面的範例我還沒實際操作過(因為這兩天沒開盤,我沒辦法測試)

不過我有想過會遇到的問題大概就是這 order pending 之後,若都沒止損
隔日或數日之後,這個止損單是否都需要一直 pending

所以還是建議把 trailling stop 的語法寫進策略裡

符合止損條件時,將 order pending 出去

再參考看看了

skyler 發表於 14-6-9 11:41

k大 您好
跟您請教一下
在做即時的scan時
那個 Range 要設成什麼
我看它有四種選擇
能否簡易講解一下各別的用途與差異

感謝~~~


kilroy 發表於 14-6-9 11:44

skyler 發表於 14-6-9 11:41 static/image/common/back.gif
k大 您好
跟您請教一下
在做即時的scan時


選的範圍越少,掃得越快

參考看看了

skyler 發表於 14-6-9 14:32

kilroy 發表於 14-6-9 11:44 static/image/common/back.gif
選的範圍越少,掃得越快

參考看看了

原來如此
所以
如果在交易時
Scan 15種商品
應該選擇 1 recent bar(s) 會是比較符合所需囉

kilroy 發表於 14-6-9 14:37

skyler 發表於 14-6-9 14:32 static/image/common/back.gif
原來如此
所以
如果在交易時


你的理解是沒錯的 {:4_153:}

skyler 發表於 14-6-12 11:52

k大你好再次請教一下闗於匯入歷史資料 K線時間的問題
以澳幣為例
如下


左邊為您提供的資料:歷史資料內容的時間是以K線開始的時間
右邊為群益MC匯出的資料:歷史資料內容的時間是以K線結束的時間
AB匯入資料時顯示的時間是以K線結束時間顯示
但因此造成了時間上有誤
想要請教一下

如何能讓 AB顯示時間在匯入資料後是顯示 K線開始時間
例如這個例子
我要怎麼做
才能讓K大您提供的資料 或是 MC 匯出的資料
在匯到AB後能在AB時間上能顯示11:45:00

感謝指導~






kilroy 發表於 14-6-12 12:04

skyler 發表於 14-6-12 11:52 static/image/common/back.gif
k大你好再次請教一下闗於匯入歷史資料 K線時間的問題
以澳幣為例
如下


Hi,
可以貼一下你的 preferences -> intraday 讓我看一下嗎

謝謝

skyler 發表於 14-6-12 13:41

kilroy 發表於 14-6-12 12:04 static/image/common/back.gif
Hi,
可以貼一下你的 preferences -> intraday 讓我看一下嗎



K大您好感謝提醒
我剛已經將 intraday 內的 End time of interval 改成 Start time of interval 即可了





但因為您提供的資料時間為起始時間
MC匯出的資料時間為結束時間

我在import 時是否能去指定時間為結束時間或起始時間?




kilroy 發表於 14-6-12 13:50

skyler 發表於 14-6-12 13:41 static/image/common/back.gif
K大您好感謝提醒
我剛已經將 intraday 內的 End time of interval 改成 Start time of interval 即可了



Hi,

這個部分可能沒辦法

應該是跟我匯出時的設定有關係


skyler 發表於 14-6-12 22:39

kilroy 發表於 14-6-12 13:50 static/image/common/back.gif
Hi,

這個部分可能沒辦法


OK~
了解了!
那我再找找MC的設定了~

感謝您的解答

skyler 發表於 14-6-14 20:38

K大~
有個不情之請
能否方便給我
6C #F 與 6J #F
這二個歷史資料
感恩~

kilroy 發表於 14-6-14 20:59

skyler 發表於 14-6-14 20:38 static/image/common/back.gif
K大~
有個不情之請
能否方便給我


Hi,

日圓
加幣



頁: 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15 16 17 18 19 20
查看完整版本: [分享] 用AB踏入外期程式交易