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,
日圓
加幣