見出し画像

BitFlyer用bot おとれさんmk.II&mk.III&mk.IV

売り切れ

 
 
おとれさんmkIIは、稼働させて放置しておけば勝手に働いて億ってくれることを目標に開発したプログラムです。多数のテクニカル指標によるシグナルを遺伝的アルゴリズムで最適化しながら選択し稼働させるコンセプトのbotです。

新バージョン公開しました。新バージョンはこちら!


※11/2 SFDの金額計算部にバグがあったので修正し、atr0417.pyとして公開しました。
※8/5 quit()でプロセス終了しない環境があるため、sys.exit()に変更し、atr0416.pyとして公開しました。
※6/26 異常系処理の一部を修正し、atr0415.pyとしておいてあります。
※6/23 勝率の計算ミスがあったので修正しました。Google Driveにatr0414.pyとして置いてあります。
※6/22 cryptwatchからデータ取得時にエラーが出た場合に、異常終了しなよう修正しました。Google Drive ATR04.1のatr0413.pyが修正版となります。
※6/20 バックテストの精度向上版を4.12として公開しました。Google Drive、ATR04.1内のatr0412.pyが最新版となります。
※6/13 バージョンアップ版mk.IV.1を公開します。
- LINE/Dicord通知のシンプル通知モードを追加しました
- 高負荷時の誤注文対策を強化しました。
- OCO注文のSTOPに大きな値が指定されてしまうバグを修正しました
※6/12 バージョンアップ版mk.IVを公開します。
①利確・ロスカット注文をOCOで同時注文できるオプションを追加しました。②イン判定・手仕舞い判定に使用するシグナル・インジケータを選択可能とし、遺伝的アルゴリズムで何を使うか考えさせることができるようにしました。③インジケータ毎に何分足を使うか変更可能としました。④Discord通知でグラフ画像も通知可能としました。⑤最適化に使う指標を追加しました(1-PF)*エントリ回数で判定し、この値が大きいほど良いと判定させることができます。
※5/30 mk.IIIにDiscord通知機能を追加しました。
※5/27 mk.IIIに機能追加を行い、mk.III.3として公開しました。
※5/23 mk.IIIで5/22の修正と類似の問題の修正を行いました。
※5/22 mk.IIIのバグ修正をおこないました。
※5/20 mk.IIIのバグと思われる事象の修正と、後でexcel等で解析用に吐き出しているcsvファイルの出力項目の追加を行いました。
※5/17 mk.III.2として、バージョンアップ版を公開します。III.2の新機能は
①騰落率によるトレンド判定に変更(SMAより早くトレンド変化に反応)しました。
②一瞬の突風でロスカットしないよう、waitができるようになった。
③遺伝的アルゴリズムの最適化指標として、PF ×エントリ数でも評価できるようにした、の3点です。
※5/13 mk.IIIになんだか最近はやりのRCIも搭載しました。RCIを含めると6種のテクニカル指標による売買シグナルを用いていますが、iniファイルで使わないシグナルの指定ができるようにしました。トレンドに合わない場合にアルゴリズムの切り離しが簡単にできるようにしました。小さすぎる利幅で利益確定しないよう変更しました。
※5/12 mk.IIIのバグ修正を行いました。
※5/11 テクニカル指標をもう一つ追加したmk.IIIもβ版として公開します。追加したのはEhlerさんのSuperSmootherという特殊なフィルタをストキャスティクスに適用したものです。さらに遺伝的アルゴリズムにてパラメータのオプティマイザをするスクリプトもつけちゃいます。そして、さらに、おまけ、TVの通販番組みたいになってきましたが、BF先物も設定2個で切り替えできるようにしました(Thanx @kouta)。mk.IIIは一番末尾に掲載しておきます。


このbot( mk .II) ですが、ドテン売買用に考案されたテクニカル指標を主に使います。もともとのドテンとは途転と書き、保有するポジションをひっくり返す(逆転させる)ことで、上昇・下降トレンドの変換をわかりやすく示すパラボリックSARがよく用いられます。
このbotはドテンのタイミングを上記のパラボリックSARを用いて自動トレードします。でも、トレンドに逆らってすぐにポジションを入れ替えるドテンは危険であるため、本当の意味でのドテン買い・売りはしません。
(あくまで元祖ドテン売り買い用指標を使い、トレンドに乗っかったドテンタイミングでの売買だけを行います。)

さらに、mk.IIIでは、上記のパラボリックSARに加え、何やら流行のRCIをはじめ、MACD+DMI+ ADX+ RSI+移動平均フィボナッチとテクニカル指標てんこ盛りで判断します。これだけ多くの指標の最適化は至難の業ですが、遺伝アルゴリズムによるオプティマイザにより、自動で探索をかけることができます。また、先物対応、SFDの状態による処理変更もついています。使い方や最適化の方法もDiscordで情報共有しながら進めています。

さて、テクニカル指標てんこ盛りの、このbot、価格も強気に!と行きたいところですが、しばらくお安く提供したいと思います。

6/17 @redoさんが初期導入方法をとてもわかりやすくまとめてくれました。こちらも参照ください


ただし、著者はこのプログラムで使用により万が一発生してしまった損害に対し、一切の責任を負うことはできません。
十分にバックテストを行い、自己責任で使用願います。

目次

1. どこで何を取引するか
2. Bot動作環境
3. 設定ファイル
4. スクリプト本体
5. インストール方法
6. ツールの使い方
7. BitFlyer設定
8. Line Notify設定
9. チューニング方法について

10.LINE通知・ログ出力の意味について

11. お問合せ先

12. mk.III

1. どこで何を取引するか

取引所は手数料も無料であり、売りから入ることもできる取引所BitFlyerのFXをターゲットとしています。

bitflyer(以下BF)のAPIを使うのでアカウントがない方は新規登録して本人確認(数日かかります)を済ませてください。
登録は以下からできます

https://bitflyer.jp?bf=nkldbek5

なおターゲットのコインは取引量を見込める元祖仮想通貨のBitCoin、その中でFXをターゲットとします。
ただし、細かく言うと、BitflyerのFXは正確にはBitCoinを売買するわけではなく、BitCoinの相場に連動した
BitCoinに類するものの取引となります。

なお、Bitflyerを使ったことがない場合には、本Botを稼働させる前に手動での取引も経験することをお勧めします。

2. Bot動作環境

Python 3で実装します。Ubuntu, Windows, MacOS各種環境で動きますが、自分はawsのEC2でubuntuの環境を作り、Windows + Cygwinでテストしてawsにて本番稼働させています。

なお、requestsとnumpyライブラリが必要となりますので、モジュールのインストールが必要です。

3. 設定ファイル

以下の内容をatr02.iniとして保存します。なお、api_key, api_secret, line_notify_tokenはインストール方法に従って適切に設定を行う必要があります。なおこれらの値はシングルクォートやダブルクォートでくくったりする必要はありません。key等を発行した画面にでているままを記載ください。

# configuration file
[apikey]
# set bitflyer api key and api secret
api_key = APIキーの値を入れてください
api_secret = APIシークレットの値を入れてください
# line notify 1: ON/0: OFF
line_notify_flag=1
# LINE notify token SEE: https://qiita.com/iitenkida7/items/576a8226ba6584864d95
line_notify_token=LINEトークンの値を入れてください。
[settings]
# Target market name
product_code = FX_BTC_JPY
# order expire minute (注文の有効期間を分で指定します。)
order_expire_minute=20
# order volume (1注文で何BTCを指定します。0.01 -> 0.01 BTCを毎回注文します)
order_volume=0.01
# Losscut percent (ポジション価格から指定の現在価格のパーセント分の乖離が発生し損失が出たたらロスカットします)
loss_cut=0.009
# profit percent  (ポジション価格から指定の現在価格のパーセント分の利益が出たら利確します)
profit_target=0.05
# force close position when torrend changed: 1 withstand: 0
# 1: 損失が出ていてもトレンドが変わったらポジションを解消する。0: トレンドが変わっても解消しない
force_close=0
# CandleStick Interval(Second: 60 <- 1 minutes, 300 <- 5 minutes, 180 <- 3minutes)
# 何分足のろうそく足を使うか指定する。1, 3, 5分足から選択し、秒で指定する
#CandleStick_int=300
CandleStick_int=60
##################################################################################
# MACD計算パラメータ MACD参考URL: https://kabu.com/investment/guide/technical/13.html
# MACD_short: 短期EMA期間, MACD_long: 長期EMA期間, MACD_singnal: MACDシグナル期間
# ただし期間=ローソク足の本数となり、CandleStick_intの指定により時間は変わる。
# MACD_shortに10を指定, 5分足だとすると10x5=50分で計算する。
MACD_short=10
MACD_long=26
MACD_signal=9
# Wait trade after MACD golden/dead cross
# MACDとMACD signalがゴールデンクロス・デッドクロスしてからWAITを入れる場合に1以上を指定する。
MACD_waitcount=1
##################################################################################
# DMI計算パラメータ DMI参考URL: https://kabu.com/investment/guide/technical/19.html
# DMI計算期間 (default: 14)
DMI_interval=14
# DMI ADX threashold value
# ADXで強いトレンドとみなす敷居値。この値を越えると強いトレンドとみなす
ADX_th=75
##################################################################################
# RSI計算パラメータ RSI参考URL: https://kabu.com/investment/guide/technical/08.html
# RSI計算期間 (default: 14)
RSI_interval=14
# RSI敷居値(売られ過ぎ、買われ過ぎと判断する値)
RSI_th=30
##################################################################################
# 移動平均計算用(始値、終値を指定期間分のデータを保持し、移動平均を計算する)
# フィボナッチ数列から選択
# 1	2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
datasize=610
##################################################################################
# パラボリック計算パラメータ 参考URL: https://kabu.com/investment/guide/technical/21.html
# keep data size for Parabolic SAR
# 高値、安値記録保持期間
shortsize=55
# AF初期値
AF=0.02
# AF加算値
AF_step=0.02
# AF最大値
AF_max=0.2
# Paraboric SARしかけタイミング(Wait回数xCandleStick_int秒待ってからトレードする)
p_wait=0
#############################################################################
# SFDが発生していた時のトレード方針
# 0: SFD発生時にはトレードを中止する。1: SFDは無視して移動平均の流れを優先しトレードする。
# 2: SFDの乖離解消方向を移動平均より優先する
SFD_trade_mode=1
#バックテストモード
# 1: backtest only modeバックテストを行って終了する, 0: トレードにうつる
backtestmode=0

ここから先は

54,036字

¥ 5,000

この記事が気に入ったらチップで応援してみませんか?