イーサリアム積立を完全自動化して賢く運用【コピペでチャレンジ】

プログラミング 仮想通貨

#本記事はプロモーションを含みます。

あなた

あなた
「イーサリアム(ETH)の積立投資に興味があるけど、暗号資産取引所で提供されてる積立購入サービスを使うと、スプレッドが大きくて損するから嫌だな。毎月決まったタイミングで現物取引するのも面倒だし、何かいい方法はないかな。」

何も疑わずに既存の仮想通貨の積立サービスを使うと、スプレッドが大きいので微妙に損しちゃいますよね。

せっかくイーサリアムの積立投資をするのなら、プログラムで完全自動化して賢く運用してみませんか?

誰でもマネできるように、実際に作って動かしてみたプログラムも全部公開しておきます。

ご注意
本記事を参考に仮想通貨のプログラムを動かす場合は、全て自己責任でお願いいたします。免責事項に記載の通り、本サイトの情報を参考にして発生したいかなる損害も責任を負いません。

この記事で分かること

  • イーサリアムを積立購入する時の注意点
  • イーサリアムを完全自動で積立購入できるプログラムの使い方

イーサリアムを積立購入する方法は3つ

イーサリアムの積立購入

イーサリアムを積立購入する方法は、3つあります。

  1. 暗号資産取引所の積立サービスを使う
  2. 定期的に自分で購入する
  3. プログラムで完全自動化して積立購入する

オススメは、3つ目のプログラムによる完全自動化。少し難しい壁を乗り越えてでも、やる価値があるのは間違いありません。

一つずつ掘り下げて、メリットとデメリットを比較しながら理由を解説します。

取引所の積立サービスを使う

イーサリアムの積立購入サービス

最初の方法は、取引所で提供されている積立サービスを使う方法。

コインチェックGMOコインなどで仮想通貨を積立購入するサービスがあります。

これらのサービスを使う最大のメリットは、とにかく楽で簡単なところ。サイトの案内通りにポチポチと設定すれば、あとは放置でオッケー。

ただ、何も考えずにそのまま活用していると、スプレッドによって購入した瞬間はどうしても差額分で損してしまいます

スプレッドって何?
-> 購入価格と売却価格の差額。暗号資産(仮想通貨)を取引する際に発生する手数料のひとつ。
引用:GMOコイン

現物取引(投資家同士による板取引)と違って確実に購入できるメリットはありますが、大きなスプレッドは無視できない金額です。

スプレッドは具体的にどのくらいあるのか?

スプレッドがどれほど大きいのか、ビットコインの価格を例に確認しておきます。

2021年8月14日19時40分のタイミングで、コインチェックのビットコイン販売所価格と現物取引の価格のスクショを取りました。

まず、こちらがコインチェックの販売所のビットコイン購入価格。5,278,600円ですね。

コインチェックの販売所でのビットコイン購入価格

続いて、こちらが同じタイミングの現物取引価格。5,111,673円です。(”売”と書かれた一番下のところ)

コインチェックの現物取引でのビットコイン購入価格

その差額は、なんと166,927円(5,278,600円 – 5,111,673円)。普通に積み立てるといきなりこの価格分の差損がでます。

この価格差を無視してでも、積立サービスで買い続けますか?

  • 設定が楽だからOK!
  • 将来的に値段が上がってカバーできるからOK!

こういう理由を持っているなら問題ないですが、購入する度にスプレッド分の差額は損するという意識は忘れないでおきたい点ですね。

ちなみに、同じタイミングのビットコイン売却価格は、以下の通り4,959,500円。

コインチェックの現物取引でのビットコイン売却価格

売ったとしても、本来なら5,110,782円(現物取引価格の”買”の一番上)で売れるはずが、4,959,500円で売っちゃうことになります。もったいないですね。

スプレッドは暗号資産取引所によっても変わってくるので、要注意です。

定期的に自分で購入する

自分でイーサリアムを購入

続いての方法は、定期的に自分で購入する方法です。一番手っ取り早くて簡単。

もちろん、購入する時はスプレッドのある販売所ではなく、現物取引にするのを忘れずに。

ただ、メリットは簡単っていうところだけで、こんなデメリットがあることに気づいていますか?

  • そもそも面倒になってくる
  • いざ買おうとしても人間の欲がでる

まず、定期的に自分で買わなきゃいけないっていう作業がそもそも面倒です。

1ヶ月ごとに買うにしても、忘れそうで面倒。2週間に1度でも、やっぱり面倒。数日ごとなら、かなり面倒。

3-4年かけて投資していくのが積立購入ですが、これを何年も続けていくのってキツいです。

そして、さらに大きなデメリットが、いざ自分で買おうとしたら欲が出てしまうこと。

あなた

あなた
「このチャートならもうちょっと待つと安く買えるかな?明日にしようかな?」

いざ現物取引で買おうとしてチャートを見たら、どうしてもこんな欲が出ちゃいます。

こういう欲望を排除して、そもそも買っていることさえ意識せずに、淡々と購入していけることが積立投資の魅力。

例え自分で購入する作業が面倒じゃなかったとしても、人間の欲を無視して淡々と購入するには鋼の意思が必要です。

プログラムで完全自動で積み立て購入する

イーサリアムの積立購入を自動化

最後の方法が、プログラムを使って完全自動で積立購入する方法です。メリットは3つ。

  1. 現物取引なので、スプレッドゼロ
  2. 完全自動なので、面倒がゼロ
  3. 完全自動なので、淡々と積立できる

積立購入サービスや、定期的に自分で購入する方法のデメリットを完全排除できます。

唯一のデメリットは、導入するのが少し難しいところ。でも、そのデメリットを排除するためにこの記事を書いています。

積立投資は放置が基本。無駄な欲を捨てるために、完全自動でイーサリアムを積立購入してみませんか?

イーサリアムをプログラムで積立購入する

プログラミングを使ってイーサリアムを積立購入

それでは、早速イーサリアムの積立購入プログラムを作っていきます。

作って動かす流れはこんな感じです。

  1. Pythonプログラムを動かす環境を作る
  2. ビットバンクのAPIキーを発行する
  3. 積立購入するPythonプログラムをコピペで作る
  4. プログラムを動かす

一つずつ、やってみましょう。

作り出す前に

今回紹介する方法は、ビットバンクのAPIを使っています。

APIって何?
-> 口座にアクセスするためのプログラミング用の窓口のようなもの。

プログラムを使うには、先にビットバンクの口座を開設しておいてください。

先に申し込んでおけば、後から紹介するプログラムを完成させたらすぐに動かせます。手続きにならって進めればいいのですぐ終わりますよ。

ビットバンクの口座を開設する

Pythonを動かす環境を作る

続いて、Pythonを動かす環境を作ります。

今回紹介するイーサリアムの積立購入プログラムは、Pythonというプログラミング言語で書いてあります。

すでにPythonが使える人は、この項目を無視して次に進んじゃってください。

あなた

あなた
「Pythonのプログラムなんて動かしたことないんだけど!?」

そんなあなたには、初心者でも絶対に分かるPython入門記事を参考にしてみてください。プログラミングって、思った以上に簡単なんですよ。

ビットバンクのAPIキーを発行する

ビットバンクの口座開設が終わったら、APIキーを発行します。

まだ口座開設が終わってない場合は、後からやってもOKです。

まず、ビットバンクの右上のメニューから、APIを選択。

ビットバンクのメニュー

そのメニューの中から、APIキーの発行ボタンを押します。

ビットバンクのAPIキー発行ボタン

“取引”と書かれた部分を選択して、ラベルに “積立購入” とか分かりやすい名前を入れて作成します。

ビットバンクのAPIキー発行ダイアログ

最後に、表示されたAPIキーとシークレットキーを保存しておけば終了。超大事なので人に教えないように要注意です。

ビットバンクのAPIキーを確認する

積立購入するPythonプログラムをコピペで作る

続いて、プログラム本体をコピペで作ります。作るファイルは2つ。

  • bitbank.py:ビットバンクのAPIを操作する
  • main.py:APIを使って積立購入する本体

まず、こちらがbitbank.py。

import requests
import time
import hmac
import hashlib
import json

class Bitbank(object):
  def __init__(self, access_key, secret_key):
    self.__access_key = access_key
    self.__secret_key = secret_key
    self.__rest_api = 'https://api.bitbank.cc/v1'
    self.__public_api = 'https://public.bitbank.cc'

  def _signature(self, nonce, message):
    signature = hmac.new(self.__secret_key.encode(),
                        message.encode(),
                        hashlib.sha256).hexdigest()

    headers = {
      "ACCESS-KEY": self.__access_key,
      "ACCESS-NONCE": nonce,
      "ACCESS-SIGNATURE": signature,
      "Content-Type": 'application/json'
    }

    return headers

  def _request_rest_api(self, endpoint, params=None, method='GET'):
    time.sleep(1)

    nonce = str(int(time.time()))
    body = json.dumps(params) if params else ''

    try:
      if method == 'GET':
        headers = self._signature(nonce, nonce + '/v1' + endpoint + body)
        r = requests.get(self.__rest_api + endpoint, headers=headers, params=params)
      else:
        headers = self._signature(nonce, nonce + body)
        r = requests.post(self.__rest_api + endpoint, headers=headers, data=body)

    except Exception as e:
      print(e)
      raise

    return r.json()

  def _request_public_api(self, endpoint):
    time.sleep(1)

    url = self.__public_api + endpoint
    r = requests.get(url)
    return r.json()

  # Tickerの取得
  def ticker(self, pair):
    endpoint = '/' + pair + '/ticker'
    return self._request_public_api(endpoint=endpoint)

  # 口座情報の取得
  def balance(self):
    endpoint = '/user/assets'
    return self._request_rest_api(endpoint=endpoint)

  # 最新価格の取得
  def last(self, pair):
    return float(self.ticker(pair)['data']['last'])

  # 自分の持ってるポジション情報の取得
  @property
  def position(self):
    balance = self.balance()['data']['assets']  # list

    dict = {}
    for index, item in enumerate(balance, 0):   # indexとitemを同時取得するenumerateを、0スタート
      k = balance[index]['asset']
      v = float(balance[index]['onhand_amount'])
      if v > 0:
        dict[k] = v
    return dict

  # 新規オーダー
  def order(self, params):
    endpoint = '/user/spot/order'
    return self._request_rest_api(endpoint=endpoint, params=params, method='POST')

続いて、こちらがmain.pyです。

import time
import requests

from bitbank import Bitbank

ACCESS_KEY = 'XXXXXXXXXX'	# ここにAPIキーを入れる
SECRET_KEY = 'XXXXXXXXXX'	# ここにシークレットキーを入れる

bitbank = Bitbank(access_key=ACCESS_KEY, secret_key=SECRET_KEY)

ticker = 'eth'
pair = ticker + '_jpy'
interval = 60*60*24*15      # sec * min * hour * day
periodic_amount = 10000     # 積み立てる金額(円)

while True:
  time.sleep(interval)
  position = bitbank.position

  if not position.get('jpy'):
    raise

  price = bitbank.last(pair)
  amount = round(periodic_amount / price, 4)

  params = {
    'pair': pair,
    'amount': amount,
    'side': 'buy',
    'type': 'market'
  }
  r = bitbank.order(params)
  message = 'buy ' + str(amount) + ticker + ' @' + str(price)
  print(message)

この2つのファイルを、それぞれコピペで作成してください。

ファイルの作り方は、初心者の方でもPython入門記事の通りにやれば簡単です。

コピペするだけじゃなくてビットバンクAPIの仕組みや使い方をちゃんと理解したい!っていう方は、こちらの解説記事をどうぞ。

なお、ここで紹介したプログラムは、なるべくシンプルにするためにAPIキーやシークレットキーをそのまま入力しています。セキュリティには十分ご注意ください。

プログラムをカスタマイズする

いくつか、カスタマイズするポイントも解説です。

ACCESS_KEY = 'XXXXXXXXXX'	# ここにAPIキーを入れる
SECRET_KEY = 'XXXXXXXXXX'	# ここにシークレットキーを入れる

main.py の上の方にあるこの箇所へ、ビットバンクで発行したAPIキーとシークレットキーを入れます。ここだけは必ず修正が必要です。

ticker = 'eth'

ここには仮想通貨の銘柄を入れます。イーサリアムの積立購入なので eth にしてありますが、btc や xrp に変えると、ビットコインやリップルの積立購入になります。

interval = 60*60*24*15      # sec * min * hour * day

積立購入する間隔を設定します。この例では15日間隔ですが、1ヶ月ごとの積立購入にするなら、15 を 30 に変更することで対応できます。

periodic_amount = 10000     # 積み立てる金額(円)

こちらは、積立購入の金額。この例であれば、一回の積立で10,000円ずつ購入するようになっています。

なお、ビットバンクのサイトに記載されていますが、最小発注単位があります。100円とか少なすぎる金額にすると買えないことがあるので、注意してくださいね。

プログラムを動かし続ける

最後に、作ったプログラムを動かします。main.py と bitbank.py を同じフォルダに入れて、あとは以下のコマンドを打てば終わり。

初心者の方でも、Python入門記事の通りにやれば大丈夫。

python3 main.py
あなた

あなた
「ちょっと待って、パソコンの電源を切っちゃうとプログラムは止まるんじゃない?」

その通りです。動かし続ける一番簡単な方法は、パソコンつけっぱなし。でも、それだと精神的に嫌ですよね。

解決策としては、VPS(レンタルサーバー)で動かしっぱなしにするのがオススメ。自動売買botをVPSで動かす方法をまとめた記事で、その具体的な手順を公開しています。

サーバーが初めての人にも簡単に使える、Windows Serverも紹介しています。

イーサリアムの積立購入は自己投資にもなる

プログラミングで自己投資にもなる

イーサリアムの積立購入をプログラムで完全自動化する方法を解説しました。

本来の目的は、イーサリアムを積立購入して数年後の大きなリターンを狙うこと。

でも、プログラムを活用して完全自動化すれば、多くのデメリットを排除しつつ、プログラミングの基礎知識も手に入っちゃいます。

将来のためのイーサリアム積立投資、これをきっかけにプログラミングに触れる機会としても活用して、将来の自己投資にも繋げてみてくださいね。