Sto lavorando con il pacchetto ibrokers in R e sto cercando di impostare più prezzi di chiusura per un'operazione. Ad esempio, acquista 100 azioni di AAPL a $ 106, vendi 50 a $ 107 e 50 a $ 108, con un prezzo di stop di $ 105.Quantità multiple negli ordini di parentesi utilizzando IBrokers in R
Quando invio ordini multipli di profitti, sembra che la quantità di 50 sia ignorata, invece ottengo due ordini di vendita per 100 azioni ciascuno.
Questo è il codice sto facendo funzionare
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)
Si può vedere che la quantità è 100 per tutti e 3 gli ordini invece di 100 per l'acquisto e il 50 per ciascuno degli ordini di vendita.
Qualcuno sa come questo può essere corretto?
Come controllo di integrità, ho inserito gli ordini senza parentId e ha funzionato. Ecco il codice per questo:
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)
Anche se questo non funziona, in pratica, dal momento che voglio che il profitto e fermare gli ordini per annullare gli altri una volta colpito.
Grazie.
Suggerirei 2 ordini di staffa o solo uno con 2 lotti di ordini di chiusura OCA. Inserire essenzialmente due ordini di parentesi per metà dell'importo ma con importi di profitto diversi. – brian
Ciao Brian. La creazione di 2 serie di ordini funzionerà, ma potrebbe creare problemi se voglio spostare anche la fermata. Avrò bisogno di spostarlo due volte. Non sempre voglio che gli ordini siano "impostati e dimenticati". – mks212
L'ho appena visto. Se tu potessi estendere il premio di 6 ore circa, potrei prenderti cura di questo per te. –