TradeWave使ってみた(PythonでBitCoin システムトレード)

# なぁにこれ

https://tradewave.net

BitCoinのシステムトレードを自動化してくれるWebサービス。

![スクリーンショット 2015-06-13 16.06.32.png](https://qiita-image-store.s3.amazonaws.com/0/71365/ebf803d1-5c10-e7f1-82af-53bf95cec008.png)


ぶっちゃけたところ、high & low の条件でのトレードくらいなら iPhoneアプリでもたくさんある。

これの珍しいところは、トレード用のAPIを組み込んだPython IDEがついてくること。
グラフの計算や表示、売買などが非常に楽にできる。
APIを使えばもちろん同じことが個人環境でもできるけど、そういう手間がない分敷居が低い。

**つまり、興味本位でなんちゃってシステムトレードが体験できる！**

![スクリーンショット 2015-06-13 16.16.48.png](https://qiita-image-store.s3.amazonaws.com/0/71365/02e1a4ef-aee8-79c9-d092-541a3fdcb391.png)


# やってみよう

### 立ち上げてみよう

- とりあえずアカウントを作ってくる
- [Create a strategy]

![スクリーンショット 2015-06-13 16.06.32.png](https://qiita-image-store.s3.amazonaws.com/0/71365/608136aa-e87d-7615-8f5f-572f6679b374.png)


- [Python strategy]

![スクリーンショット 2015-06-13 16.12.42.png](https://qiita-image-store.s3.amazonaws.com/0/71365/e3fca296-80e7-5250-fa8a-fe8bb4d9b2d1.png)

- 適当にストラテジー名（要は.pyファイル名）を決める

![スクリーンショット 2015-06-13 16.16.25.png](https://qiita-image-store.s3.amazonaws.com/0/71365/6058a4b6-a6fb-af30-c657-020a51124364.png)

- 到着！

![スクリーンショット 2015-06-13 16.16.48.png](https://qiita-image-store.s3.amazonaws.com/0/71365/bb3050fd-2aff-f085-5b93-a7da9b70542d.png)

### グラフを出して計算してみよう

- (リファレンス)[https://tradewave.net/help/api/]を開いてみよう

![スクリーンショット 2015-06-13 16.29.26.png](https://qiita-image-store.s3.amazonaws.com/0/71365/bf546f1d-47d8-eb99-1381-7c12838c55c8.png)

- 長々書いてあるけど、面倒なのでとりあえず　[Code structure] > [An example strategy] をコピーして、IDEにぺたり


```py:

# A basic Moving Average Crossover strategy

def initialize():
    storage.invested = False

def tick():
    short_term = data.btc_usd.ma(30)
    long_term = data.btc_usd.ma(100)

    if (short_term > long_term) and not storage.invested:
        log('Buying BTC')
        buy(pairs.btc_usd) # market order
        storage.invested = True

    elif (short_term < long_term) and storage.invested:
        log('Selling all BTC')
        sell(pairs.btc_usd)
        storage.invested = False

def stop():
    if storage.invested:
        log('Clearing our position by selling all BTC holdings')
        sell(pairs.btc_usd)

```

- 右側の [Save] > [BackTest] を押してやると、過去のBitCoinの取引履歴でサンプルが取引した場合を表示してくれます。

![スクリーンショット 2015-06-13 16.34.04.png](https://qiita-image-store.s3.amazonaws.com/0/71365/fff79d7a-9b3b-0bbe-5da7-d749e90c92d5.png)

なお、サンプルだと元金が10,000ドルで、1日で217ドル損した模様。

サンプルだし、仕方ないね…

### APIについてもうちょっと

サンプルでは、普通の BTC/USD 為替相場だけ見てますが、システムトレード用のAPIだけあってやろうと思えばいろいろできます。

- MA (単純移動平均線) と EMA（指数平滑移動平均線）

```py
def tick():
    x = data.btc_usd.ma(30)
    y = data.btc_usd.ema(30)
    plot('MA', x)
    plot('EMA', y)
```

![スクリーンショット 2015-06-13 16.52.05.png](https://qiita-image-store.s3.amazonaws.com/0/71365/3b22a5d2-700d-2ed2-3c2f-b3aefe4e0fe9.png)

- RSI（Relative　Strength　index）

```py
def tick():
    x = data.btc_usd.rsi(30)
    plot('RSI', x, secondary=True)
```

![スクリーンショット 2015-06-13 16.59.11.png](https://qiita-image-store.s3.amazonaws.com/0/71365/b938064b-38da-bf9e-6b85-66995e885c87.png)

- ほかにも、ろうそく足（Candle data）や、いろいろな計算が数行で考えなしに使えます。

  - VWAP
  - MACD
  - AROON 
  - SAR
  - StochRSI
  - STOCH
  - MFI
  - ADX
  - ATR
  - MOM
  - TSF
  - STD (Standard Deviation)
  - など

###

# 難点を言えば…
- 計算がちょっと遅い
- IEDとして使いやすいかといえばそうでもない
    - ちゃんとしたもの書くなら、Sublime text で書いてコピペするとか
- ここで組んだシステムで実際に取引するには、利用費が必要

# 結局は

無料で使えるのでとっつきやすいし、Python初心者の私でも悩まずにわかるので、考えはあるけどAPIまわりの技術障壁に阻まれてた人におすすめ！

これでやってみていけそう、面白いと思ったら、自分でAPI入れてサーバ立ててやってみてもいいかと。