bitflyerFXのSell/BuyのVolume算出
受付中
回答 0
投稿
- 評価
- クリップ 0
- VIEW 1,009
以下の約定データを使って、過去20秒間のsellおよびbuyのvolumeを算出したい。
しかしエラーになってしまう。
from pubnub.callbacks import SubscribeCallback
from pubnub.enums import PNStatusCategory
from pubnub.pnconfiguration import PNConfiguration
from pubnub.pubnub_tornado import PubNubTornado
from pubnub.pnconfiguration import PNReconnectionPolicy
import pandas as pd
from datetime import datetime, timezone, timedelta
config = PNConfiguration()
config.subscribe_key = 'sub-c-52a9ab50-291b-11e5-baaa-0619f8945a4f'
config.reconnect_policy = PNReconnectionPolicy.LINEAR
pubnub = PubNubTornado(config)
from tornado import gen
df_all = pd.DataFrame(index=['datetime'],
columns=['id',
'side',
'price',
'size',
'exec_date',
'buy_child_order_acceptance_id',
'sell_child_order_acceptance_id'])
@gen.coroutine #非同期処理
def main(channels):
class BitflyerSubscriberCallback(SubscribeCallback):
def presence(self, pubnub, presence):
pass # handle incoming presence data
def status(self, pubnub, status):
if status.category == PNStatusCategory.PNUnexpectedDisconnectCategory:
pass # This event happens when radio / connectivity is lost
elif status.category == PNStatusCategory.PNConnectedCategory:
# Connect event. You can do stuff like publish, and know you'll get it.
# Or just use the connected event to confirm you are subscribed for
# UI / internal notifications, etc
pass
elif status.category == PNStatusCategory.PNReconnectedCategory:
pass
# Happens as part of our regular operation. This event happens when
# radio / connectivity is lost, then regained.
elif status.category == PNStatusCategory.PNDecryptionErrorCategory:
pass
# Handle message decryption error. Probably client configured to
# encrypt messages and on live data feed it received plain text.
def message(self, pubnub, message):
# Handle new message stored in message.message
task(message.channel, message.message)
listener = BitflyerSubscriberCallback()
pubnub.add_listener(listener)
pubnub.subscribe().channels(channels).execute()
def task(channel, message):
for i in message:
# print(i['exec_date'], i['side'], i['price'], i['size'])
print(i['side'], i['size'])
df_new = pd.DataFrame(message)
df_new['exec_date'] = pd.to_datetime(df_new['exec_date'])
global df_all
df_all = df_all.append(df_new)
df_all.index = df_all['exec_date']
date_now = df_all.index[len(df_all)-1]
df_lim = df_all.ix[df_all.index >= (date_now - timedelta(seconds=20))]
buy_vol = df_lim[df_lim.apply(lambda x: x['side'], axis=1) == "BUY"]['size'].sum(axis=0)
sell_vol = df_lim[df_lim.apply(lambda x: x['side'], axis=1) == "SELL"]['size'].sum(axis=0)
print(df_lim.index[0].strftime('%Y-%m-%d %H:%M:%S'),
df_lim.index[len(df_lim)-1].strftime('%H:%M:%S'),
"BUY_VOL", format(buy_vol, '.2f'),
"SELL_VOL", format(sell_vol, '.2f'))
if __name__ == '__main__':
main(['lightning_executions_FX_BTC_JPY'])
pubnub.start()
エラー内容
pubnub = PubNubTornado(config)
File "/Users/ほげほげ/.pyenv/versions/3.6.0/lib/python3.6/site-packages/pubnub/pubnub_tornado.py", line 83, in __init__
self._telemetry_manager = TornadoTelemetryManager(self.ioloop)
File "/Users/ほげほげ/.pyenv/versions/3.6.0/lib/python3.6/site-packages/pubnub/pubnub_tornado.py", line 676, in __init__
self.ioloop)
TypeError: __init__() takes 3 positional arguments but 4 were given
コード
よろしくお願いいたします。
このサイトを参考にしてます。
http://r17u.hatenablog.com/entry/2017/12/05/211451
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
まだ回答がついていません
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.22%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる