見出し画像

仮想通貨自動売買システム(自動売買Bot)のAWSのCloud9上での環境構築からグラフ描画のためのmatplotlibの日本語化までのまとめ、および問題点や対策、雑記等

こんにちは。じぇふてぃです。

有料noteが続いたので今回は無料noteでPython&BitMexでの仮想通貨自動売買の普及活動をしようかと思います。

仮想通貨自動売買をする上で、AWSのCloud9上での環境構築から、ビットコインの価格推移のグラフ描画のために、matplotlibの日本語化までストレートにまとめたものがあれば、初心者の方でも便利かなと思い今回は書かせて頂きました。

また、最後に自動売買システムを公開してきた中でプログラミング上の問題点やその対策、雑記等も私が書ける範囲で公開させて頂こうかなと思います。同じ失敗を繰り返さないようにこれからプログラミングされる方に知っておいて頂ければと思う内容をまとめました。

以下の順番でご説明させて頂きます。既に構築済の方は必要により読み飛ばして下さい。

1.AWSのアカウント登録方法

2.Cloud9の登録方法

3.Cloud9上でのPython環境構築

4.試しに書いてみる−Pythonコードの実行方法

5.プログラミング上の問題点や対策、雑記等


それでは説明に移らせて頂きます。

1.AWSのアカウント登録方法

AWS(アマゾンウェブサービス) とは、クラウドの拡張性ある低コストのインフラストラクチャプラットフォームで、企業や組織の更なる迅速な活動や、IT コスト削減、アプリケーション拡張を実現するために役立つ幅広いサービス(コンピューティング、ストレージ、データベース、分析ツール、アプリケーション、デプロイサービス、AI サービス等)を提供しているサービスのことです。

まずはアマゾン上のAWSアカウント登録方法についてのご説明です。通常のショッピングをされるアマゾンアカウントは使えませんのでご注意下さい。基本的に1年間無料となります。無料期間終了後も突然高額な請求が来るなんてことはありませんのでご安心下さい。

【アマゾンウェブサービスのWebページへ移動】

ページを開いたら中央の「今すぐ無料アカウント作成」ボタンを押します。

続いてAWSアカウント作成に必要なメールアドレスと、ご希望のパスワード、AWSアカウント名を登録していきます。

ちなみに本家の登録方法はこちらになります。https://aws.amazon.com/jp/register-flow/

続いて必要な情報を入力していきましょう。住所等の連絡先情報は半角英数でしか登録できませんのでご注意下さい。

続いて支払い情報の入力です。

①の入力欄に有効なクレジットカード情報を入力します。

②の選択欄で請求先住所を選択します。前のステップで入力した住所と同様の場合は、「連絡先住所を使用する」を選択します。アカウント作成時にご入力した住所と異なる請求先となる場合は、「新しい住所を使用する」を選択して、請求先住所を入力します。

続いて電話による確認です。

国コードで日本または会社所在の国を選択し、この場で連絡を受けることができる電話番号を ① にハイフン・記号なしで入力します。

セキュリティチェックのため、セキュリティチェック文字列として表示された英数字を ② に入力します。

③のボタンをクリックすると、即座に電話がかかってきます。すぐに着信を受け取れる電話番号をご入力ください。

国番号選択を誤ると電話がかかってきませんので、必ず正しい国コードをご選択の上、ハイフンなしで電話番号をご入力ください。

【注意】私はdocomoの携帯番号を登録しましたが、何故か電話がかかってこず・・・よくある質問で調べてもわからなかったため、以下リンクのお問い合わせからその旨メールしたところ、後日日本語担当者さんからの直接電話確認で登録完了の運びとなりました。【お問い合わせページリンク】

あきらめずに頑張りましょう。

続いてAWS サポートプランの選択です。

無料のベーシックプランで十分ですのでベーシックプランを選択しましょう。

これでAWSアカウントの作成は完了となります。

マネジメントコンソールを起動ボタンを押して次のCloud9の登録を行っていきましょう。もちろんセキュリティ向上のための2段階設定とかの設定も随時やっておいてくださいね。

2.Cloud9の登録方法

AWSのマネジメントコンソールを開いたらサービスの検索窓があるので「Cloud9」と入力して選択してみましょう。

時期によって表示方法が異なるかもしれませんが、「Create  environment」を選択しましょう。

新しい環境の名前設定を行いましょう。

今回は「test」と入力していますが、ご自身の好みの名前で結構です。入力したら「Next Step」ボタンを押しましょう。

続いてCPU等の環境設定です。無料の環境を利用される場合は、特に設定の変更は必要なく、デフォルトで結構です。

画面をスクロールして「Next Step」ボタンを押しましょう。

最後に環境の確認を行いましょう。

問題なければ「Create environment」ボタンを押して完了です。

3.Cloud9上でのPython環境構築

Cloud9の登録が完了したらいよいよ自動売買システム(自動売買Bot)のためPythonの環境を構築していきましょう。Cloud9はLinuxですので今回からはターミナルでのコマンド入力になります。

・・・といっても身構える必要はなく、慣れれば非常に簡単ですよ。

上部の「Window>New  Terminal」を選択してコマンド入力画面を表示しましょう。

以下のような画面が表示されるはずです。

それでは早速コマンドを入力していきましょう。

まずは以下のコマンドでpyenvのインストールをします。pyenvとは違うバージョンのpythonを複数入れることができコマンドで切り替えることができます。

特定のバージョンで使いたい場合などpyenvで構築しておくと簡単に作ることができます。

以下のコマンドを入力しましょう。

sudo yum install gcc gcc-c++ make git openssl-devel bzip2-devel zlib-devel readline-devel sqlite-devel

sudoとはUNIXおよびUnix系オペレーティングシステムのプログラムの1つで、ユーザーが別のユーザーの権限レベルでプログラムを実行するためのコマンドです。

yumとは、LinuxのRedHat系ディストリビューション(CentOSやFedoraなど)で利用されるパッケージ管理ツールです。Debian系ディストリビューション(Ubuntuなど)で利用される「APT」に相当するものです。

続いて以下のコマンドを入力しましょう。

sudo git clone https://github.com/yyuu/pyenv.git /usr/bin/.pyenv

既存の Git リポジトリ (何か協力したいと思っているプロジェクトなど) のコピーを取得したい場合に使うコマンドが、git clone です。

続いて以下の4つのコマンドを実行しましょう。1行ずつコピーしてターミナルにCtrl+Vで貼り付け、1行ずつコマンド実行してみましょう。

cd /usr/bin/.pyenv
sudo mkdir shims
sudo mkdir versions
sudo chown -R ec2-user:ec2-user /usr/bin/.pyenv

cdはチェンジディレクトリで作業場所の変更を行うコマンドです。

mkdirでディレクトリを作成しています。

chownは(change owner)で ファイルやディレクトリの所有者を変更するコマンドです。

続いて以下の2つのコマンドを実行しましょう。

cd ~
vi .bashrc

作業ディレクトリを変更して、viエディタで「.bashrc」を編集してます。

viの使い方は以下を参考にしてください。
https://qiita.com/hide/items/5bfe5b322872c61a6896

viエディタで編集モードに入ったら、18行目の「alias python」の前に「#」を入れて下さい。

:set number
i #alias python=python27

「:set number」は行数を出すコマンドです。

「i」で書き込みができます。カーソルキーで移動できます。

書き換えた後にESCキーを押します。

続いて以下のコードを先ほどのファイルの一番下に追加します。iを押してから書き込みます。

export PYENV_ROOT="/usr/bin/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
export PATH=${PYENV_ROOT}/bin:$PATH
eval "$(pyenv init -)"
fi

書き換えた後にESCキーを押します。

最後に「:wq」を入力してファイルを保存して終了しましょう。

:wq

.bashrcを読み込みます。

source ~/.bashrc
exec bash

コマンドエラーの場合は「Window>new Terminal」で新しいターミナルを開いて再実行しましょう。

pyenv で python 3.6.5をインストールします。以下の6個のコマンドを順番に実行してみましょう。
ここでバージョンが2.7と出ている場合は、ターミナルを新しく開いてください。

pyenv install --list
pyenv install 3.6.5
pyenv global 3.6.5

python --version
pip --version
pyenv version

コマンドの結果が以下のようになっていればOKです。

$ python --version
Python 3.6.5
$ pip --version
pip 9.0.3 from /usr/bin/.pyenv/versions/3.6.5/lib/python3.6/site-packages (python 3.6)
$ pyenv version
3.6.5 (set by /usr/bin/.pyenv/version)

これで一通りのPythonのインストールが終了しました。

続いてPythonに必要なライブラリのインストールを行います。

ccxt, json等のインストールをします。

pip install ccxt
pip install simplejson
pip install requests
pip install datetime
pip install numpy
pip install pandas

以降、Pythonでimportして使用するライブラリは「pip install」コマンドでインストールすることになります。非常に簡単ですね。

続いてCloud9上でのTA-Libのインストールをしましょう。TA-Libを使用する必要が無ければインストールする必要はありませんが、非常に強力なライブラリですのでインストールしておくことをお勧めします。

Python で金融データを収集し分析するにあたり、テクニカル分析における代表的な指標を算出するにあたってはライブラリとして TA-Lib があります。 pandas で株式の日足データ (= 日ごとの始値、高値など) を分析する場合、代表的なさまざまな指標を算出するにはすべて自前で実装するよりライブラリを使ったほうが便利です。

TA-Libをインストールするには以下のコマンドを1行ずつ順番に実行していきましょう。

cd ~
wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
tar xvzf ta-lib-0.4.0-src.tar.gz 
cd ta-lib
./configure --prefix=/usr
make
sudo make install

sudo bash -c "echo "/usr/local/lib64" >> /etc/ld.so.conf"
sudo /sbin/ldconfig

pip install ta-lib

AWS EC2のタイムゾーンを変更します。

sudo vi /etc/sysconfig/clock

以下のように「i」で「#」を挿入してコメントアウトし、Japanへ変更します。

# ZONE="UTC"
ZONE="Japan"
UTC=true

ESCボタンを押し、「:wq」で保存して終了して下さい。

時間帯ファイルを変更します。

sudo ln -sf /usr/share/zoneinfo/Japan /etc/localtime

念のため以下のコマンドで日本時間になっているか確認できます。

date

これで日本時間が表示されるはずです。

それでは作業エリアに戻りましょう。

cd ~/environment


環境の停止時間の設定は以下のように画面右上の歯車をクリックすると設定画面が表示されますので、

環境の停止時間を自由に設定できます。


続いてグラフ描画ライブラリであるmatplotlibをインストールしてみましょう。また、このライブラリは追加でグラフを日本語化する必要があります。

pip install matplotlib

matplotlibをインストールしたら、日本語化してみましょう。

AWSのCloud9上で日本語フォントの設定をする場合は様々な方法がありますが、方法の一つとして、フォントを外部からダウンロードし、matplotlibrcファイルを修正する方法についてご説明します。

まずは作業エリアに戻りましょう。ターミナルを新たに開きなおしても良いです。

cd ~/environment

ipafontをwgetコマンドでダウンロードします。

wget -O ipafont.zip http://ipafont.ipa.go.jp/old/ipafont/IPAfont00303.php

unzipコマンドで解凍します。

unzip ipafont.zip

IPAfont00303というフォルダができるので、中身のttfファイルをユーザー共有のfontsフォルダへコピーしましょう。

sudo cp IPAfont00303/*ttf /usr/share/fonts/

あとはmatplotlibrcファイルをviエディタで開きます。場所はインストール環境によって異なるため、以下の場所にない場合は「usr/bin/」以下フォルダをご自身で探してみて下さい。

sudo vi /usr/bin/.pyenv/versions/3.6.5/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc

matplotlibrcファイルを開いたら、最下行を表示し、「i」で追記モードへ移行し、「font.family : IPAGothic」と1行追加します。

font.family : IPAGothic

追記したらESCボタンを押しモード終了、「:wq」と入力して保存して終了します。

あとはキャッシュの削除です。以下のコマンドはmatplotlibを既に利用しており、キャッシュが作成されていれば実行しましょう。キャッシュを削除しないと日本語フォントが新しく読み込まれません。以下の2つのコマンドを順番に実行しましょう。「rm」は削除コマンドです。間違って他のファイルを削除しないように慎重に操作しましょう。特にコピペでのコマンド実行時は1行ずつ慎重に。過去に私もやらかしました。

rm /home/ec2-user/.cache/matplotlib/fontList.json
rm -r /home/ec2-user/.cache/matplotlib/tex.cache

「No such file or directory」のエラーが出てくれば問題ないです。
これはmatplotlibをまだ使用していないためキャッシュが作成されていない可能性が高いためです。

これでキャッシュを削除すれば日本語フォントを読み込み、グラフに日本語が表示されるはずです。

以上でmatplotlibの日本語化手順は終了です。


ここからは雑記ですのでターミナル上のコマンドではありません。

その他、注意事項としてmatplotlibライブラリを実際にPythonコード中で使用する場合は通常のWindowsやMac等の環境ではソースコードは以下の記述で良いのですが、

# 作成したPythonコードのmatplotlib使用例(Cloud9で動かない例)

import matplotlib.pyplot as plt

・・・(以下にPythonコードを記述)・・・

AWSのCloud9上ではGUIを持っていないため以下の記述に書きかえましょう。

# 作成したPythonコードのmatplotlib使用例(Cloud9で動く例)

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

・・・(以下にPythonコードを記述)・・・

以上となります。これでPythonを用いて自動売買およびグラフ描画ができる環境が整いました。


4.試しに書いてみる−Pythonコードの実行方法

それでは試しにPythonプログラムを書いて実行してみましょう。

以下のように最上位フォルダ(今回は「test」)を右クリックして、メニューが表示されたら「New File」を左クリックで選択しましょう。

ファイルが作成されますのでファイル名を「test.py」として保存しましょう。

ファイル「test.py」を表示して動作確認のために以下のプログラムを書いてみましょう。

print("Hello World!!")

書き終わったら以下のように実行してみましょう。

Run>Run With>Python 3を選択して実行できます。

下の画面にHello World!!と表示されれば成功です。

いかがでしたでしょうか。非常に簡単ですね。

続いてmatplotlibもインストールしましたし、グラフでも書いてみましょう。

test.pyファイルに以下のソースをコピペして実行してみましょう。ライブラリが無い等のエラーが出る場合は必要によりターミナル画面から「pip install」コマンドで必要なライブラリを読み込んでください。

import requests
import json
import pandas as pd
import datetime as dt
import time
import numpy as np
import matplotlib

matplotlib.use('Agg')
import matplotlib.pyplot as plt

def main():
    # ローソク足の時間を指定
    periods = ["3600"]  # periods = ["1分:60","5分:300","1時間:3600"]

    startDate = dt.datetime.strptime('2018-02-12 12:00:00', '%Y-%m-%d %H:%M:%S')
    endDate = dt.datetime.strptime('2018-03-14 12:00:00', '%Y-%m-%d %H:%M:%S')

    startTimestamp = startDate.timestamp()
    endTimestamp = endDate.timestamp()

    # クエリパラメータを指定
    query = {"periods": ','.join(periods), "after": str(int(startTimestamp)), "before": str(int(endTimestamp))}

    # ローソク足取得時
    res = json.loads(
        requests.get("https://api.cryptowat.ch/markets/bitmex/btcusd-perpetual-futures/ohlc", params=query).text)[
        "result"]

    length = 0

    a_time = []
    a_open = []
    a_high = []
    a_low = []
    a_close = []

    # 表示
    for period in periods:
        print("period = " + period)
        row = res[period]
        length = len(row)
        print("length = " + str(length))

        for column in row[::]:
            a_time.append(column[0])
            a_open.append(column[1])
            a_high.append(column[2])
            a_low.append(column[3])
            a_close.append(column[4])
        break

    print(str(length))

    # データフレームの作成
    df = pd.DataFrame({'日時': a_time})

    df['始値'] = a_open
    df['高値'] = a_high
    df['安値'] = a_low
    df['終値'] = a_close

    print("last value is")
    print(df['終値'][length - 1])

    print("last time is")
    print(df.index[length - 1])

    df['サイン'] = np.array([0] * length)
    df['売買開始'] = np.array([0] * length)
    df['開始値'] = np.array([0] * length)
    df['売買終了'] = np.array([0] * length)
    df['終了値'] = np.array([0] * length)
    df['売買日時'] = np.array([0] * length)

    # 移動平均線他の計算
    tick = 75
    df['移動平均'] = df['終値'].rolling(window=tick).mean()
    df['標準偏差'] = df['終値'].rolling(window=tick).std()

    # ボリジャーバンド計算
    df['+1σ'] = df['移動平均'] + df['標準偏差']
    df['-1σ'] = df['移動平均'] - df['標準偏差']
    df['+2σ'] = df['移動平均'] + 2 * df['標準偏差']
    df['-2σ'] = df['移動平均'] - 2 * df['標準偏差']
    df['+3σ'] = df['移動平均'] + 3 * df['標準偏差']
    df['-3σ'] = df['移動平均'] - 3 * df['標準偏差']

    # unixtimestampを文字列に変換
    df['日時'] = df['日時'].apply(lambda x: dt.datetime.fromtimestamp(x))
    # グラフ描画のため日時をindexに指定
    df = df.set_index('日時')

    # グラフにプロット
    df['移動平均'].columns = ["MA " + str(tick)]
    ax = df['終値'].plot(color="black", label="終値")
    df['移動平均'].plot(ax=ax, ls="--", color="red", label="移動平均" + str(tick))

    df['+1σ'].plot(ax=ax, ls="--", color="orange", label="+1σ")
    df['-1σ'].plot(ax=ax, ls="--", color="orange", label="-1σ")

    df['+2σ'].plot(ax=ax, ls="--", color="green", label="+2σ")
    df['-2σ'].plot(ax=ax, ls="--", color="green", label="-2σ")

    df['+3σ'].plot(ax=ax, ls="--", color="yellow", label="+3σ")
    df['-3σ'].plot(ax=ax, ls="--", color="yellow", label="-3σ")

    ax.grid()
    ax.legend()

    # 小数点以下を丸める
    df = df.round(2)
    # 記録保存
    plt.savefig('foo.png')

if __name__ == "__main__":
    main()

以下の関数で移動平均と標準偏差を計算しています。非常に簡単ですね。

# 移動平均線他の計算
    tick = 75
    df['移動平均'] = df['終値'].rolling(window=tick).mean()
    df['標準偏差'] = df['終値'].rolling(window=tick).std()

作業フォルダ内に新しく「foo.png」というファイルが出来たと思います。

上のようなグラフが表示され、日本語が正しく表示されればOKです。

上記のボリンジャーバンドを用いた売買手法の詳細については以下の記事でご説明させて頂いておりますのでご興味ありましたらご確認下さい。

BitMexでの発注方法について

続いてBitMexでの発注をPythonで実装するための方法についてご説明します。ccxtライブラリを使用しますので、ccxtライブラリをインストールしていない場合は事前にターミナル画面から「pip install ccxt」でライブラリをインストールしておきましょう。

#bitmexライブラリをインポート
import ccxt

# APIキーを用いて初期化
bitmex = ccxt.bitmex({
    'apiKey': 'APIキーID',
    'secret': 'APIキー秘密鍵',
})

# 成行注文
bitmex.create_order('BTC/USD', type='market', side='buy', amount='100')

# 指値注文
bitmex.create_order('BTC/USD', type='limit', side='buy', amount='100', price='8000')


現在値を取得するには以下のようにfetch_ticker関数を使用します。

last = bitmex.fetch_ticker('BTC/USD')['last']


また、現在の自分の売買ポジションを取得するには以下のようなprivate_get_position関数を使用します。

pos = bitmex.private_get_position()[0]['currentQty']

posがプラスならロング(買い)ポジション、マイナスならショート(売り)ポジションとなります。非常に簡単ですよね。

上記ccxtライブラリを使用した自動売買システムを以下の記事でご紹介しております。興味ありましたらご確認下さい。


自動売買してたらチャネルブレイクアウトのサインを先取りしたい!!というご要望がありましたので、以下の記事で逆指値成行注文を使用した売買システムを公開させて頂きました。ご興味ありましたらこちらもご参考にどうぞ。

全ての機能を含みAWSのCloud9上で簡単に動作する完全版が欲しいという方には以下の記事がお勧めです。

以上となります。


5.プログラミング上の問題点や対策、雑記等

最後に自動売買システムを公開してきた中でプログラミング上の問題点やその対策、雑記等も私が書ける範囲で公開させて頂こうかなと思います。同じ失敗を繰り返さないようにこれからプログラミングされる方に知っておいて頂ければと思う内容をまとめました。

・BitMexといえどもエラーは発生する

他取引所と比較安定しているBitMexといえども長時間使用するとエラーが発生することがあります。売買発注も最近は自動売買を使用される方が多くなり、売買発注エラーが昔より発生しやすくなっているように感じます。売買サインが出たのでドテンさせるつもりがエラーで失敗とか悲しいですよね。必ずtry~exceptで失敗した時の再呼び出しをするようにしておきましょう。for文やWhile文で成功するまで何度も売買発注を行うコードでも良かったのですが、再帰呼び出しでも良いですね。

    def market_order(self, order=1):
        """
        成り行き注文処理
        orderにより自動的にロットやレバレッジからポジション数を計算し発注する
        :param order:1(買い) or -1(売り) or 0(ポジション解消)
        :return: response message
        """
        message = ""
        try:

            ・・・(省略)・・・

                    order = self.bitmex.create_market_buy_order(self.product_code, amount)
            
        except Exception as e:
            message = "売買発注エラーが発生しました。(省略)"

            if self.trycount > 0:
                notify(message) # 通知
                time.sleep(10) # 待機
                self.trycount = self.trycount - 1
                message = self.market_order(order) #再帰呼び出し

        self.trycount = TRYCOUNT

        return message

もちろんエラー発生時の通知は後で原因と対策を考える上で必須です。notify関数でLINEやメール、Twitter等の記録に残るものに通知すると良いでしょう。

for文やWhile文で呼び出しても良いですよ。

    def market_order(self, order=1):
        for文またはwhile文:
            try:

            ・・・(省略)・・・
                    order = self.bitmex.create_market_buy_order(self.product_code, amount)
                    message = "Order: Market_buy for close. amount:{},price:{}".format(amount, last)

                break:

            except:

        return message

どちらでも良いですが、必ずエラー時は再呼び出し処理を行うようにしておきましょう。

また、エラー発生時の待ち時間を現在は10秒としていますが、最初は1秒としておき、エラー回数が増える毎に2,4,8,16,32,64,・・・,512,1024と2乗しながら増やしていったほうが、BitMexサーバー過負荷に伴うエラーの場合は良いかもしれません。色々な方法があって面白いですね。


・売買発注はクラス化しておく

売買発注はクラス化しておき、呼び出し関数を統一しておけば、取引所を変更した場合でも変更が簡単になるかもしれません。

    # 変更前の売買注文用クラス実体化
    myOrder = MyOrder(APIKEY, SECRET, LOT_RATE, LEVERAGE, TESTNET)

    # 別の取引所の売買注文用クラスを実体化する場合はMyOrder2を呼び出す
    myOrder = MyOrder2(APIKEY, SECRET, LOT_RATE, LEVERAGE)

クラスの宣言を変えるだけで変更できます。変更が非常に簡単になりますね。あとは取引所のローソク足データ取得方法を変更すれば取引所の変更完了となります。簡単ですね。


・ロットの計算は自動でやってくれると便利

ロットを指定した割合に自動計算してくれると便利ですよね。私は最大ポジション数量から現在のポジションを引いて追加ポジション数を計算するように設定してます。

current_position_qty = pos['currentQty'] * self.get_int_position()
# 最大ポジション数量(レバレッジ設定×保有BTC総量×Price最終値×ロット割合)!!実際は成行注文をするので、この値より多少前後します!!
max_position_qty = int(self.LEVERAGE * total_btc * last)
# 新ポジションの数量(USD)の作成(最大ポジション数量×ロット割合)
new_position_qty = int(max_position_qty * self.LOT_RATE)
# ポジションの方向を数値で返す(ロング:1,ショート:-1,ノーポジ:0)
pos_trend = self.get_int_position()
# 追加ポジションを許容割合で取るための数量(USD)の作成
add_position_qty = new_position_qty - current_position_qty * pos_trend * order


今回はこれで終了となります。また公開できるような問題点と対策等が出てくればこの記事に追記させて頂こうかと思います。

以上となります。

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
46
株式関係の自動売買(シストレ)のpython,C,C++,C#,Javaプログラマー。暗号通貨,機械学習,自動取引,株式関係,あと動物とかに興味持ってます。

こちらでもピックアップされています

BitMEX
BitMEX
  • 30本
コメント (13)
(4)
他の人なら十分わかりやすく書かれていて、動作環境を整えられるnoteだとは思います。
自分の理解力が足りないだけだとは思いますが、何卒よろしくお願いします
コメント500文字制限につき連投申し訳ありません
何やらややこしいことになっています。これは、環境を上書きしてると原因調査や復旧するのは難しいかもしれませんので、もう一度clowd9で環境を作り直してはいかがでしょうか。

https://ap-southeast-1.console.aws.amazon.com/cloud9

お手数おかけして申し訳ないですが、既存の環境をdeleteで削除して頂き、もう一度「create environment」ボタンで作り直してはいかがでしょうか。

最初は皆難しいものです。私もそうでした。諦めず何度でもチャレンジしていきましょう。
お答えいただきありがとうございます!
おかげさまで大分進歩しました!
複数のプログラムを開いているという助言でcloud9上で他のbotの環境を作っていたところでやっていたので、create environmentで新しく作成することで、エラーも吐かずにしたまで入力することが出来ました
しかしbotのソースをコピーし、pyファイルに入れ込んだところまではいいのですが、BITMEXのAPIキーをいれると8行目の
from datetime import timedelta, timezone
の左側に×マークがつきます
あと一歩なのですが何か手はありますでしょうか・・
すみません
こちらは
pip install datetime
でpythonが2になってるので3にしてやり直すことで解決しました
しかし今度は合間合間の複数の行でiの筆記体のマークがつきました
引き続きがんばってみます
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。