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

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

ただいまの
回答率

90.61%

  • Python 3.x

    5896questions

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

pythonのエラー:cannot perform reduce with flexible typeがわからない。

受付中

回答 1

投稿

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

OMG_GG

score 2

 前提・実現したいこと

https://qiita.com/shionhonda/items/bd2a7aaf143eff4972c4
上記サイトをみつけ、おもしろそうだとおもったので、
勉強がてらソースをまねて書いています。
自分はbitbankなので、一部サイトと違う部分があります。
(サイトはbitflyer)
初めてPythonを使っての自動取引botを作成したいと思っています。

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

TypeError                                 Traceback (most recent call last)
<ipython-input-2-7172f38f0892> in <module>()
     52         # プロット用データの更新
     53         raws = np.append(raws, [ltps1[itr1-1]])
---> 54         sma1 = np.append(sma1, [ltps1.mean()])
     55         sma2.append(ltps2.mean())
     56         sgm1 = np.append(sgm1, [ltps1.std()])

D:\Anaconda3\lib\site-packages\numpy\core\_methods.py in _mean(a, axis, dtype, out, keepdims)
     68             is_float16_result = True
     69 
---> 70     ret = umr_sum(arr, axis, dtype, out, keepdims)
     71     if isinstance(ret, mu.ndarray):
     72         ret = um.true_divide(

TypeError: cannot perform reduce with flexible type

 該当のソースコード

#bitbankインストールPATH
import sys
sys.path.append("ハードコーディング")

# グラフ描画に使う
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# bitbankにアクセスするのに使う
import python_bitbankcc

# 時間の管理に使う
import time
from datetime import datetime

# リアルタイムプロットに必要
from ipywidgets import FloatProgress
from IPython.display import display, clear_output

# Jupyter環境でグラフを表示するのに必要
%matplotlib inline

# 最終取引価格、移動平均、標準偏差を格納する配列
raws = []
sma1, sma2 = [], []
sgm1, sgm2 = [], []

# 移動平均を取る幅
itr1 = 15 # 15 mins
itr2 = 60 # 60 mins

# 60分間の最終取引価格の配列
pub  = python_bitbankcc.public()
tick = pub.get_ticker( 'xrp_jpy' )
current_price = tick['last']
ltps2 = float(current_price)*np.ones(itr2) 
plt.ion()
fig = plt.figure(figsize=(16,5))
axe = fig.add_subplot(111)

while True:
    # 60秒ごとに稼働
    if datetime.now().strftime('%S') [0:2]== '00':
        clear_output(wait = True)
        pub = python_bitbankcc.public()
        tick =  pub.get_ticker( 'xrp_jpy' )
        raws = np.append(raws, tick['last'])
        # 最終取引価格の更新
        ltps2 = np.hstack((ltps2[1:itr2], tick['last']))
        ltps1 = ltps2[itr2-itr1:itr2]
        # プロット用データの更新
        raws = np.append(raws, [ltps1[itr1-1]])
        sma1 = np.append(sma1, [ltps1.mean()])
        sma2.append(ltps2.mean())
        sgm1 = np.append(sgm1, [ltps1.std()])
        sgm2 = np.append(sgm2, [ltps2.std()])
        # プロット
        axe.plot(raws, "black", linewidth=2, label="Raw price")
        axe.plot(sma1, "r", linewidth=1, label="15min SMA")
        axe.plot(sma2, "g", linewidth=1, label="60min SMA")
        axe.plot(sma1+2*sgm1, "r", linewidth=1, linestyle="dashed", label="15min 2sigma")
        axe.plot(sma1-2*sgm1, "r", linewidth=1, linestyle="dashed")
        axe.plot(sma2+2*sgm2, "g", linewidth=1, linestyle="dashed", label="60min 2sigma")
        axe.plot(sma2-2*sgm2, "g", linewidth=1, linestyle="dashed")
        axe.legend(loc='upper left')
        axe.set_title("SMA and Bollinger band")
        display(fig)
        # 次の00秒まで休憩
        time.sleep(57)
        axe.cla()

 試したこと

Googleでエラーについて調べて、型を変えてみたりしたくらい。
そもそも、見当違いのことをしているのだろうけど・・・。

 補足情報(FW/ツールのバージョンなど)

pythonは3.6 IDEはAnacondaのJupyter Notebookです。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • hayataka2049

    2018/05/25 19:00 編集

    エラーが出ている箇所で、どんな引数が渡っているかprintしたりして確認してみてください。sma1, [ltps1.mean()]をそれぞれprintして見れば良いです

    キャンセル

回答 1

0

D:\Anaconda3\lib\site-packages\numpy\core\_methods.py in _mean
のエラーで
np.append(sma1, [ltps1.mean()])
なので
ltps1の中身を調べて見てはいかがですか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

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

関連した質問

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

  • Python 3.x

    5896questions

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