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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Bitcoin

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

Q&A

解決済

1回答

5906閲覧

python3.6にて、findを使おうとしたがうまく行かない (AttributeError: 'dict' object has no attribute 'find')

takizawasizuku

総合スコア24

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Bitcoin

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

0グッド

0クリップ

投稿2017/11/09 16:15

###前提・実現したいこと
python3.6でシステムを作っています。
zaifという仮想通貨取引所で、定期的に自分が売り注文をしていない時に、既存の買い注文をキャンセルして、新しく買い注文することをできるようにするため、find文を用いて、自分が売り注文をしていないことを確認するプログラムを書いているのですがうまく行きません。
ちなみに、if index < 0: の部分を削除すると、買い注文が成立したときに、既に成約した注文をキャンセルしてエラーを吐いてプログラムが止まってしまいます。
なので、キャンセルする部分に、自分が売り注文をしていない時に(買い注文が成立したら即売り注文となるので)というif文を加えようとしています。
もし、findを用いる以外のやりかたで、成約した注文をキャンセルしてエラーとなるのを回避するやり方をご存知でしたら、そちらでも大丈夫ですので教えていただけたらと思います。
よろしくお願いします。

###発生している問題・エラーメッセージ

C:\Users\hatanaka\AppData\Local\Programs\Python\Python36-32\python.exe C:/zaif/maintwo.py Traceback (most recent call last): File "C:/zaif/maintwo.py", line 17, in <module> index = __builtins__order_number.find('ask') AttributeError: 'dict' object has no attribute 'find' Process finished with exit code 1

###該当のソースコード

# -*- coding: utf-8 -*- from time import sleep from zaifapi import ZaifTradeApi # Zaifの取引のためのクラス from zaifapi import ZaifPublicApi # Zaifが公開している認証情報が要らないAPIを実行するクラス from pprint import pprint # 表示用(jsonをきれいに表示してくれる) if __name__ == '__main__': key = 'himitsu ' secret = 'himitsu' zaif_public = ZaifPublicApi() zaif_private = ZaifTradeApi(key, secret) order_idone = 10000000000000000 # 情報取得 num = 0 while num < 2: order_number = zaif_private.active_orders() index = order_number.find('ask') if index < 0: if order_idone != 10000000000000000: cancel = zaif_private.cancel_order(order_id=order_idone) pprint(cancel) #sleep(3) order_idone = 0 last_price = int(zaif_public.last_price('btc_jpy')["last_price"]) last_priceminus = last_price - 500 last_pricepuls = last_price - 200 trade_info = zaif_private.get_info2() funds_jpy = trade_info["funds"]["jpy"] print('last_price: ' + str(last_price)) print('funds_jpy: ' + str(funds_jpy)) amountbtc = round(float(funds_jpy) / last_price -0.00005, 4) if funds_jpy > 88: trade_result = zaif_private.trade(currency_pair='btc_jpy',action='bid',amount=amountbtc,price=last_priceminus,limit=last_pricepuls) pprint(trade_result) order_idone = trade_result["order_id"] sleep(20)

###試したこと
すいません、手も足もでませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
OSはwindows10,PyCharmを使って作っています。
http://techbureau-api-document.readthedocs.io/ja/latest/trade/2_individual/6_active_orders.html
今回つかっている、zaifのapiのactive_ordersの仕様はこうなっております。
他の仕様はこちら
http://techbureau-api-document.readthedocs.io/ja/latest/trade/index.html

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

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

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

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

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

guest

回答1

0

自己解決

以下のように書くことでエラーを回避できました。自己解決しました。お目汚し失礼しました。

-- coding: utf-8 --

from time import sleep
from zaifapi import ZaifTradeApi # Zaifの取引のためのクラス
from zaifapi import ZaifPublicApi # Zaifが公開している認証情報が要らないAPIを実行するクラス
from pprint import pprint # 表示用(jsonをきれいに表示してくれる)

if name == 'main':
key = 'himitsu '
secret = 'himitsu'
zaif_public = ZaifPublicApi()
zaif_private = ZaifTradeApi(key, secret)
order_idone = 0
# 情報取得
num = 0
while num < 2:
#order_number = zaif_private.active_orders()
#index = order_number.find('ask')
#if index < 0:
if order_idone != 0:
try:
cancel = zaif_private.cancel_order(order_id=order_idone)
pprint(cancel)
#sleep(3)
order_idone = 0
except:
order_idone = 0
last_price = int(zaif_public.last_price('btc_jpy')["last_price"])
last_priceminus = last_price - 100
last_pricepuls = last_price
trade_info = zaif_private.get_info2()
funds_jpy = trade_info["funds"]["jpy"]
print('last_price: ' + str(last_price))
print('funds_jpy: ' + str(funds_jpy))
amountbtc = round(float(funds_jpy) / last_price -0.00005, 4)
if funds_jpy > 88:
trade_result = zaif_private.trade(currency_pair='btc_jpy',action='bid',amount=amountbtc,price=last_priceminus,limit=last_pricepuls)
pprint(trade_result)
order_idone = trade_result["order_id"]
sleep(20)

投稿2017/11/09 16:33

takizawasizuku

総合スコア24

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問