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

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

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

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

bitFlyer API

bitFlyer APIは、仮想通貨取引所bitFlyerが公開しているAIPツール。bitFlyer Lightning/API playground/chainFlyer/Echoの4種類あり、bitFlyerソフトをカスタマイズすることが可能です。

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Python

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

Q&A

解決済

1回答

1620閲覧

pythonでリスト要素の一部を取得

Na3430mls

総合スコア3

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

bitFlyer API

bitFlyer APIは、仮想通貨取引所bitFlyerが公開しているAIPツール。bitFlyer Lightning/API playground/chainFlyer/Echoの4種類あり、bitFlyerソフトをカスタマイズすることが可能です。

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Python

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

0グッド

0クリップ

投稿2021/04/16 14:33

編集2021/04/17 03:44

Python初心者です。
bitflyerのAPIを使って、bitflyerの残高を取得したいです。

ネットの記事を参考に、一応残高を取得することは出来たのですが、保有していないコインの情報も一緒に取得してしまうので、amountが0じゃなかったらという条件付きで要素を取り出したいです。

一応自分でも書いてみましたが、SyntaxError: invalid syntaxになってしまいました。

どのように書き換えれば、保有しているコインの情報だけを(amountが0でない)要素を取得できるでしょうか。
開発環境はpython3.8.8です。jupyter notebookを使って書いていますが、Flaskを使ってWebアプリケーション形式にすることを想定しています。
個人情報保護のため、API_KEYとSECRETは削除しています!

*追記情報*
HTMLのformからvalueを受けとって、受け取った値によって条件分岐させる構造です。
get_balanceという関数を同ファイルに書いて、イベントが起こった時に呼び出す形になっています。
データを取得に成功したらHTMLに表示させるつもりなので、取得した値は変数に入れたいです。

Python

1import pybitflyer 2import time 3from datetime import datetime 4from pytz import timezone 5from dateutil import parser 6 7BALANCE_KEYS = ["currency_code", 8 "amount", 9 "available"] 10 11API_KEY = "" 12API_SECRET = "" 13 14 15if __name__ == '__main__': 16 api = pybitflyer.API(api_key = API_KEY, api_secret = API_SECRET) 17 18 balances = api.getbalance(product_code="BTC_JPY") 19 20 for balance in balances: 21 for balance_key in BALANCE_KEYS: 22 if(BALANCE_KEY[1]=!0) 23 print(balance_key + " : " + str(balance[balance_key])) 24 print("=================================================") 25 26 27 28``````Python 29コード

import pybitflyer
from flask import Flask, render_template,request
import time
from datetime import datetime
import json
from dateutil import parser
from pytz import timezone

BASE_URL ="https://api.bitflyer.jp"
url = BASE_URL + "POST /v1/me/sendchildorder"

API_KEY = ""
API_SECRET =""
api = pybitflyer.API(API_KEY,API_SECRET)

nounce =str(int(time.time()))

app = Flask(name)

#残高を取得する関数
def get_balance():

BALANCE_KEYS =["currency_code", "amount", "available"] balances =api.getbalance(product_code="BTC_JPY") for balance in balances: if balance ["amount"] == 0: continue for balance_key in BALANCE_KEYS: print(balance_key + " : " + str(balance[balance_key])) print("=================================================")

@app.route("/order",methods=["POST"])
#受け取った値に応じて関数を呼び出し
def receive_market():
order_type = request.form.get('order_type')
if order_type == "buy_market":
#成行買い
buy_btc=api.sendchildorder(

product_code ="XRP_JPY", child_order_type="MARKET", side="BUY", size=0.1, minute_to_expire=1000, time_in_force="GTC" ) elif order_type == "sell_market": #成行売り sell_btc=api.sendchildorder( product_code ="XRP_JPY", child_order_type="MARKET", side="SELL", size=0.1, minute_to_expire=1000, time_in_force="GTC" elif order_type =="get_balance": get_balance()
```エラー文 if balance ["amount"] == 0: TypeError: string indices must be integers

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

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

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

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

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

guest

回答1

0

ベストアンサー

if __name__ == '__main__': api = pybitflyer.API(api_key = API_KEY, api_secret = API_SECRET) balances = api.getbalance(product_code="BTC_JPY") for balance in balances: if balance["amount"] == 0: continue for balance_key in BALANCE_KEYS: print(balance_key + " : " + str(balance[balance_key])) print("=================================================")

投稿2021/04/16 14:40

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Na3430mls

2021/04/16 14:58

ご回答ありがとうございます。 出力結果が以下のようになりました。 currency_code : XTZ ================================================= amount : 0.0 ================================================= available : 0.0 ================================================= continueについて詳しく存じ上げなかったのですが、これは0だったら処理を飛ばすものではないのでしょうか。なぜこの要素だけ取り出されたのか分かりません。。。 良ければ、詳細の解説をお願いします。
退会済みユーザー

退会済みユーザー

2021/04/16 16:16

>出力結果が以下のようになりました。 こちらではそのような結果は再現できませんでした。 (残高がゼロ以外のものだけが正常に表示されます) ・コードの各行のインデント(行頭のスペース)が私の回答の通りになっているか。 ・APIの設定は正しいか 等について今一度確認していただけないでしょか。
Na3430mls

2021/04/17 02:45

ありがとうございます。インデントと改めて整えたら正常に動作しました! なお、VSコードに以上のコードを記述したところ 以下のようなエラーが頻発するのですが、これもインデントが整っていないとこに起因するエラーなのでしょうか? if balance["amount"] == 0: TypeError: string indices must be integers Jupyter上では問題なく動いています。
退会済みユーザー

退会済みユーザー

2021/04/17 03:17 編集

私はエスパーではないので、ソースコードを示していただかなければ、原因はわかりません。 (私の手元では正常に動いています) その ”エラーが頻発する” というソースコードを、質問欄の「編集」ボタンをクリックして、改めて全部記載してください。 (このコメント欄はソースコード貼り付けに対応していません(インデントが崩れてしまうため)。したがってエラーが出るソースコードはこのコメント欄の続きには書かず、質問欄を編集して追記するようにしてください)
Na3430mls

2021/04/17 03:42

ありがとうございます。追加情報を更新いたしました。ご回答いただけると嬉しいです。
退会済みユーザー

退会済みユーザー

2021/04/17 03:59

追記されたソースコードですが、インデントがpythonの文法に沿っておらず、こちらで貼り付けて実行してもエラーになります。 実行できるソースコードを記載してください。
退会済みユーザー

退会済みユーザー

2021/04/17 04:09 編集

多分ですが、エラーが発生するのは、balanceと["amount"]の間にスペースが入っているのが原因です。 元の質問文のコード部分に関しては、balanceと["amount"]の間にあるスペースをなくして「balance["amount"]」とすればエラーはなくなるはずです。 (なお、最初の質問以外の、後から大幅に追記された部分(flask関係)の中にバグがあっても、こちらでは答えかねます。 後付けで質問される場合は、この質問を評価/クローズして追加質問を立ててください)
Na3430mls

2021/04/17 05:57

ご回答ありがとうございます。 エディターで書いたものをそのまま貼り付けたのですが、インデントが変わってしまっていますね。。 すみません。 変数に入れている理由を追記した方が良いかな、と思って追記したのですが、確かに質問の趣旨が大きく変わってしまいますね。改めて別の投稿をします。ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問