前提
投資の考え方
マネースクエアさんのトラリピでは、インジケーターなどで独自のルールを設けることができません。
トラリピに独自のルールを設けることが可能になれば、更に収益アップを見込めるのではないかと考えました。
今回は、それのベースとなるトラリピ風のバックテスト用のシステムを構築しました。
システム要件
開発環境
- OS:macOS Carolina 10.15.5
- 言語:Python 3.7.2
- 開発ツール
- バックテスト用システム:Jupyter Notebook 1.0.0
本番環境
今回は構築しません。
というのも、もし本気でトラリピと同じシステムを作成するのであれば、指値(イフダン)で発注する仕様になります。
今回考えているのは、トレードのタイミングや利確・損切りのタイミングは、独自のルールを設けますので、指値(イフダン)で発注する仕様とは異なるからです。
データ
今回のシステムはUSD/JPYの1分足で構築していますが、何でも構いません。カラムだけ合わせてください。
バックテスト
以下はGithubにアップしていますので、ダウンロードして利用してください。
(左下のファイル名をクリックするとGithubのサイトに遷移します。「Download ZIP」をクリックするとダウンロードできます。)
トレードの基本情報
金融商品種別 | FX |
金融商品 | USD/JPY |
金融機関 | OANDA JAPANかIB証券になるかと思います。 |
資金 | 500万円(これらはバックテスト用という意味です。 |
売買 | 買い・売りの両方 |
売買数量 | 1000枚の固定(複利効果は利用せず |
チャート | 1分足を使用する。 |
投資判断 | トラリピ方式
*ロスカットなし |
その他 | スワップポイントを考慮していませんので注意してください。 |
システム
システムの仕様(設定)の説明
1つ目のセル
主にライブラリーのインポートや画面の設定、その他の初期設定を行っています。
SYMBOLS = ['USD_JPY']
検証する通貨などの金融商品をリスト型で定義します。複数の金融商品に対応しています。
2つ目のセル
検証する過去データ(ヒストリカルデータ)をCSVで読み取りしています。
フォルダやファイル名などは適宜修正してください。
3つ目のセル
トレードの設定を行っています。
以下を参照してください。
PROFITS = {'USD_JPY':0.1}
利確幅
SPREADS = {'USD_JPY':0.008}
スプレッド
PORTFOLIOS = { 'USD_JPY':5000000 }
資産
LOTS = {'USD_JPY':1000}
投資する最小ロット
RATE_STEPS = {'USD_JPY':0.02}
トレードする区切
トラリピではレンジとトラップ本数という仕様ですが、面倒だったので区切にしています。
*0.01, 0.02, 0.05などの1、2、5の刻みにしてください。
RATE_RANGES = { 'USD_JPY':{ 'buy' :[105,110], 'sell':[110.001,120] } }
トレードする買いと売りのレンジ
トレードしない場合は空にしてください。(例:売りをしない場合は'sell':[]
としてください。
LEVERAGE = 1 max_position = 1
今回は利用していません。
4つ目のセル
3つ目のセルで設定したトレードにおいて、最大ポジション数とロスカットレートを表示させています。
ロスカットレートは、レバレッジ25倍の証拠金維持率100%として算出しています。
5つ目のセル
バックテストのシステムです。
結果
2019年のUSD/JPYの1分足でテストした結果です。*以下の結果は横にスクロールできます。
symbol actNum days wonPips portfolio per tickets cntWin cntLoss pre MaxLoss termMean 0 USD_JPY 2117 62 204.68 5,204,680 104.1% 63 2054 0 100% 11440.0 1 days 00:11:34.878286
- トレード回数:6862
- 利確回数:6790
- 残ポジション:72個
- 利益:67582PIPS
- 結果の資産:5,675,820円(113.5%)
- 最大含み損:21,400円
- 利確の平均期間:1 days 00:11:34
まぁこんな感じですね。これでも年利10%以上ですね。
ロットやレバレッジ、複利効果などの投資の仕様をきちんと煮詰めればもっと利益がでそうですね。
複利効果に対応してロットを可変にできるのがこのシステムのメリットですね。
なお、スワップポイントを考慮していませんので注意してください。
コメント