日本株の個別銘柄でシステムトレード検証&自動売買(ダウンロードあり)

公開日: : 株式自動売買開発

MT4/MT5というとFXでのトレードプラットフォームの印象が強いですが、株のトレードも可能です。特にMT5では板取引に対応するバージョンアップなども行われたので、開発元のロシアではモスクワ証券取引所の銘柄をMT5でトレードしたり、システムトレードしたり、過去検証することが可能になっています。

 

とは言え、国内のMT4/MT5対応のFX会社ではそもそも為替以外をトレードすることすらできず、海外のMT4/MT5対応業者でも株式が取引可能な業者は限られています。

個別銘柄の株式トレードできるFX会社

 

しかし、TradeStationは現状ではバグが多いし、EasyLanguageによる複雑なストラテジーを開発するには限界があるので、MT5で株のシステムトレードをしてみます。

 

MT4/MT5対応で株取引ができるIFCMでは、下記の東京証券取引所の銘柄があります。

シンボル

会社名

スプレッド

配当の調整

配当調整の入金日付

注文設定可能値幅

#T-6857 Advantest Corp. アドバンテスト株式会社 100 34 JPY 30.03.2020 200
#T-8267 Aeon Co. Ltd. イオン株式会社 20 18 JPY 27.02.2020 40
#T-2802 Ajinomoto Co. Inc. 株式会社アジノモト 15 16 JPY 30.03.2020 30
#T-6770 Alps Electric Co. Ltd. アルプス電気株式会社 20 10 JPY 30.03.2020 40
#T-9202 ANA HOLDINGS Inc. 株式会社アナホールディングス 30 75 JPY 30.03.2020 60
#T-8304 Aozora Bank, Ltd. 株式会社オゾラ銀行 25 39 JPY 30.03.2020 50
#T-3407 Asahi Kasei Corp. 旭化成株式会社 10 16 JPY 30.03.2020 20
#T-4503 Astellas Pharma Inc. アステラス製薬株式会社 15 20 JPY 30.03.2020 30
#T-5108 Bridgestone Corp. ブリヂストン株式会社 35 80 JPY 27.12.2019 70
#T-7751 Canon Inc. キノン株式会社 25 80 JPY 27.12.2019 50
#T-8601 Daiwa Securities Group Inc. 大和証券グループ株式会社 5 9.5622 JPY 29.03.2017 10
#T-6902 Denso Corp. 株式会社デンソー 40 70 JPY 30.03.2020 80
#T-6702 FUJITSU Ltd. 富士通株式会社 100 100 JPY 30.03.2020 200
#T-6501 Hitachi, Ltd. 日立製作所 35 4.781 JPY 29.03.2016 70
#T-7267 Honda Motor Co. Ltd. 本田技研工業株式会社 25 28 JPY 30.03.2020 50
#T-7013 IHI Corp. 株式会社イヒ 20 40 JPY 30.03.2020 40
#T-1605 Inpex Corp. インペックス株式会社 10 15 JPY 27.12.2019 20
#T-7202 Isuzu Motors Ltd. いすゞ自動車 15 19 JPY 30.03.2020 30
#T-8001 ITOCHU Corp. 伊藤忠商事株式会社 20 42.5 JPY 30.03.2020 40
#T-6178 Japan Post Holdings Co. Ltd. 日本郵送ホールディングス株式会社 10 25 JPY 30.03.2020 20
#T-5411 JFE Holdings Inc. JFEホールディングス株式会社 15 20 JPY 27.09.2019 30
#T-5020 JX Holdings, Inc. 株式会社JXホールディングス 5 11 JPY 30.03.2020 10
#T-7012 Kawasaki Heavy Industries, Ltd. カワサキ重工業株式会社 20 35 JPY 30.03.2020 40
#T-9107 Kawasaki Kisen Kaisha, Ltd. カワサキ・キセン株式会社 20 1.992 JPY 29.03.2016 40
#T-9433 KDDI Corp. 株式会社KDDI 25 60 JPY 30.03.2020 50
#T-2503 Kirin Holdings Co Ltd キリンホールディングス株式会社 20 31.5 JPY 27.12.2019 40
#T-5406 Kobe Steel, Ltd. 神戸製鋼株式会社 10 10 JPY 27.03.2019 20
#T-6301 Komatsu Ltd. 株式会社コマツ 20 55 JPY 30.03.2020 40
#T-6326 Kubota Corp. 株式会社クボタ 15 19 JPY 27.12.2019 30
#T-8002 MARUBENI 丸 紅 7 17.5 JPY 30.03.2020 14
#T-7261 Mazda Motor Corp. マツダ株式会社 10 20 JPY 30.03.2020 20
#T-6479 MinebeaMitsumi Inc. ミネベアミツミ株式会社 20 14 JPY 27.03.2019 40
#T-4188 Mitsubishi Chemical Holdings Corp. 三菱ケミカルホールディングス株式会社 7 20 JPY 30.03.2020 14
#T-8058 Mitsubishi Corp. 三菱商事 25 68 JPY 30.03.2020 50
#T-6503 Mitsubishi Electric Corp. 三菱電機株式会社 15 26 JPY 30.03.2020 30
#T-8802 Mitsubishi Estate Co. Ltd. 三菱不動産株式会社 20 16 JPY 30.03.2020 40
#T-7011 Mitsubishi Heavy Industries, Ltd. 三菱重工業株式会社 35 75 JPY 30.03.2020 70
#T-5711 Mitsubishi Materials Corp. 三菱マテリアル株式会社 50 40 JPY 30.03.2020 100
#T-7211 Mitsubishi Motors Corp. 三菱自動車株式会社 10 10 JPY 30.03.2020 20
#T-8306 Mitsubishi UFJ Financial Group, Inc. 三菱UFJフィナンシャル・グループ 5 12.5 JPY 30.03.2020 10
#T-8031 MITSUI & CO., Ltd. 三井物産株式会社 15 40 JPY 30.03.2020 30
#T-4183 Mitsui Chemicals, Inc. 三井化学株式会社 25 50 JPY 30.03.2020 50
#T-8801 Mitsui Fudosan Co. Ltd. 三井不動産株式会社 25 22 JPY 30.03.2020 50
#T-5706 Mitsui Mining and Smelting Company, Ltd. 三井鉱業製錬株式会社 25 70 JPY 30.03.2020 50
#T-9104 Mitsui O.S.K.Lines, Ltd. 三井O.S.K.ラインズ株式会社 24 35 JPY 30.03.2020 48
#T-8411 Mizuho Financial Group, Inc. みずほフィナンシャルグループ 2 3.75 JPY 30.03.2020 4
#T-6701 NEC Corporation 株式会社NEC 50 30 JPY 30.03.2020 100
#T-7731 Nikon Corp. ニコン株式会社 12 30 JPY 30.03.2020 24
#T-5401 NIPPON STEEL & SUMITOMO METAL CORPORATION 日本製鉄住友金属工業株式会社 15 10 JPY 27.09.2019 30
#T-9432 Nippon Telegraph & Telephone Corp 日本電信電話株式会社 45 47.5 JPY 30.03.2020 90
#T-9101 Nippon Yusen Kabushiki Kaisha 日本郵船・香伏記会社 20 20 JPY 30.03.2020 40
#T-7201 NISSAN MOTOR CO., Ltd. 日産自動車株式会社 6 20 JPY 27.09.2019 12
#T-8604 Nomura Holdings, Inc. 野村ホールディングス株式会社 5 7.969 JPY 29.03.2016 10
#T-6471 NSK Ltd. 株式会社NSK 10 20 JPY 30.03.2020 20
#T-9613 NTT Data Corp. NTTデータ株式会社 12 9 JPY 30.03.2020 24
#T-9437 NTT Docomo Inc. 株式会社NTTドコモ 25 60 JPY 30.03.2020 50
#T-6752 Panasonic Corp. パナソニック株式会社 10 15 JPY 30.03.2020 20
#T-4755 Rakuten Inc. 株式会社楽天 10   20
#T-8308 Resona Holdings, Inc. 株式会社レソナホールディングス 5 10.5 JPY 30.03.2020 10
#T-7735 SCREEN Holdings Co., Ltd. 株式会社スクリーンホールディングス 100 46 JPY 30.03.2020 200
#T-6724 Seiko Epson Corp. セイコーエプソン株式会社 15 31 JPY 30.03.2020 30
#T-1928 Sekisui House Ltd 積水ハウス株式会社 20 41 JPY 30.01.2020 40
#T-6753 Sharp Corporation シャープ株式会社 15   30
#T-8303 Shinsei Bank, Ltd. 新生銀行 15 7.9685 JPY 28.03.2018 30
#T-9984 SoftBank Corp. ソフトバンク株式会社 35 22 JPY 30.03.2020 70
#T-2768 Sojitz Corp. ソジッツ株式会社 10 8.5 JPY 30.03.2020 20
#T-6758 SONY Corp. ソニー。 60 25 JPY 30.03.2020 120
#T-7270 Subaru Corp. スバル株式会社 25 72 JPY 30.03.2020 50
#T-3436 Sumco Corp. 株式会社サムコ 15 10 JPY 27.12.2019 30
#T-4005 SUMITOMO CHEMICAL COMPANY, Ltd. 住友化学株式会社 10 6 JPY 30.03.2020 20
#T-8053 Sumitomo Corp. 住友商事株式会社 15 35 JPY 30.03.2020 30
#T-5802 Sumitomo Electric Industries Ltd. 住友電気工業株式会社 15 24 JPY 30.03.2020 30
#T-8309 Sumitomo Mitsui Trust Holdings, Inc. 三井住友トラストホールディングス株式会社 35 75 JPY 30.03.2020 70
#T-8795 T&D Holdings Inc. T&Dホールディングス株式会社 10 22 JPY 30.03.2020 20
#T-5233 TAIHEIYO CEMENT Corp. 太陽平代セメント株式会社 50 30 JPY 30.03.2020 100
#T-1801 TAISEI Corp. 大成株式会社 50 65 JPY 30.03.2020 100
#T-3401 Teijin Ltd 帝人株式会社 20 30 JPY 30.03.2020 40
#T-8750 The Dai-ichi Life Insurance Company, Ltd. 第一生命保険株式会社 15 62 JPY 30.03.2020 30
#T-9501 Tokyo Electric Power Company, Inc. 東京電力株式会社 10   20
#T-9531 Tokyo Gas Co. Ltd. 東京ガス株式会社 25 30 JPY 30.03.2020 50
#T-3402 TORAY INDUSTRIES, Inc. 株式会社トーレイインダストリーズ 6 8 JPY 30.03.2020 12
#T-6502 TOSHIBA CORP. 東芝。 50 10 JPY 30.03.2020 100
#T-4042 Tosoh Corp. 東ソー株式会社 15 28 JPY 30.03.2020 30
#T-7203 TOYOTA MOTOR Corp. トヨタ自動車株式会社 60 79.685 JPY 29.03.2016 120
#T-4689 Yahoo Japan Corp. ヤフージャパン株式会社 10 8.86 JPY 30.03.2020 20
#T-7272 Yamaha Motor Co. Ltd. ヤマハ発動機株式会社 20 45 JPY 27.12.2019 40

 

業界を代表する銘柄が多いですが、流動性が低い新興株はそもそも板が薄くてトレードできないことがあるので仕方ありません。

営業時間内にのみ取引可能で、個別株CFDの原資産に配当が実施された場合、配当金調整額の受け取り(支払い)については配当金相当額の100%です。

 

株のシステムトレード検証1

上昇は緩やかで、下落は一瞬なら…

FXの場合はレンジ相場が多く、”為替そのものがある一定の値に収まるべきもの”という特徴があるので、基本は逆張り+損大利小モデルが鉄板ですが、株の場合はその知識は邪魔になります。

 

株の場合は”株価は上がるべきもの”という前提があるので、トレンドが発生しやすい傾向があります。そのため、先人の偉大な投資家が言うように順張り、トレンドフォローがお約束です。必然的に損小利大モデルになります。トレーリングをつけてもいいかもしれません。

 

ただし、オーストラリアドルや南アフリカランドのように、株価には”緩やかに上昇して、下落するときは一瞬で下落する”という特徴もあります。そのため、買い戦略と売り戦略は分けた方が合理的です。為替の場合は通貨の交換なのでチャートが上下で線対称になりやすいですが、株では上下線対称になりません。

 

「買いは順張りでトレーリングストップ、売りはATRで暴落時にイナゴで売り逃げ」

 

とりあえず、楽天(4755)でプログラミングを組みます。理由は特にありません。最初に目に入ったからです。

forex-mt4-mt5-ea

4755 楽天 日足チャート

 

まず、買いエントリーの条件である”順張り”のロジックですが、順張りのテクニカル指標の代表的なものには、

  • 移動平均線によるゴールデンクロス、
  • ADX、
  • ボリンジャーバンドの1σ突破、
  • エンベロープのバンド突破、
  • 一目均衡表の雲抜け
  • レジスタンスラインブレイク

などがあります。

今回は順張りのシグナルとして、サポートライン、レジスタンスラインのブレイクを使います。サポートライン、レジスタンスラインは直近の高値と直近の安値が分かれば算出することができます。

forex-mt4-mt5-ea

forex-mt4-mt5-ea

例えば、直近のロウソク足14本の高値は、

とすれば算出できます。(返値はdouble)

現在の株価が過去14本のロウソク足を超えた場合は、

とすればOKです。ただし、これだけの条件では、比較対象となる高値が凸でない可能性があります。

具体的には、株価が一時的に単調減少するようなチャートを描いた場合、14本前のロウソク足がちょうどその減少局面にあたると凸でない値を比較対象にしてしまいます。

 

forex-mt4-mt5-ea

楽天 日足チャート

上記のような株価チャートの場合、14本前のロウソク足はまったく凸ではないので、レジスタンスラインのレートにはなりえませんが、ロウソク足14本前からの最高値をブレイクとしてしまうと、この条件で買いエントリーしてしまいます。

 

そのため、指定したロウソク足の計算期間において、最高値のロウソク足が最も古いロウソク足である場合は除外が必要です。

 

コーディング

ロングエントリー条件(イメージ)

 

ショートエントリー条件

 

ロングポジション トレーリング

 

OrderModify

MQL5にはOrderModifyがないのでOrderSendでACTIONをMODIFYにするか、標準ライブラリのCTradeのPositionModifyを使う必要があります。

 

EAの使い方

EAをMT5の株価チャートにセットします。

forex-mt4-mt5-ea

  • Lot:ロット
  • SupportResistanceSpan:ロングのエントリー条件であるレジスタンスラインの比較ロウソク足の本数
  • ShortEntryGap: ショートエントリーの条件のナイアガラ幅. 前のロウソク足から現在価格がこの指定値以上下がった場合にショートエントリーします。(Point)
  • MaxPosition_thisSymbol:その銘柄の最大同時保有ポジション数
  • Sllipage_in_point:スリッページ(point)
  • SL_in_point_long: ロング用のストップロス幅、損切幅(point)
  • TP_in_point_long: ロング用のテイクプロフィット幅、利確幅(point)
  • SL_in_point_short: ショート用のストップロス幅、損切幅(point)
  • TP_in_point_short: ショート用のテイクプロフィット幅、利確幅(point)
  • TrailingStop:トレーリングストップtrue=ON, false=OFF ロングでしか稼働しません。
  • Magic:マジクナンバー(意味が分からなければノータッチでOK)
  • FillingMode:MT5のフィリングモード

 

自動売買プログラムダウンロード

現在、EAを持て余したプログラマによる EA無料使い放題企画をしています。EAのパスコードは企画参加者に配布しています。
詳しくはこちら

 

「買いは順張りでトレーリングストップ、売りはATRで暴落時にイナゴで売り逃げ」EAのダウンロード

「買いは順張りでトレーリングストップ、売りはATRで暴落時にイナゴで売り逃げ」(ATR SLTP版)EAのダウンロード

 

過去データで検証

ロングとショートでトレードロジックが異なるので、最適化をロングとショート別々に行います。

銘柄は楽天で1時間足です。

 

ロング最適化

forex-mt4-mt5-ea

forex-mt4-mt5-ea

forex-mt4-mt5-ea

一見、優位性がある傾向がありそうなグラフをしていますが、緑色のところでも利益が全然でていないので、総負け状態です。

 

ショート最適化

forex-mt4-mt5-ea

forex-mt4-mt5-ea

周期性があるので、3Dグラフで見てみると、

forex-mt4-mt5-ea

微妙なグラフが現れました。

上位のトレードはどれも取引回数が少ないので、優位性があると言うにはかなり厳しい結果です。

forex-mt4-mt5-ea

 

これは、全探索でパラメータを最適化して…という以前の問題です。そもそもの仮説・仮定に誤りがあった可能性が高いです。

もちろん、1銘柄・1時間足を調べただけなので他の条件ではもしかしたら上手くいく傾向を発見することができるかもしれません。あとは読者さんにお任せします。(ブンナゲー)

 

そこで、「買いは順張りでトレーリングストップ、売りはATRで暴落時にイナゴで売り逃げ」という仮説は一旦ここで放置することにします。

 

改良点

株取引の場合マイナススワップの加算がバカにできないので、マイナススワップの影響が小さくなる戦略か、マイナススワップが発生するまでの間に決済する戦略が有効(かも)

 

 

株のシステムトレード検証2

86銘柄同時リアルタイム監視で暴騰暴落イナゴトレード

株のシステムトレードができるトレードプラットフォームにはMT5の他にTradeStationがあります。TradeStationにはスクリーニングなどの機能があり、全銘柄から条件に合う銘柄を絞り込むことが可能です。

しかし、実際にEasyLanguageで銘柄の絞り込みを行うストラテジーを組むと、いともかんたんにフリーズします。実用のレベルまで至っていません。

しかし、逆に言うとそこにチャンスがあります。つまり、多数の株式の銘柄からスクリーニングを行うシステムトレードは発展途上である可能性があります。(ただし、機関投資家レベルのトレード戦略は除く)

 

特に、株価が冒頭暴落した際のイナゴトレードはスピードが重要になりますが、どの銘柄が冒頭暴落しているかを判断して、その銘柄で瞬時に注文するまでには裁量トレードの場合、ラグがあります。

その遅延にターゲットを絞った検証を行ってみます。

 

「多数の株式銘柄を監視して、冒頭暴落があったらイナゴトレードする」

 

コーディング

何はともあれ呼び出しができるように東京証券取引所の銘柄のシンボルを変数に格納します。

 

あとはループ文を使って全銘柄の検証をするif文を作ればOKです。

 

 

OrderSendingの関数は下記のような感じです。

 

システムの使い方

日経のどれかのチャートにセットすればOKです。86銘柄チャートを開く必要はありません。気配値でこの86銘柄が表示されるようにしておいてください。(一応)

forex-mt4-mt5-ea

forex-mt4-mt5-ea

  • Lot:取引ロット
  • LongEntryGap: ロングエントリーをする暴騰幅(point)
  • ShortEntryGap: ショートエントリーする暴落幅(point)
  • MaxPosition: 最大同時保有ポジション数
  • SL_in_point_long: ロング用のストップロス幅、損切幅(point)
  • TP_in_point_long: ロング用のテイクプロフィット幅、利確幅(point)
  • SL_in_point_short: ショート用のストップロス幅、損切幅(point)
  • TP_in_point_short: ショート用のテイクプロフィット幅、利確幅(point)
  • Magic:マジクナンバー(意味が分からなければノータッチでOK)
  • FillingMode:MT5のフィリングモード

 

自動売買プログラムダウンロード

現在、EAを持て余したプログラマによる EA無料使い放題企画をしています。EAのパスコードは企画参加者に配布しています。
詳しくはこちら

 

「86銘柄でイナゴトレード」EAのダウンロード

 

【口座番号の制限なしexファイル(0.1BTC~)、ソースコードmqファイル 譲渡可(価格応相談 0.3BTC~)】

問い合わせはこちら

検証

forex-mt4-mt5-ea

MT5なら86銘柄を同時に監視しながらバックテストを稼働させることができます。(MT4では仕様上機能がありません。TradeStationは一瞬でフリーズします)

 

86銘柄を同時に演算するので演算量が多いです。そのため、ざっくりとした最適化を行います。

forex-mt4-mt5-ea

forex-mt4-mt5-ea

時間足は1時間足で期間は2020年2月26日~4月14日です。(合理的な理由はありません。たまたま適当にセットしました。)たったこれだけの組み合わせパターンでも膨大な時間が演算にかかっています。

MT5では世界中のMT5ユーザーのコンピュータリソースをレンタルするサービスがあるので、いよいよ出番かもしれません。

 

優位性は十分にあるトレード手法でも単一の銘柄では取引回数が少なすぎてまともな検証ができない、というパターンはよくあります。しかし、今回は大量の銘柄を同時に調べているので、「1銘柄ではトレードチャンスが全然ないロジックの優位性を測る」ことができます。

 

forex-mt4-mt5-ea

forex-mt4-mt5-ea

綺麗なグラフとは言えませんが、及第点だと思います。

 

forex-mt4-mt5-ea

ロングエントリーとショートエントリーのエントリー条件の騰落ポイントを調べてみると、ロングエントリーの方が条件が厳しいことが分かりました。直感では冒頭暴落するときは下落幅の方が大きいイメージがありますが、その逆の結果です。

これはおそらく、「暴落するときは暴落幅が大きくなる傾向があるから暴落の前兆の時点でエントリーすべきだが、暴騰するときは暴騰幅がそれほど大きくはならないから、よっぽど超暴騰したとき以外はイナゴエントリーしない方が良い」という教訓だと考えられます。

 

PFと取引回数とドローダウンのバランスを考慮した組み合わせでテストした場合、

forex-mt4-mt5-ea

このように、いかにも損小利大モデルのグラフができあがります。連敗回数が高いので心配症の人には向いてないですね。

もうちょっと取引回数が少なくても良いなら、もうちょっときれいなグラフにできます。株の場合、FXよりも取引可能な時間がそもそもかなり短いので取引回数は少なくなりがちです。

forex-mt4-mt5-ea

それでも1か月半~2か月で15~30回もトレードすれば上出来じゃないでしょうか。

 

改良点

そもそも各銘柄ごとにボラティリティが異なるので、暴騰暴落の幅を決定する指標を”point/pips単位”にするよりも”直近のロウソク足の平均(ATR)のN倍”にした方が合理的。(ただし、パラメータが増える)

 

EAforStocks_ScreeningStocks_and_following_ATR_SLTP.ex5

 

株のシステムトレード検証3

相関がある二つの銘柄間で両建て裁定取引検証

[非公開コンテンツ]

この投稿は役に立ちましたか? 役に立った 役に立たなかった 1 人中 0 人がこの 投稿 は役に立ったと言っています。
 

コメント

  1. 匿名 より:

    いつも楽しく読ませていただいております。

    ブログ内に時折、「非公開コンテンツ」と書いてあるところがありますが、こちらはどのような手続きを踏めば読ませていただくことができるのでしょうか。

  2. 匿名 より:

    86イナゴEAでパラメータいじってBTしてて思いましたが、株価の数値が銘柄によって100~4000とだいぶ幅があるので、確かにpipsでエントリー/利確な限りは恣意的なフィッティングにしかならないような気がしますね。本質をつくならROCやATRが必要でしょうかね。

  3. 横瀬 より:

    検証ありがとうございます。FXの場合はどの通貨ペアの値幅もpips/pointで計算すれば大きな差はありませんが、
    株の場合は各銘柄ごとのボラティリティの差が大きいので、FXの考え方をそのままスライドさせただけでは安直でしたね。
    ATR版も貼っておきます。

Message

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

株の自動売買を始める、開発する6つのやり方

FX業界ではMT4/MT5のおかげもあり、個人レベルでも自動売買やシステムトレードが盛んにおこなわれ

記事を読む

初心者のためのEasyLanguage入門(トレードステーション)

これからトレードステーションのストラテジを開発するためにEasyLanguageをやってみようという

記事を読む

[EasyLanguage]ストラテジーのコードを読み解く(トレードステーション)

移動平均線のクロスのストラテジーのプログラミングを見ていきたいと思います。 思っていたより短い

記事を読む

[EasyLanguage]パーフェクトオーダーを作る(トレードステーション)

今回は久々にプログラミングを触ります。 TradeStationはデフォルトで比較的なインジケータ

記事を読む

トレードステーションの使い方(初心者)

トレードステーションのチャートの表示方法 TradeStation/トレードステーションは、Met

記事を読む

 

Translate »
上に戻る