質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.86%

  • Python

    6293questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • API

    1377questions

    APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

bitflyerFXのSell/BuyのVolume算出

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 137

raonarud

score 16

以下の約定データを使って、過去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で質問しよう!

  • ただいまの回答率 90.86%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    [Milkcocoa] send() メソッドのデータ量上限はいくつでしょうか?

    現在、Milkcocoaにて任意の画像データをsend()にて送りたいと思っております。 send()によるデータの通信はできているのですが、画像データ(base64形式, 

  • 解決済

    pythonのエラー

    testThreadが見つからないというメッセージが出てきたのですが、どこに問題があるのでしょうか? よろしくお願いします コード #-*- coding utf-8-*-

  • 解決済

    python,Djangoのviews.pyの関数処理をクラス(baseClass)に変換したいです...

    初めての投稿で至らない点があれば申し訳ありません。 ただいまPythonのDjangoを勉強中です。 views.pyでの関数からBaseClassに変更しようとして悪戦苦闘し

  • 解決済

    wxPythonにおいて、USBカメラの画像表示をしたい

    前提・実現したいこと ここ一週間くらい、teratailの皆様の力を借りながら、python上で動く動画や画像を表示できるGUIを作っています。画像は何とか表示でき、画像とパネル

  • 解決済

    Pythonのthreadingにおける、終了時の処理

    前提・実現したいこと Pythonを使って、動画や画像を表示するGUIを作っています。その中で、みなさまのご支援を頂ながらカメラの画像を取り込んで再生できるところまで来ました。

  • 解決済

    pandasで時間を足し合わせたい

    pandasの基礎的な内容かと思いますが、見つからなかったため、回答いただければと思います。 よろしくお願いします。 前提・実現したいこと 別々の列に日付データと時刻データが記

  • 解決済

    pythonでログの分析(時間)が出来ません。

    前提・実現したいこと pythonのプログラムで質問です。 以下のログがあります。 2012/01/02 13:00 0 2012/01/02 14:00 1 2012/01/

  • 解決済

    【pyqy5】画像の表示方法を工夫したい

    python3を使っています。pyqt5で下のようなウィジットを作りたいです 黄色いボタンを押すと前後の画像が真ん中に来るようにしたいです。しかし、どうすればいいのかよく分か

同じタグがついた質問を見る

  • Python

    6293questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • API

    1377questions

    APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。