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

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

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

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

Q&A

1回答

942閲覧

PYTHON 関数の作成方法 IMPORTの宣言箇所について

退会済みユーザー

退会済みユーザー

総合スコア0

Python

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

1グッド

0クリップ

投稿2018/05/14 12:06

編集2018/05/14 13:30

お世話になります。python初心者です。

MAIN処理 exchange = [ hogebit({ 'apiKey': 'hoge', 'secret': 'hoge', }), hogebank({ 'apiKey': 'hoge', 'secret': 'hoge', }) ] def order_process(): limit_ordered_info = exchange[0].create_order( >>>>>>>>>>>>>>>>>>>>>>>>>[0]を追加したい。 return limit_ordered_info order_process()

自分で作成したdf関数の中にexchange[0]を追加したいです。

tachikoma👍を押しています

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

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

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

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

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

tachikoma

2018/05/14 12:08

xxxは何を想定してるんですか?
退会済みユーザー

退会済みユーザー

2018/05/14 12:11

xxxはオーダーの種類がはいります。
退会済みユーザー

退会済みユーザー

2018/05/14 12:12

質問が長くすみません。自分で作成した df の中で import test_import が利用できませんでした。
tachikoma

2018/05/14 12:18

test_importはtest_import.pyというファイルなんですかね。ご質問のコードを実行できる状態にしてもらえないと、どこで躓いているのか把握できないです。
tachikoma

2018/05/14 12:35

依頼:画像だとコピーして実行することができないので、スクリーンショットではなくソースコードそのものを質問欄にコピペしてください。
退会済みユーザー

退会済みユーザー

2018/05/14 12:36

失礼しました。
退会済みユーザー

退会済みユーザー

2018/05/14 13:27 編集

-
guest

回答1

0

現在はこのようにexchangeを定義しているかと思いますが、このままだとexchangeの0番目がhogebitで・・・と覚えておかなくては行けません。

python

1exchange = [ 2 hogebit({ 'apiKey': 'hoge', 'secret': 'hoge',}), 3 hogeif({ 'apiKey': 'hoge', 'secret': 'hoge',}), 4 hogebank({'apiKey': 'hoge', 'secret': 'hoge',}) 5 ]

そのかわりに、dictを使うことをオススメします。

python

1exchange = { 2 'hogebit': hogebit({'apiKey': 'hoge', 'secret': 'hoge',}), 3 'hogeif': hogeif({'apiKey': 'hoge', 'secret': 'hoge',}), 4 'hogebank': hogebank({'apiKey': 'hoge', 'secret': 'hoge',}) 5 } 6``` 7こうしておくことによって、`exchange['hogebit'].create_order(...)`と呼び出せます。 8 9 10---- 11 12最後のやりたいことは、indexを渡すよりは、exchangeを渡せばいいと思いますよ。 13 14```python 15def order_process(exchange, 16 arbitrage_decision, best_ask_price, 17 set_ask_volume, target_currency): 18 limit_ordered_info = exchange.create_order( 19 symbol=target_currency, 20 type='limit', 21 side='buy', 22 amount=set_ask_volume, 23 price=best_ask_price 24 ) 25 print(json.dumps(limit_ordered_info, indent=True)) 26 return limit_ordered_info 27 28order_process(exchange[0], 29 arbitrage_decision, best_ask_price, 30 set_ask_volume, target_currency) 31```

投稿2018/05/14 12:11

編集2018/05/14 13:34
tachikoma

総合スコア3601

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

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

退会済みユーザー

退会済みユーザー

2018/05/14 13:22 編集

-
tachikoma

2018/05/14 12:19

追記ありがとうございます。少々お待ち下さい。
退会済みユーザー

退会済みユーザー

2018/05/14 12:19

いつも丁寧にありがとうございます。
退会済みユーザー

退会済みユーザー

2018/05/14 13:27 編集

-
退会済みユーザー

退会済みユーザー

2018/05/14 13:23 編集

退会済みユーザー

退会済みユーザー

2018/05/14 12:26

return limit_ordered_info を実施してみます。
tachikoma

2018/05/14 12:28

defの中ではない場所でlimit_ordered_info = exchange.create_order(...)が正しく呼び出せるなら、ですが。
退会済みユーザー

退会済みユーザー

2018/05/14 12:30

return limit_ordered_info を追記しましたが、 AttributeError: 'list' object has no attribute 'create_order' というエラーが出ています。
退会済みユーザー

退会済みユーザー

2018/05/14 12:33

具体的に画像を追加させていただきました。
退会済みユーザー

退会済みユーザー

2018/05/14 12:34

377行目 limit_ordered_info = exchange.create_order( にて AttributeError: 'list' object has no attribute 'create_order' のエラーが出ている状況です。
tachikoma

2018/05/14 12:37

参考にしているサイトを見る限り、 bf = ccxt.bitflyer({ 'apiKey': '<APIキー>', 'secret': '<APIシークレット>' }) としてbfのインスタンスを作って、それに対してbf.exchange(...)を呼び出しているようですね。
退会済みユーザー

退会済みユーザー

2018/05/14 12:39

はい。画像修正しました。
tachikoma

2018/05/14 12:39

すいませんexchangeじゃない、bf.create_order(...)等です。
退会済みユーザー

退会済みユーザー

2018/05/14 13:27 編集

-
tachikoma

2018/05/14 12:44

exchange = ...というexchangeへの代入をどこかで行っているはずなのですが、その部分も追記してもらえませんでしょうか。
退会済みユーザー

退会済みユーザー

2018/05/14 13:22 編集

退会済みユーザー

退会済みユーザー

2018/05/14 12:46

みたいな感じで取引所が3つあります。
退会済みユーザー

退会済みユーザー

2018/05/14 12:48

exchange.create_order( の  exchange. を df の中に 持ってこれていないのでしょうか? メイン関数の中では上記のようにexchangeを宣言しています。
tachikoma

2018/05/14 12:49

ひとまず一番外側の`[ ]`のカッコを外して実行してみてください。そのコードではexchangeがリストになってしまい、おそらく意図した通りに動かなくなってしまいます。
退会済みユーザー

退会済みユーザー

2018/05/14 13:22 編集

退会済みユーザー

退会済みユーザー

2018/05/14 13:27 編集

-
tachikoma

2018/05/14 13:00

複数のexchange objectが入っているわけですね。そうすると
tachikoma

2018/05/14 13:01

exchange[0].create_order(...)なら通るんじゃないですかね。
退会済みユーザー

退会済みユーザー

2018/05/14 13:05

おーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
退会済みユーザー

退会済みユーザー

2018/05/14 13:06

通りました。す、すごすぎる。
退会済みユーザー

退会済みユーザー

2018/05/14 13:06

ありがとうございます。exchangeの引継ぎが出来ない状況です。
退会済みユーザー

退会済みユーザー

2018/05/14 13:06

整理をして本文に記載します。
退会済みユーザー

退会済みユーザー

2018/05/14 13:09

追記しました。
tachikoma

2018/05/14 13:16

defの中でexchangeを作るのをやめれば関数の内外で共通の変数にアクセスできます。念のためdefの中でglobal exchangeとしておくといいかもしれません。
退会済みユーザー

退会済みユーザー

2018/05/14 13:18

おおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお
退会済みユーザー

退会済みユーザー

2018/05/14 13:20

defの中のexchangeを全て削除してもエラーは出ませんでした。つまり tachikoma さんがおっしゃられたexchange[0].create_order(...)なら通るんじゃないですかね。 の [0]が原因でした。エンジニアはコミュニケーション能力が著しく低い一方で、遠隔でこのスピードでこの拙い私の内容で答えにたどり着かせるあなたの能力は天下一品、天才だと思います。ありがとうございます。
退会済みユーザー

退会済みユーザー

2018/05/14 13:21

で、今exchange[0]. の[0].を引数にトライしています。
tachikoma

2018/05/14 13:29

exchangeの要素を一つ、引数で渡せばいいんじゃないですかね。
退会済みユーザー

退会済みユーザー

2018/05/14 13:33

なるほどなるほど。辞書が3つあって、その中に不変のタプルがあって、その中に辞書でkeypassですね?
退会済みユーザー

退会済みユーザー

2018/05/14 13:36

うおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお order_process(exchange[0], ちょとやってみます。
tachikoma

2018/05/14 13:36

「不変のタプル」ってどこから出てきた・・・?hogebit({'apiKey': 'hoge', 'secret': 'hoge',})の返り値ですかね。keyは文字列ですが、valueの型は私は分かりません(ためしてないので)
退会済みユーザー

退会済みユーザー

2018/05/14 14:08

()ってタプルなのかと思っていました。 # タプル – (‘perl’, ‘python’, ‘php’, ‘ruby’) リストに近いが不変(イミュータブル)
退会済みユーザー

退会済みユーザー

2018/05/14 14:11

ちなみにまだ格闘しています。
退会済みユーザー

退会済みユーザー

2018/05/14 14:13

exchange = { hogexxt.hogeflyer({ 'apiKey': '', 'secret': '', }),
退会済みユーザー

退会済みユーザー

2018/05/14 14:13

で辞書型に変えました。
退会済みユーザー

退会済みユーザー

2018/05/14 14:14

limit_ordered_info = order_process(exchange,arbitrage_decision,best_ask_price,set_ask_volume,target_currency) で呼び出しのエラーもなくなりました。
退会済みユーザー

退会済みユーザー

2018/05/14 14:14

def order_process(exchange,arbitrage_decision,best_ask_price,set_ask_volume,target_currency): でdefのエラーもなくなりました。
退会済みユーザー

退会済みユーザー

2018/05/14 14:17

ちょと他の処理にも影響しそうなので、一旦辞書は諦めます。
退会済みユーザー

退会済みユーザー

2018/05/14 14:21

本当にいつもありがとうございます。
退会済みユーザー

退会済みユーザー

2018/05/14 14:21

丁寧かつ迅速かつ的確で助かりました。ありがとうございました。
tachikoma

2018/05/14 14:25

最初は思い通りにならないと思いすが、いろいろいじりながら体で覚えていってくださいな。
退会済みユーザー

退会済みユーザー

2018/05/14 14:26

優しすぎます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問