2017-10-21 4 views
0

私はインタラクティブブローカーTWSとRで遊んでいて、さまざまな成功を収めています。インタラクティブブローカーからデータをダウンロードするTWS

library(IBrokers) 
IBConn <- twsConnect(port = xxxx) 
currency_df = twsCurrency("NZD",currency = "USD") 
test = reqHistoricalData(IBConn, Contract = currency_df, whatToShow ='BID_ASK', useRTH = "0", barSize = '1 min', duration="1 D", endDateTime = paste0(gsub("-","", reqCurrentTime(IBConn))," EST")) 
plot(test$NZD.USD.Close) 

library(quantmod) 
plot(test$NZD.USD.Close) 
chartSeries(test$NZD.USD.Close) 
addBBands(n = 20, sd = 2, ma = "SMA", draw = 'bands', on = -1) 

これはうまくいき、その日の通貨データを1分間ダウンロードできます。私はこのblog( - 約中途半端ページダウンreqHistoricalData機能)と同じ結果を得ることはありませんがしっかり

tws = twsConnect(port=7497) 
symbol = twsSTK("AAPL") 
data_AAPL = reqHistoricalData(tws, symbol) 
print (data_AAPL) 

の株価データを取得しようとすると、

問題が発生します。

次のコードを使用して要求した他のデータは何時間も実行されており、Rコンソールで「停止」をクリックする必要があります。

tws <- twsConnect() 
aapl.csv <- file("AAPL.csv", open="w") 

# run an infinite-loop (<C-c> to break) 
reqMktData(tws, twsSTK("AAPL"), 
      eventWrapper=eWrapper.MktData.CSV(1), 
      file=aapl.csv) 

close(aapl.csv) 
close(tws) 

私の質問は、私はインタラクティブ・ブローカーRパッケージを使用してAAPL株価(始値、高値、低、閉じる)のために、前の日の1つのまたは5分のデータをダウンロードすることができますどのように、ありますか?私はquantmodパッケージを使用して毎日のデータを収集することができますが、IBrokersパッケージをOpen High LowおよびCloseの形式で分データを収集できるかどうかは疑問です。

注:Interactive Brokersのデモ取引アカウントを使用しています。

+0

私が覚えている限り、データフィードは通貨では無料ですが、在庫データを取得するには購読が必要です。 Trader Workstationを使用してAAPLのリアルタイムの見積もりを確認できますか? reqHistoricalData for AAPLを呼び出したときに何を得ましたか? – Janos

答えて

3

上記のブログのデータと同じデータが得られないのは、historical (i.e. reqHistoricalData(tws, symbol)のデータを指しているということです。ブログの例では、ストリーミングされていて全く異なっているmarket data (i.e. reqMktData)を指しています。株価(AAPL)のための歴史的な日中のデータを取得するには、そのようcontractを定義する必要があります。

contract = twsContract(0,"AAPL","STK","SMART","ISLAND", "","0.0","USD","","","",NULL,NULL,"0”) 

例:

library(IBrokers) 
IBConn <- twsConnect(port = 7497) 
contract = twsContract(0,"AAPL","STK","SMART","ISLAND", "","0.0","USD","","","",NULL,NULL,"0") 
data_AAPL = reqHistoricalData(IBConn, contract, whatToShow ='BID_ASK', useRTH = "0", barSize = '1 min', duration="1 D", endDateTime = paste0(gsub("-","", reqCurrentTime(IBConn)))) 


> head(data_AAPL) 
        AAPL.Open AAPL.High AAPL.Low AAPL.Close 
2017-10-23 10:00:00 156.00 157.20 156.00  156.64 
2017-10-23 10:01:00 155.99 156.65 155.95  156.64 
2017-10-23 10:02:00 155.95 156.65 155.95  156.65 
2017-10-23 10:03:00 155.95 156.65 155.95  156.65 
2017-10-23 10:04:00 155.95 156.60 155.95  156.60 
2017-10-23 10:05:00 155.95 156.62 155.95  156.60 
        AAPL.Volume AAPL.WAP AAPL.hasGaps AAPL.Count 
2017-10-23 10:00:00   -1  -1   0   -1 
2017-10-23 10:01:00   -1  -1   0   -1 
2017-10-23 10:02:00   -1  -1   0   -1 
2017-10-23 10:03:00   -1  -1   0   -1 
2017-10-23 10:04:00   -1  -1   0   -1 
2017-10-23 10:05:00   -1  -1   0   -1 

:-) twsDisconnect(IBConn)との接続を閉じることを忘れないでください。
+0

あなたの返事をありがとう、私はあなたが持っているコードを実行したと私はヘッド(data_AAPL)出力NULLを取得します。接続エラーがあるかどうか確認します – user113156

+0

ポート番号を確認しましたか?たぶん、別のポートでTWSを実行しているかもしれません。 – hvollmeier

関連する問題