見出し画像

Cloud9/VPSで動作するロジック切替・高頻度取引・ポジション自炊・バックテスト可能な複数取引所対応の BOT フレームワーク NeoDuelBot(ロジック多数付属)

売り切れ

■ 後継フレームワークのお知らせ

画像62

後継フレームワークの NDB3 の販売を開始しました。こちらの note を参照ください。


■ 重要なお知らせ

画像62

2020年5月1日より法改正により暗号資産(旧名称:仮想通貨)も金融商品取引法の適用対象となることを受け、本ソフトウェアは改めて売り切り販売と宣言させていただくことにしました。投資助言業に類する行為(継続的な更新、ロジック提供、運用サポート等)は、今までと変わらず本書の対価には含まれません。なお本体そのものは単体では自動売買できない(ロジックと組み合わせて EA となる)ため、バグ修正などは可能な限り行っていく予定です。

■ BOT フレームワーク NeoDuelBot について

画像6

AWS Cloud9 および各社 VPS 上で動作する複数取引所対応の BTC 自動取引システム(以下 BOT と呼びます)のフレームワークです。基本コンセプトは BOTTER(BOTを使って取引をする人を意味します) による BOTTER のための自由度の高いトレードシステムとしてご活用いただくことを目指しています。本書は NeoDuelBot の利用権利が付属する有料記事となります。

NeoDuelBot を使うことで BOT 開発の面倒な部分(エラー処理や取引所特有のクセなど)を気にすること無く、最も重要な取引ロジックに集中して開発を行うことができるとともに、取引所による差分をフレームワークができる限り吸収してくれるため、高速に、安定した BOT を開発・運用することが可能となります。

サンプルロジックは20種類以上の指標型ロジック、2種類の mmbot ロジックが付属します。サンプルロジックは、ご自身でロジックを開発するにあたり必要になると想定される指標を用いた学習用のサンプルコードです。古典的なチャネルブレイク戦略、SMA指標戦略、一昔前に流行った VIX指標先着、などを参考に、ご自身のアイデアを比較的容易に NeoDuelBot へ落とし組むことができるよう様々な指標ライブラリなども同梱しております。

是非ご自身の BOT ライフを楽するツールとしてご活用いただけると幸いです。

■ NeoDuelBotの特徴

画像8

Neo DuelBot は非常に多機能かつ大規模なプログラムです。以下に主な特徴を記載します。

● 取引所対応および対応通貨
・本書では BitMEX, Bybit, Liquid, BTCMEX 取引所に対応
 ※対応取引所が追加された場合は別途個別記事にて販売します
 ※現在 GMO コイン拡張機能が別売りで販売されています
・ベースの法定通貨は JPY, USD, BTC のみに対応
・取引は基本的に BTC-FX が対象
・アルトコイン FX はインバース ETH/USD, ETH/JPY に対応

● 動作環境
・動作環境はメモリ 1GB 以上の AWS インスタンスおよび VPS
 ※AWS Cloud9 small インスタンスが推奨環境(詳細は後述)
・サポート外ですが Win / Mac / 各種Linux でも動作可能

● BOT 機能&特徴
・取引所の API を意識すること無くロジックが開発可能
・各種制限(API回数やエラー等)の面倒を NeoDuelBot が吸収
・ポジション自炊機能により 1 口座複数ロジック同時稼働可能
・ポジションズレ補正機能
・ローソク足(バーの値)は 1 分〜 1 日までの時間軸に対応
・秒足を使った高速スキャロジックに対応
・約定履歴からのイベント駆動型 HFT ロジックに対応
・マルチタイムフレーム(複数時間軸)を利用したロジックに対応
・各種コンフィグによる基本パラメータベースでの動作カスタマイズ
・ロジック稼働中に各種パラメータの変更を即時反映させ挙動変更が可能
・状況分析しやすい損益状況を定期的に LINE や Discord へ通知可能
・バックテストプログラムおよびデータ収集プログラムが付属
・遺伝アルゴリズムで最適パラメータ探索バックテスターが付属

● 付属ロジック
・執筆現時点で20種類以上のロジックのサンプルが付属(詳細は後述)

● 拡張機能(別途有償にて販売)
各種取引所に対応するのエアトレ(フォワードテスト)および HFT バックテスト機能を追加する検証パックを有料記事で販売しております。約定履歴をリアルタイムに判定して高精度に実弾結果をシミュレートします。現物を消費すること無くロジック検証が可能となります(詳細はこちら)。

● Relay Server 機能とその用途について
本機能を使いこなすと、他のシステムでは実現できない高度なロジックを開発することができます。またこの仕組は別売りのエアトレを動作させるのに必須の機能になっています。Relay 機能の役割は以下の 3 点となります。

1. ポジション管理機能
1 口座複数ロジックで動作させているロジックの自炊ポジションを収集して API のポジション数と定期的に比較してポジションズレを補正します。

2. ロジック間コミュニケション機能
NeoDuelBot で起動しているロジック間でメッセージのやり取り(コミュニケーション)する機能の実現。複数のロジックを協調して挙動を変化させるときに活用します。

3. ローソク足を配信機能
別売りの "NeoDuelBot 検証拡張パック" のエアトレ機能で本機能を用います。通信を集約し、同時動作可能なロジック数を飛躍的に増加させつつ、動作の安定を図ります。

ポジション管理は以下のように表示されます。

スクリーンショット 2020-06-13 22.38.18

■ 必要な知識とターゲットユーザ層

画像9

● ターゲット層
NeoDuelBot は売り切りのソフトウェアであり
ご自身のシストレ開発を快適にするツールです。EA ではありません。また付属するロジックはプログラミング参考書であり、利益を保証するロジックではございません。もし購入するだけで丸儲けを期待されている方は位置付けが異なりますので、ご購入なされないでください。

● 必要な知識と意気込みについて
各取引所ごとに傾向も違いますし、その対策も異なります。オールラウンドに攻略するのは困難を極めますが、そのリターンも大きいことでしょう。そのような状況で、NeoDuelBot をご活用いただくに必要な条件をまとめてみました。上に書いてある条件ほど重要です。

・日々の損益と向き合い、ログ分析&ロジック改善の PDCA を回す持続力
・決して諦めない不屈の精神(BOT で儲けるのは楽ではありません)
・ロジックのアイデアを持っている(指標の知識、市場の歪みの知見など)
・BOT を稼働させる Cloud9 の最低限の知識(Linuxコマンドなど)
・ロジック開発するための Python の最低限の知識

● プログラムの教材としての観点について
NeoDuelBot 自体は Python を用いて記述されています。拙い技術力ではありますが、当システムはオブジェクト指向で設計されており、細かい機能レベルでクラス化されてプログラムが記述されております。

そのような意味でプログラミングの教材、もしくはご自身の BOT に必要なパーツの取得という意味で参考になる方がいらっしゃるかと思います。また、BOT フレームワークの作り方の教材としても極一部の方には参考になるかもしれません。

また、購入者の皆様の情報交換や交流を目的として開設した Discord コミュニティーをご用意しております。ご自身の損益是非が参加できる情報交換コミュニティーを通じて BOT 開発の醍醐味を知ってもらい、貴方だけのロジックをぜひ開発してみてください。

■ 動作環境について

画像11

AWS Cloud9 small インスタンス以上が公式の動作推奨環境となります。アカウントの取得から環境構築については NeoDuelBot のマニュアルの手順が記載されております。

NeoDuelBot 当初設計時には初期登録時の無料枠となる t2.micro で動作するよう設計されておりましたが、その後の高機能化に伴い現状は t2.small 以上のスペックのインスタンスを想定とした設計になっています。t2.micro では CPU クレジットが不足することが想定されるため t2.small 以上のインスタンスで動作させてください。過去の経験則的に small インスタンスでは以下のような同時期同数の実績があります。

● スキャ / HFT ロジックの場合は、同時 2 ロジックが動作可能
● 通常ロジックの場合は、同時 3 ロジック程度が起動可能

なお私のおすすめは AWS の t3a.small リザーブドインスタンスです。1 年間前払いの支払い方法で約 15,000 円ほどの支払いとなりますが、mmbot を同時 3〜4 安定稼働可能です。参考までに mmbot を同時 3 機動かしている t3a.small の CPU 使用率は以下の状況です。

画像69


なお前述パートで記載したとおり、ご自身で環境構築するスキルをお持ちであれば macOS, Windows, Linux 環境でも動作させることは可能です。実際私自身は macOS 上で開発を行っており、macOS 上で行った後に ConoHa の 2GB プランの VPS 上で運用し、別途 Cloud9 で動作確認し、その後にリリースしております。

■ サポートについて

画像12

当記事の購入で得られる対価は以下の2点のみとなり、投資助言行為に相当する行為となる継続的なロジック更新、サポート、運用支援などは行えません。

①NeoDuelBot のソースコードおよびマニュアルの取得
②購入者限定の情報交換コミュニティーへの参加

なお NeoDuelBot フレームワーク本体そのものは単体では自動売買できない(ロジックと組み合わせて EA となる)商品ため、売り切りであればソフトウェア業に該当します。助言行為に該当しない範囲の行為(バグ修正等)については、お約束しない形となりますが対応を考えております。

また仮に後継ソフトウェアが販売された場合、無償アップデート権利は当該記事には付属しません。

■ NeoDuelBotの構成をご紹介

画像72

当記事は note 最高額の 5 万円と非常に高額ですが、それ以上の価値を感じていただけるよう出し惜しみ無く技術を投入したつもりです。執筆現時点で NeoDuelBot のプログラム及びドキュメント類のファイル数と容量は以下の通りです。ボリュームが多ければよいというものではありませんが、チープなものでないことは保証します。

画像60

なお執筆現時点でのプログラムおよびドキュメント類の構成は以下の通りとなっています。フレームワーク本体の全容を把握するにはプログラミングに関する平均以上のスキルを要します。ドキュメント類も合わせると全300ファイルを超える大作です。

neo_duelbot
.
├── README.md
├── backtester.py
├── collector.py
├── collector_bybit.py
├── collector_liquid.py
├── config
│   ├── config.yaml
│   ├── config_backtest.yaml
│   ├── config_backtest_liquid.yaml
│   ├── config_hft.yaml
│   ├── config_hft_backtest.yaml
│   ├── config_hft_backtest_liquid.yaml
│   ├── config_liquid.yaml
│   ├── config_test.yaml
│   ├── relay_server_bitmex.yaml
│   ├── relay_server_bybit.yaml
│   └── relay_server_liquid.yaml
├── data
├── documents
│   ├── 01_cloud9.md
│   ├── 02_install.md
│   ├── 03_indicator.md
│   ├── 04_api.md
│   ├── 05_develop.md
│   ├── 06_scalping_mode.md
│   ├── 07_hft_mode.md
│   ├── 08_relayserver.md
│   ├── 09_opt_backtester.md
│   ├── README.md
│   ├── img
│   │   ├── dual-logo2-1024x512.jpg
・・・中略・・・
│   │   └── relayserver_001.png
│   ├── make_piano_logic
│   │   ├── 01_pine.md
│   │   ├── 02_answer_example.md
│   │   ├── 03_make_logic_1.md
│   │   └── img
│   │       ├── img001.png
・・・中略・・・│   │       ├── img010.png
│   │       └── saron-pine.png
│   └── terms.md
├── duelbot.py
├── extlibs
│   └── websocket
│       └── __init__.py
├── install.sh
├── libs
│   ├── __init__.py
│   ├── base_api.py
│   ├── base_broker.py
│   ├── base_strategy.py
│   ├── base_testdata.py
│   ├── base_websocket.py
│   ├── base_wsocket.py
│   ├── broker
│   │   ├── hft_broker.py
│   │   ├── normal_broker.py
│   │   └── scal_broker.py
│   ├── candle_maker.py
│   ├── ccxt
│   │   ├── __init__.py
│   │   ├── base
│   │   │   ├── __init__.py
│   │   │   ├── decimal_to_precision.py
│   │   │   ├── errors.py
│   │   │   └── exchange.py
│   │   ├── bitmex.py
│   │   ├── bybit.py
│   │   ├── liquid.py
│   │   └── static_dependencies
│   │       ├── README.md
│   │       ├── __init__.py
│   │       └── ecdsa
│   │           ├── __init__.py
│   │           ├── _version.py
│   │           ├── curves.py
│   │           ├── der.py
│   │           ├── ecdsa.py
│   │           ├── ellipticcurve.py
│   │           ├── keys.py
│   │           ├── numbertheory.py
│   │           ├── rfc6979.py
│   │           └── util.py
│   ├── config.py
│   ├── exchange
│   │   ├── __init__.py
│   │   ├── bitmex
│   │   │   ├── __init__.py
│   │   │   ├── api.py
│   │   │   ├── mock_socket.py
│   │   │   ├── testdata.py
│   │   │   └── wsocket.py
│   │   ├── bybit
│   │   │   ├── __init__.py
│   │   │   ├── api.py
│   │   │   ├── mock_socket.py
│   │   │   ├── testdata.py
│   │   │   └── wsocket.py
│   │   ├── liquid
│   │   │   ├── __init__.py
│   │   │   ├── api.py
│   │   │   ├── mock_socket.py
│   │   │   ├── testdata.py
│   │   │   └── wsocket.py
│   │   ├── relay
│   │   │   ├── __init__.py
│   │   │   ├── api.py
│   │   │   └── server_client.py
│   │   └── test
│   │       ├── __init__.py
│   │       ├── api.py
│   │       ├── backtest
│   │       │   ├── __init__.py
│   │       │   └── api.py
│   │       └── forwardtest
│   │           ├── __init__.py
│   │           └── bitmex.py
│   ├── graph.py
│   ├── inventory.py
│   ├── logger.py
│   ├── notify.py
│   ├── order_side.py
│   ├── profit.py
│   ├── setup.py
│   ├── utils
│   │   ├── __init__.py
│   │   ├── dateutils.py
│   │   └── indicator.py
│   ├── websocket_server
│   │   ├── __init__.py
│   │   └── websocket_server.py
│   └── yaml
│       ├── __init__.py
│       ├── composer.py
│       ├── constructor.py
│       ├── cyaml.py
│       ├── dumper.py
│       ├── emitter.py
│       ├── error.py
│       ├── events.py
│       ├── loader.py
│       ├── nodes.py
│       ├── parser.py
│       ├── reader.py
│       ├── representer.py
│       ├── resolver.py
│       ├── scanner.py
│       ├── serializer.py
│       └── tokens.py
├── log
│   └── relay_server
│       └── logfile_20200525.txt
├── opt_backtester.py
├── relay_server.py
├── setup_cloud9.sh
├── setup_crontab.sh
└── strategy
   ├── bitmex
   │   ├── hft
   │   │   ├── print.py
   │   │   ├── print.yaml
   │   │   ├── spread.py
   │   │   └── spread.yaml
   │   ├── sample
   │   │   ├── channel_breakout.py
   │   │   ├── channel_breakout.yaml
   │   │   ├── mfi.py
   │   │   ├── mfi.yaml
   │   │   ├── null.py
   │   │   ├── null.yaml
   │   │   ├── piano.py
   │   │   ├── piano.yaml
   │   │   ├── random.py
   │   │   ├── random.yaml
   │   │   ├── sma.py
   │   │   ├── sma.yaml
   │   │   ├── vix_rci.py
   │   │   └── vix_rci.yaml
   │   ├── sample2
   │   │   ├── crocodile.py
   │   │   ├── crocodile.yaml
   │   │   ├── delta.py
   │   │   ├── delta.yaml
   │   │   ├── frog.py
   │   │   ├── frog.yaml
   │   │   ├── heikin_kun.py
   │   │   ├── heikin_kun.yaml
   │   │   ├── new_genbu.py
   │   │   ├── new_genbu.yaml
   │   │   ├── new_seiryu.py
   │   │   ├── new_seiryu.yaml
   │   │   ├── shenlong.py
   │   │   └── shenlong.yaml
   │   ├── sample3
   │   │   ├── ma_diff_cross.py
   │   │   ├── ma_diff_cross.yaml
   │   │   ├── perfect_order.py
   │   │   ├── perfect_order.yaml
   │   │   ├── swallow.py
   │   │   ├── swallow.yaml
   │   │   ├── trend_surfing.py
   │   │   ├── trend_surfing.yaml
   │   │   ├── trend_surfing2.py
   │   │   └── trend_surfing2.yaml
   │   ├── sample4
   │   │   ├── doten.py
   │   │   ├── doten.yaml
   │   │   ├── relay1.py
   │   │   ├── relay1.yaml
   │   │   ├── relay2.py
   │   │   ├── relay2.yaml
   │   │   ├── short_hedge.py
   │   │   └── short_hedge.yaml
   │   └── scalping
   │       ├── dumper.py
   │       ├── dumper.yaml
   │       ├── ema.py
   │       ├── ema.yaml
   │       ├── null.py
   │       ├── null.yaml
   │       ├── study_mm.py
   │       └── study_mm.yaml
   ├── bybit
   │   └── scalping
   │       ├── dumper.py
   │       └── dumper.yaml
   ├── liquid
   │   ├── hft
   │   │   ├── print.py
   │   │   └── print.yaml
   │   ├── sample
   │   │   ├── channel_breakout.py
   │   │   ├── channel_breakout.yaml
   │   │   ├── null.py
   │   │   ├── null.yaml
   │   │   ├── piano2.py
   │   │   ├── piano2.yaml
   │   │   ├── random.py
   │   │   ├── random.yaml
   │   │   ├── sma.py
   │   │   └── sma.yaml
   │   ├── sample2
   │   │   ├── full_cross.py
   │   │   └── full_cross.yaml
   │   └── scalping
   │       ├── dumper.py
   │       ├── dumper.yaml
   │       ├── null.py
   │       └── null.yaml
   ├── template.py
   └── template.yaml

42 directories, 311 files

● 実際にロジックはどのようなプログラムを書くのか?

NeoDuelBot では以下のようなロジック開発テンプレートが用意されています。「# ここに処理を追加する」という付近に指標の計算や売買ロジックを追加していくことでロジックを開発していくスタイルとなり、いちから開発する場合と比較し、大幅に工数を削減することができます。

from libs.base_strategy import Strategy
from libs.order_side import OrderSide
from libs.utils.dateutils import O, H, L, C, V
from libs.utils.indicator import Indicator


class MyStrategy(Strategy):
   def make_indicator(self, src_candles):
       self._logger.debug('Execute make_indicator')

       timeframe = self._config.bot['strategy_timeframe']
       candles = self._candle_maker.get(src_candles, timeframe)[:-1]
       self._candles[timeframe] = candles

       o = Indicator.get_candle_element(candles, O)
       h = Indicator.get_candle_element(candles, H)
       l = Indicator.get_candle_element(candles, L)
       c = Indicator.get_candle_element(candles, C)
       v = Indicator.get_candle_element(candles, V)
       ohlc4 = Indicator.ohlc4(candles)
       body = Indicator.true_body(candles)

       # 高速化のための一工夫。同じ candles の場合は再計算しない
       if not self.is_need_to_calculate(candles[0], candles[-1]):
           return

       # ここに処理を追加するーーーーーーーーーー

       return False

   def exec_no_pos_logic(self, position, balance, last_order_ts, is_synchronized_ts):
       self._logger.debug('Execute exec_no_pos_logic')
       last = self.exchange.tickers[-1]['last']

       # 確定足が生成された時点以外は取引可能時間外にする処理(= TradingView と同じような取引処理になる)
       if not is_synchronized_ts:
           return False

       # ここに処理を追加するーーーーーーーーーー

       return False

   def exec_has_pos_logic(self, position, balance, last_order_ts, is_synchronized_ts):
       self._logger.debug('Execute exec_has_pos_logic')
       last = self.exchange.tickers[-1]['last']

       # ポジションがなぜか見つからないときは何もしない(Mex側でロスカなど)
       if position is None:
           return False
       psize = position['currentQty']
       price = position['avgEntryPrice']

       # 確定足が生成された時点以外は取引可能時間外にする処理(= TradingView と同じような取引処理になる)
       if not is_synchronized_ts:
           return False

       # ここに処理を追加するーーーーーーーーーー

       return False

   def exec_loss_cut_logic(self, position, balance, last_order_ts, is_synchronized_ts):
       self._logger.debug('Execute exec_loss_cut_logic')
       last = self.exchange.tickers[-1]['last']

       # ポジションがなぜか見つからないときは何もしない(Mex側でロスカなど)
       if position is None:
           return False

       # 確定足が生成された時点以外は取引可能時間外にする処理(= TradingView と同じような取引処理になる)
       if not is_synchronized_ts:
           return False

       # ここに処理を追加するーーーーーーーーーー

       return False

画像が小さくて見ずらいかと思いますが、SMA ロジックはテンプレートと比較して(左がSMAコード、右がテンプレート)、おおよそ以下の変更量でロジック完成となります。

画像61

■ 付属の学習用のサンプルロジックのご紹介

画像15

Neo DuelBot に付属するサンプルロジックをご紹介します。参考までにテスト可能なロジックにおけるバックテストの結果を掲載いたします。ここで紹介する結果は過去のある時点での統計データとなります。

付属サンプルロジックは基本的にはロジック開発当時にチューニングしたものが多いため、2018年度相場で性能が出るものが多いのですが、あえて当時のパラメータで 2019/01/01〜2019/11/04 期間のデータでバックテストを行っているため、損益マイナスのロジックも多いのも事実です。これは前述してきた PDCA が欠かせないことを知っていただくためにも、そのままパラメータをチューニングせず記載してみています。

誤解を恐れずに言えば、パラメータは過去のもので後述に記載するバックテストの結果も、ある時期についての結果でしか無く、ロジックそのものの優越を示すものではありません。パラメータをしっかり相場に合わせれば性能は変わりますし、その時の相場に合う合わないがあるのも事実です。そういった意味で、サンプルロジックはご自身オリジナルのロジックを作るためのプログラミングの材料としてお使いいただきたく思います。

なお一部のロジックについては私の公開 Discord にてエアトレを稼働させていますので御覧ください。※流石に全部を実弾で稼働させるタネ銭は持ち合わせておりません故、エアトレです。

NeoDuelBot のグラフはバックテストおよび実稼働においても非常に重要な意味を成します。どのような相場でどのようなポジションやロットを持ってしまうのかを把握し、ご自身のロジック改善の礎としてください。以下ロジック紹介においては紙面の見た目の都合上でグラフ表記しませんが、例えば MFI ロジックにおいては以下のようなバックテストグラフが出力されます。また実弾稼働時には同様のグラフが定期的に Discord などに通知されます。

● MarketPrice/ロジックPnL/APIカウントの通知グラフ

一番上に BTC マーケット価格とポジションの平均取得価格の推移が表示されます。ポジションの平均取得価格については、ポジションを保有していない期間は、マーケット価格値としてグラフをプロットしています。

二段目にはロジック単体での損益推移とポジション数推移のグラフが表示されます。

三段目には API の消費量と取引所との通信遅延(ミリ秒)の推移が表示されます。

画像26

● 収益関連のグラフ

未確定資産(unrealised asset)、Fiat 換算資産、DrawDown が描画されます。Fiat 換算ではガチホしたとき(グレーの線)との比較が把握できます。基本的に赤色は元の資産より減った部分、緑は増えた部分となります。なお本数値は API で取得した口座単位となり全ロジック合算値となっています。DrawDown は赤帯がロジック単体、グレー線が口座全体を表します。

画像24


以下、サンプルロジックのご紹介です。

● random.py
・時間足:60sec
・説明:インストール後の動作正常確認用のランダム売買ロジック
 ※本ロジックはBitMEX版、Liquid版が提供されています
・バックテスト結果:

Net profit rate             : -99.51769%
Profit factor               : 0.08033387429287923%
Gross profit                : 0.047589130000005954BTC
Gross loss                  : 0.5923918199999504BTC
Total order count           : 213783
- New  order count          : 106763
- Exit order count          : 106830
- Nanpin or Increasing count: 0
- Doten count               : 190
Total trading count         : 107020
- Win count                 : 10289
- Lose count                : 96731
- Winning percentage        : 9.61409%
Max DrawDown                : -99.59898%
OneShot Max DrawDown        : -23.95331%


● channel_breakout.py
・時間足:3600sec
・説明:チャネルブレイクアウト指標に基づきドテンする学習用ロジック
 ※本ロジックはBitMEX版、Liquid版が提供されています
・バックテスト結果:

Net profit rate             : -48.11168%
Profit factor               : 0.8117348432174045%
Gross profit                : 2.0694784999999998BTC
Gross loss                  : 2.5494513600000013BTC
Total order count           : 251
- New  order count          : 2
- Exit order count          : 1
- Nanpin or Increasing count: 0
- Doten count               : 248
Total trading count         : 249
- Win count                 : 67
- Lose count                : 182
- Winning percentage        : 26.90763%
Max DrawDown                : -57.22738%
OneShot Max DrawDown        : -9.88436%


● mfi.py

・時間足:1800sec
・説明:MFI 指標に基づき上限下限ラインでドテンする学習用ロジック
・バックテスト結果:

Net profit rate             : 66.12742%
Profit factor               : 1.8721053351576615%
Gross profit                : 1.4214635399999997BTC
Gross loss                  : 0.7592860899999997BTC
Total order count           : 73
- New  order count          : 2
- Exit order count          : 2
- Nanpin or Increasing count: 0
- Doten count               : 69
Total trading count         : 71
- Win count                 : 30
- Lose count                : 41
- Winning percentage        : 42.25352%
Max DrawDown                : -17.40855%
OneShot Max DrawDown        : -4.20210%


● sma.py

・時間足:3600sec
・説明:2 本の SMA 指標に基づきクロスでドテンする学習用ロジック
 ※本ロジックはBitMEX版、Liquid版が提供されています
・バックテスト結果:

Net profit rate             : -6.15642%
Profit factor               : 0.9548122448255552%
Gross profit                : 1.2606271299999994BTC
Gross loss                  : 1.3202879800000018BTC
Total order count           : 183
- New  order count          : 5
- Exit order count          : 5
- Nanpin or Increasing count: 0
- Doten count               : 173
Total trading count         : 178
- Win count                 : 62
- Lose count                : 116
- Winning percentage        : 34.83146%
Max DrawDown                : -26.62656%
OneShot Max DrawDown        : -6.97646%


● vix_rci.py
・時間足:3600sec
・説明:2018年に流行った ViXFix 指標に基づき売買する学習用ロジック
・バックテスト結果:

Net profit rate             : -16.29854%
Profit factor               : 0.8055929343427195%
Gross profit                : 0.5261057500000003BTC
Gross loss                  : 0.6530664899999999BTC
Total order count           : 115
- New  order count          : 46
- Exit order count          : 46
- Nanpin or Increasing count: 23
- Doten count               : 0
Total trading count         : 46
- Win count                 : 28
- Lose count                : 18
- Winning percentage        : 60.86957%
Max DrawDown                : -36.46914%
OneShot Max DrawDown        : -29.13964%


● piano.py
・時間足:1800sec
・説明:2 本の SMA/EMA 指標に基づきクロスでドテンするロジック
 ※本ロジックはBitMEX版、Liquid版が提供されています
・バックテスト結果:

Net profit rate             : 10.09466%
Profit factor               : 1.3270089988551588%
Gross profit                : 0.56705442BTC
Gross loss                  : 0.42731769000000064BTC
Total order count           : 683
- New  order count          : 313
- Exit order count          : 313
- Nanpin or Increasing count: 0
- Doten count               : 57
Total trading count         : 370
- Win count                 : 151
- Lose count                : 219
- Winning percentage        : 40.81081%
Max DrawDown                : -5.02120%
OneShot Max DrawDown        : -1.70191%


● crocodile.py
・時間足:1800sec
・説明:RSI 指標に基づき上限下限ラインで逆張りするロジック
・バックテスト結果:

Net profit rate             : -41.61032%
Profit factor               : 0.4243865327356267%
Gross profit                : 0.2538601600000001BTC
Gross loss                  : 0.5981814699999995BTC
Total order count           : 247
- New  order count          : 121
- Exit order count          : 121
- Nanpin or Increasing count: 5
- Doten count               : 0
Total trading count         : 121
- Win count                 : 74
- Lose count                : 47
- Winning percentage        : 61.15702%
Max DrawDown                : -48.28796%
OneShot Max DrawDown        : -12.51498%


● frog.py
・時間足:7200sec
・説明:ボリンジャーバンド指標に基づき順張りするロジック
・バックテスト結果:

Net profit rate             : 31.94932%
Profit factor               : 2.1362758247543554%
Gross profit                : 0.7623382100000001BTC
Gross loss                  : 0.3568538299999998BTC
Total order count           : 64
- New  order count          : 31
- Exit order count          : 31
- Nanpin or Increasing count: 2
- Doten count               : 0
Total trading count         : 31
- Win count                 : 17
- Lose count                : 14
- Winning percentage        : 54.83871%
Max DrawDown                : -24.39584%
OneShot Max DrawDown        : -7.81047%


● delta.py
・時間足:86400sec
・説明:日足の変動幅から計算した指標に基づき順張りするロジック
・バックテスト結果:

Net profit rate             : 88.52906%
Profit factor               : 1.5654874648813966%
Gross profit                : 2.4825798599999995BTC
Gross loss                  : 1.5858190600000002BTC
Total order count           : 90
- New  order count          : 12
- Exit order count          : 12
- Nanpin or Increasing count: 0
- Doten count               : 66
Total trading count         : 78
- Win count                 : 26
- Lose count                : 52
- Winning percentage        : 33.33333%
Max DrawDown                : -25.49523%
OneShot Max DrawDown        : -7.51120%


● heikin_kun.py
・時間足:3600sec
・説明:平均足の変動幅から計算した指標に基づき順張りするロジック
・バックテスト結果:

Net profit rate             : 61.67106%
Profit factor               : 1.4820565795746314%
Gross profit                : 3.707347089999997BTC
Gross loss                  : 2.5014882299999988BTC
Total order count           : 1154
- New  order count          : 577
- Exit order count          : 577
- Nanpin or Increasing count: 0
- Doten count               : 0
Total trading count         : 577
- Win count                 : 299
- Lose count                : 278
- Winning percentage        : 51.81976%
Max DrawDown                : -20.17810%
OneShot Max DrawDown        : -5.55109%


● new_genbu.py
・時間足:3600sec
・説明:2 本の WMA 指標に基づきクロスでドテンするロジック
・バックテスト結果:

Net profit rate             : -22.05481%
Profit factor               : 0.9512565641798428%
Gross profit                : 1.0481577600000003BTC
Gross loss                  : 1.1018665200000002BTC
Total order count           : 512
- New  order count          : 256
- Exit order count          : 256
- Nanpin or Increasing count: 0
- Doten count               : 0
Total trading count         : 256
- Win count                 : 73
- Lose count                : 183
- Winning percentage        : 28.51562%
Max DrawDown                : -34.71055%
OneShot Max DrawDown        : -7.14851%


● new_seiryu.py
・時間足:900sec
・説明:ATR, RSI, ヒゲを指標に基づく瞬間的ヒゲを狙うロジック
・バックテスト結果:

Net profit rate             : 37.08612%
Profit factor               : 1.1534603953772138%
Gross profit                : 2.2734200100000024BTC
Gross loss                  : 1.97095628BTC
Total order count           : 809
- New  order count          : 403
- Exit order count          : 403
- Nanpin or Increasing count: 3
- Doten count               : 0
Total trading count         : 403
- Win count                 : 321
- Lose count                : 82
- Winning percentage        : 79.65261%
Max DrawDown                : -12.97028%
OneShot Max DrawDown        : -7.11002%


● shenlong.py
・時間足:10800sec
・説明:グランビルの法則に基づく凝った作りの逆張りロジック
・バックテスト結果:

Net profit rate             : 144.30357%
Profit factor               : 1.9720858223668583%
Gross profit                : 3.1709594500000016BTC
Gross loss                  : 1.607921629999996BTC
Total order count           : 264
- New  order count          : 93
- Exit order count          : 93
- Nanpin or Increasing count: 0
- Doten count               : 78
Total trading count         : 171
- Win count                 : 48
- Lose count                : 123
- Winning percentage        : 28.07018%
Max DrawDown                : -14.81448%
OneShot Max DrawDown        : -6.83458%


● ma_diff_cross.py
・時間足:14400sec
・説明:線形回帰分析から得られる短期長期指標に基づくロジック
・バックテスト結果:

Net profit rate             : 57.27602%
Profit factor               : 1.143932389241012%
Gross profit                : 4.558073909999999BTC
Gross loss                  : 3.9845658300000024BTC
Total order count           : 246
- New  order count          : 1
- Exit order count          : 1
- Nanpin or Increasing count: 0
- Doten count               : 244
Total trading count         : 245
- Win count                 : 96
- Lose count                : 149
- Winning percentage        : 39.18367%
Max DrawDown                : -37.57550%
OneShot Max DrawDown        : -28.82059%


● perfect_order.py

・時間足:14400sec
・説明:為替界隈でメジャーなパーフェクトオーダー手法に基づくロジック
・バックテスト結果:

Net profit rate             : 88.05104%
Profit factor               : 1.5494315704779396%
Gross profit                : 2.74939903BTC
Gross loss                  : 1.7744565700000015BTC
Total order count           : 154
- New  order count          : 77
- Exit order count          : 77
- Nanpin or Increasing count: 0
- Doten count               : 0
Total trading count         : 77
- Win count                 : 30
- Lose count                : 47
- Winning percentage        : 38.96104%
Max DrawDown                : -30.12595%
OneShot Max DrawDown        : -11.81781%


● swallow.py

・時間足:14400sec
・説明:高値, 安値と線形回帰分析した指標に基づくロジック
・バックテスト結果:

Net profit rate             : -13.85150%
Profit factor               : 0.932232874657136%
Gross profit                : 1.5719998999999993BTC
Gross loss                  : 1.6862738300000006BTC
Total order count           : 201
- New  order count          : 31
- Exit order count          : 31
- Nanpin or Increasing count: 0
- Doten count               : 139
Total trading count         : 170
- Win count                 : 21
- Lose count                : 149
- Winning percentage        : 12.35294%
Max DrawDown                : -41.53445%
OneShot Max DrawDown        : -8.88779%


● trend_surfing.py

・時間足:3600sec
・説明:線形回帰分析からトレンドに乗り順張りするロジック
・バックテスト結果:

Net profit rate             : 147.81699%
Profit factor               : 1.2934966069597014%
Gross profit                : 6.517885539999996BTC
Gross loss                  : 5.038966090000002BTC
Total order count           : 333
- New  order count          : 1
- Exit order count          : 1
- Nanpin or Increasing count: 0
- Doten count               : 331
Total trading count         : 332
- Win count                 : 127
- Lose count                : 205
- Winning percentage        : 38.25301%
Max DrawDown                : -31.18448%
OneShot Max DrawDown        : -9.81322%

バックテスト結果的に最も優秀だったの本ロジックはグラフも掲載します。年間通して安定した成績を出すことができています。

画像62


● trend_surfing2.py

・時間足:3600sec
・説明:trend_surfingの別バージョンの位置づけの順張りロジック
・バックテスト結果:

Net profit rate             : 98.88962%
Profit factor               : 1.377537720240079%
Gross profit                : 5.160681049999998BTC
Gross loss                  : 3.746308340000003BTC
Total order count           : 776
- New  order count          : 380
- Exit order count          : 380
- Nanpin or Increasing count: 0
- Doten count               : 16
Total trading count         : 396
- Win count                 : 192
- Lose count                : 204
- Winning percentage        : 48.48485%
Max DrawDown                : -33.15732%
OneShot Max DrawDown        : -6.59461%


● doten.py

・時間足:3600sec
・説明:Stop注文を利用して書き直した真のチャネルブレイクロジック
・バックテスト結果:

Net profit rate             : 20.00441%
Profit factor               : 1.0420596086183092%
Gross profit                : 4.974902289999999BTC
Gross loss                  : 4.77410529BTC
Total order count           : 464
- New  order count          : 1
- Exit order count          : 1
- Nanpin or Increasing count: 0
- Doten count               : 462
Total trading count         : 463
- Win count                 : 128
- Lose count                : 335
- Winning percentage        : 27.64579%
Max DrawDown                : -31.98226%
OneShot Max DrawDown        : -7.69280%


● scalping/ema.py
・時間足:10sec
・説明:秒足の EMA 指標と終値のクロスで売買するmm学習用ロジック
・バックテスト結果:割愛

● scalping/study_mm.py
・時間足:5sec
・説明:ask/bid 近辺に両差する単純なmm学習用ロジック
・バックテスト結果:割愛

● hft/print.py
・時間足:約定履歴ベース
・説明:NeoDuelBot ver5 で約定履歴などを表示するだけのロジック
・バックテスト結果:割愛

● hft/spread.py
・時間足:約定履歴ベース
・説明:NeoDuelBot ver5 のイベント駆動型のサンプルロジック
・バックテスト結果:割愛

■ ソフトウェア使用許諾契約書

画像13

NeuDuelBot が一時期間無料配布されていた経緯、過去不正にコピー・配布された経緯もあり、堅苦しく感じてしまうかもしれませんが、ソフトウェア使用許諾契約書を制定させていただいております。

ご購入前にご一読ください。適切にお使いいただく分には何ら不利な条項は定めておりませんので、ご安心ください。

■ その他注意事項等

画像14

お約束ではありますが、改めて注意事項を明記させていただきます。

暗号通貨の取引は、価格が急激に変動するリスク等があり、需給バランスの変化、市場の動向等によりユーザーに損失が⽣じる可能性がある商品です。また、本記事では暗号通貨取引所で動作する BOT フレームワークを売り切りで提供するものであり、前述してきたとおり投資助言行為に該当する行為は提供されません。

また本書内容はご購入いただいた方の暗号通貨トレードを助長するものではなく、本書により発生するいかなる問題又は損失に対し⼀切の責任を負いません。ご自身の判断と責任の上で、本書ご購入およびトレードをなされてください。

なお予告なく本プログラムおよび本記事の提供を停止する場合があります。


ここから先は有料パートになります。

画像36

ここから先は

1,977字 / 5画像

¥ 50,000

この記事が気に入ったらサポートをしてみませんか?