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

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

新規登録して質問してみよう
ただいま回答率
85.35%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python

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

Bitcoin

Bitcoinは、インターネット上で流通している電子マネーです。P2Pネットワークを通じた安価な決済コストが実現できる一方、取引時の危険性や闇市場・資金洗浄など不正取引の温床といった法的問題も抱えています。

API

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

Q&A

1回答

2454閲覧

TypeError: 'NoneType' object is not iterable

takk_014

総合スコア53

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python

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

Bitcoin

Bitcoinは、インターネット上で流通している電子マネーです。P2Pネットワークを通じた安価な決済コストが実現できる一方、取引時の危険性や闇市場・資金洗浄など不正取引の温床といった法的問題も抱えています。

API

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

0グッド

0クリップ

投稿2021/01/28 16:51

PythonでBitCoinの自動売買システムを作ろうとネット上で拾ったコードを試してみましたが
下記のようなエラーが出てしまいました。

Error

1Traceback (most recent call last): 2 File "pybybit.py", line 430, in <module> 3 bybit = Bybit(api_key='AS6XtDnvAmYt7qe4Ql', 4 File "pybybit.py", line 34, in __init__ 5 self._connect() 6 File "pybybit.py", line 55, in _connect 7 for p in positions: 8TypeError: 'NoneType' object is not iterable

こちらがソースコードです(コードの文字数が多すぎて載せきれなかったです)
https://gist.github.com/MtkN1/50923f4366c3390a1cf4310f77ea7440

エラー内容から55行目のconnectメソッドのpositionsに注目したところget_position_httpメソッドの戻り値がpositionsに入るようです。
get_position_httpメソッドはrequestメソッドの戻り値をそのまま返しているだけなのでrequestメソッドに問題があると思い、return resp.json()の一つ上でprintを実行してみたところ出力されたためreturnは実行されています。
そのため戻り値に使用されるrespオブジェクトが取得できていないのかと思い、 resp = self.s.send(prepped)に注目しました。
そしてコンストラクタでself.s = Session()と定義されていることが分かりました。
そのため恐らくこのSession()が上手く行っていないだと思うのですがどうすればよいのかが分かりません・・・
もちろんapi_keyとsecretキーは独自に取得して実行するコードの方では記入してあります。
どうかご教授よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

bybitのAPIは触ったことがないのでソースからrequestsに関することしか言えないのですが、self._requestでの認証情報周りにバグがあるように思えます。
Sessionはヘッダー保持にしか使ってないように見えるので多分関係ないです。

一度for文に入れる前にget_position_http()の戻り値をそのままprintしてみれば、APIのエラーメッセージが見られると思います。

投稿2021/01/28 18:00

kairi003

総合スコア1332

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takk_014

2021/01/31 05:28

返信が遅れてしまいすみません get_position_http()の戻り値をそのままprintしてみたら下記が出力されました {'ret_code': 10003, 'ret_msg': 'invalid api_key', 'ext_code': '', 'result': None, 'ext_info': None, 'time_now': '1612070347.223410'} ret_msgがinvalid api_key'と出ているのでapi_keyを見直してみましたが一字一句間違っていないです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問