2016-03-24 14 views
6
'da IBrokers Kullanma

R ibrokers paketi ile çalışıyorum ve bir işlem için birden fazla kapanış fiyatı belirlemeye çalışıyorum. Örneğin, AAPL'ın 100 hissesini 106 $ 'dan satın al, 50 $' dan 50 ve 107 $ 'dan 50 $' lık bir stop fiyatıyla sat.Braket Emirlerinde Birden Çok Miktar R

Birden çok kar alma emri gönderdiğimde, 50 miktarın göz ardı edilmesi gibi görünüyor, bunun yerine her biri 100 hisse için iki satış emri aldım.

Bu

Ben Sen miktar satış emirlerinin her biri için 3 siparişler için 100 yerine satın almak için 100 ve 50 olduğunu görebilirsiniz

tws <- twsConnect() 

stock <- twsEquity("AAPL") 
parentLongId <- reqIds(tws) 

parentLongOrder <- twsOrder(parentLongId, action="BUY", totalQuantity = 100, 
          orderType = "LMT", lmtPrice = 106, 
          transmit=TRUE) 
placeOrder(tws, stock, parentLongOrder) 


childLongProfitId <- reqIds(tws) 
childLongProfitOrder <- twsOrder(childLongProfitId, action="SELL", totalQuantity = 50, 
           orderType = "LMT", lmtPrice = 107, 
           transmit=TRUE, parentId = parentLongId) 
placeOrder(tws, stock, childLongProfitOrder) 

childLongProfitId2 <- reqIds(tws) 
childLongProfitOrder2 <- twsOrder(childLongProfitId2, action="SELL", totalQuantity = 50, 
            orderType = "LMT", lmtPrice = 108, 
            transmit=TRUE, parentId = parentLongId) 
placeOrder(tws, stock, childLongProfitOrder2) 

childLongStopId <- reqIds(tws) 
childLongStopOrder <- twsOrder(childLongStopId, action="SELL", totalQuantity = 100, 
           orderType = "STP", auxPrice = 105, 
           transmit=TRUE, parentId = parentLongId, account=accountNum) 
placeOrder(tws, stock, childLongStopOrder) 

twsDisconnect(tws) 

çalıştırıyorum koddur. Orders in Trader Workstation

Bunun nasıl düzeltilebileceğini bilen var mı?

Sağlık kontrolü olarak, parentId olmadan siparişlere girdim ve çalıştı. Bu olsa

tws <- twsConnect() #open connection, R automatically pauses until manually accepted on IB. 

stock <- twsEquity("AAPL") 
parentLongId <- reqIds(tws) 

parentLongOrder <- twsOrder(parentLongId, action="BUY", totalQuantity = 100, 
          orderType = "LMT", lmtPrice = 106, 
          transmit=TRUE) 
placeOrder(tws, stock, parentLongOrder) 


childLongProfitId <- reqIds(tws) 
childLongProfitOrder <- twsOrder(childLongProfitId, action="SELL", totalQuantity = 50, 
           orderType = "LMT", lmtPrice = 107, 
           transmit=TRUE) 
placeOrder(tws, stock, childLongProfitOrder) 

childLongProfitId2 <- reqIds(tws) 
childLongProfitOrder2 <- twsOrder(childLongProfitId2, action="SELL", totalQuantity = 50, 
            orderType = "LMT", lmtPrice = 108, 
            transmit=TRUE) 
placeOrder(tws, stock, childLongProfitOrder2) 

childLongStopId <- reqIds(tws) 
childLongStopOrder <- twsOrder(childLongStopId, action="SELL", totalQuantity = 100, 
           orderType = "STP", auxPrice = 105, 
           transmit=TRUE, parentId = parentLongId, account=accountNum) 
placeOrder(tws, stock, childLongStopOrder) 

twsDisconnect(tws) 

Ben kar istiyorum bunun beri uygulamada çalışmak ve isabet kez başkalarını iptal emrini durmayacak: İşte bunun için kodudur.

Teşekkür ederiz.

+1

2 braket siparişini veya 2 toplu OCA kapanış emrini öneririm. Esas olarak, miktarın yarısı için ancak farklı kar tutarları için iki parantez siparişi verin. – brian

+0

Merhaba Brian. Siparişlerin 2 setinin oluşturulması işe yarayacak, ancak durağı da hareket ettirmek istiyorsam sorun yaratabilir. İki kere taşımam gerekecek. Emirlerin daima "ayarlanması ve unutulması" istemiyorum. – mks212

+0

Sadece bunu gördüm. Eğer ödülü 6 saat uzatabilirsen, bunun için sana iyi bakabilirim. –

cevap

0

100 siparişinizi 1, ardından 50 siparişi verin. Tek aramanızdaki anlamı bir ticaret. API'ler zaman zaman garip bir şekilde çalışırlar ... Özellikle açık kaynaklı olanlar. R detaylı kurulumunda Java API'sini kullanarak daha iyi şansınız olabilir. http://m.youtube.com/watch?v=yfhmaqFyHPI

+0

Merhaba Matt, durma emrinin ilk verilmesi maalesef işe yaramadı. Java ile çok aşina değilim, ancak daha iyi desteklendiğini biliyorum. Başka bir alternatif Excel DDE kullanmaktır. Bu kadar basit bir şey için, muhtemelen hile yapacak. Zorluk, daha karmaşık hale gelir gelmez, onunla şanssız olabilirim. – mks212