Bitcoin 裁定取引と自動取引 abitra.netのブログ

Bitcoinの自動売買のあれこれ

バイナリーオプション(ハイローオーストラリア)自動売買構築の注意点 その1


半分自分用メモ
本記事はハイローオーストラリア(バイナリーオプション)の内容となります。


ハイローオーストラリア側はプログラム自動売買はNG行為なので自己責任でーって感じです。

ハイローオーストラリア 本番環境とデモ環境との違い


webサイトの作りから言えば違いはほぼ無いです。
デモ口座で作成した自動売買プログラムは本番環境でも動きます。


その上でデモ口座と本番口座の自動売買の注意点など。

注意点 1


ハイローオーストラリアにログイン直後のサイトの遷移には少し気を付けた方が良いかもです。
デモ環境ですと"5000円のキャッシュバック"の案内がありますが本番ではその案内がなくなります。

f:id:hogehoge_kato:20190829150811p:plain


案内がなくなるのは別に良いのかと考えますが、問題はその案内がなくなった事よりサイトが読み込み前に自動売買の注文処理が走るので時間選択または通貨ペア選択辺りのクリック選択が出来なくてエラーになる可能性が高くなります。

htmlタグの存在を確認していてもエラーになります。


対応方法としてはsleep処理などしてサイト読み込みまで待ってやればOK
サイトの負荷具合にもよりますが2-3秒待ってやれば大丈夫なんじゃないかなーと。

注意点 2


約定拒否への対応

デモで約定拒否はさほど起こりませんが本番環境ではよくある事。裁量でも自動売買でも同じ。

対応としては約定するまでエントリーする。又は約定拒否されたらその取引は諦める。


個人的には○○回約定拒否されたらそのエントリーを諦めるって方法を取っています。
深追いすると想定価格外で約定する可能性もあり良い結果にならない可能性が高くなります。

裁量であればプライスアクションや様子を見ながら調整出来たりするのかもですがプログラムによる自動売買では判断が難しいです。


もう一方の約定拒否されたらその取引を諦める。も有効と考えています。
約定拒否=エントリー出来なかった= 損失 ではないです。

機会損失にはなりますが金銭的な損失はないです。
本来プログラムによる自動売買は約定拒否されたらその取引のエントリーを諦めるのが良いと考えます。


取引の機会は何回もあるのでねー金銭的な損失が出なければ勝ちといった考えも出来るかと。


直近の自動売買のエントリー結果など 2019年8月28日

f:id:hogehoge_kato:20190829152103p:plain


f:id:hogehoge_kato:20190829152038p:plain


f:id:hogehoge_kato:20190829152005p:plain


f:id:hogehoge_kato:20190829151949p:plain


f:id:hogehoge_kato:20190829151923p:plain


f:id:hogehoge_kato:20190829151848p:plain


f:id:hogehoge_kato:20190829151829p:plain


f:id:hogehoge_kato:20190829151808p:plain


f:id:hogehoge_kato:20190829151730p:plain

勝率60%!! ジグザグ(zigzag)の順張りのバックテスト。 バイナリーオプション(ハイローオーストラリア)用


バイナリーオプション(ハイローオーストラリア)用の新しいロジックを考えてバックテストしてみました。
勝率60%!? 夢を見れるエントリー手法。


ジグザグと水平線を利用した逆張りエントリー


手法は凄くシンプルにですが過去のジグザグ(zigzag)の頂点を抜けたら順張り。


これだけ。


私の基本は逆張りですが今回は順張りイケるんじゃないのー的な感じ。

当初は逆張りでプログラムを組んだのでバックテストの成果は勝率約40%であーやっぱりむりかーって考えたのですが冷静になって考えると逆張りじゃなければ順張りで60%の勝率じゃん!! やべーじゃん。
うはうはじゃんってw

f:id:hogehoge_kato:20190828152622p:plain


具体的なバックテストの状況としては
TitanのMT4を利用
通貨ペア : USDJPY
時間 5M (5分足)
ヒストリカルデータ Dukascopy
期間 2014/1/1 - 2018/12/30 5年程


f:id:hogehoge_kato:20190828152435p:plain


バイナリーオプションの5分足決済は15分足の残り5分を利用してエントリーしています。

ジグザグと水平線の順張り手法詳細


過去ジグザグの頂点を利用した手法です。
とはいえ単純に一つ前のジグザグの頂点を採用では意味がない場合が多いと考えたので過去4つのジグザグの頂点で最小と最大を採用しています。
最大と最小のジグザグの頂点の価格(水平線)を超えた時に即エントリーといった感じ。次足でもなく10分満期でもなくエントリーは水平線を超えたら即エントリーです。

(水平線と言っていますが実際には水平線は引いておらず頂点の値を超えたらです。)


※この手法を考えた時は逆張りで考えていたのですがブログ書いてて思いましたが順張りでエントリーを考えるのであれば過去2つのジグザグの頂点でもいいのかもしれません。こちらは未検証。あーでもやっぱり直近だとダメかな。。。(感覚としてですが。)

ジグザグと水平線の今回のエントリーメリット

1. どの時間帯も安定している。


通常のロジックは時間帯などよっては勝率が変わることが多いのですが今回のジグザグと水平線手法は時間帯による勝率に大きな変化がありません。
深夜1-4時台が弱いのですがそれ以外の時間帯は安定しているなーっと。

2. エントリー回数が多い


一か月の平均エントリー回数が約109回/月程あります。(一つの通貨ペアで)
手法にもよりますがこの回数は多い方かと考えています。
手法によっては200-300回/月エントリーってのもあるのですが時間帯勝率などを考慮すると200-300回/月が => 30-40回/月しかエントリー出来ないのはよくあります。


勝率が54%を超えているのであればエントリー回数は多ければ多いほど利益が増えます。

3. 他通貨ペアでも応用可能


USDJPY以外の通貨ペアでも調べてみました。
殆ど通貨ペアでも勝てるのですが特に相性が良かったのは
USDCAD, EURUSD, AUDUSD などになります。

ジグザグと水平線のみのシンプルなロジックなので通貨ペア事に微調整をあまり考えなくてもいいのかもしれません。
また上記通貨ペアのエントリー回数は115-121回/月とUSDJPYよりも多くエントリー出来ます。


ジグザグと水平線の今回のエントリーデメリット


良いことばかりではない今回のエントリーデメリット。
運用上での話になります。

1. ハイローオーストラリアにアクセスし続ける

デメリットなのか微妙ですが今回のロジックは即エントリーロジックなのでハイローオーストラリアの画面を事前に開いておかないといけません。
裁量やってる方であれば気にならないと考えますが、自動売買においては常に画面を開いておくって気持ち悪いんですよねw
メモリ食いまくってブラウザ動かない問題などへの対応を考えたりする必要があります。
また複数の通貨ペアへの対応などを考えると常にハイローオーストラリアの画面を4-5立ち上げておく必要があるなーと。


常にブラウザ立ち上げっぱなしって事はPCを1台占有させておくなどの対応が必要。


2. MT4とハイローオーストラリアの数値が違う

このデメリットも扱いが難しいのですがMT4とハイローオーストラリアの価格の差が水平線の順張りエントリーに影響ある可能性があります。
エントリータイミングの処理で対応出来そう気もしますが、MT4の価格=ハイローオーストラリアの価格ではないのでMT4のアラートタイミングを読み取ってからのエントリーする必要があるかな。
その場合ワンテンポ遅れる可能性があるので結果負ける可能性が高くなるかなーと。


今回のジグザグ(Zigzag)と水平線手法を採用する?


個人的には検討しても良い手法(ロジック)の一つと考えています。
フォワード用のPCを1台用意して動かす必要があると考えているので時間がある時にでも転がってるノートパソコンにてテストしてデータを取得したいかな。

その他 ジグザグ(Zigzag)と水平線エントリーの次足エントリー又は10分満期エントリーは?


ジグザグ(Zigzag)と水平線タッチの次足エントリー又は10分満期エントリーの逆張りバックテストも行っています。

結果からお伝えすると次足、10分満期共に大きな特徴は見つけられませんでした。
多少時間帯による偏りもありましたが使える感じではないかなーと。
USDJPYのみのバックテスト検証しかしていないので他の通貨ペアだったらイケてるかもしれません。



備考


バイナリーオプション(ハイローオーストラリア)で順張りで入った事が無いので若干不安といいますか何か変な感覚です。

また更に勝率を考えるのであればジグザグの値幅による勝率もバックテストなどで検証するとより勝率が高くなると考えます。〇〇pips以下の値幅ではエントリーしないなど。

とりまフォワードテストにて様子みないと何ともですねー

TM-binaryインジケーターのフォワードテスト結果 約1ヶ月

自分用メモ
#############################
2019年8月23日 13時から18時頃までハイローオーストラリアのサイトがアクセス出来ませんでした。
理由はAWSの障害との事。
#############################


TM-binaryインジケーター(TMシグナルインジゲーター)のフォワードテストを1ヶ月以上行いましたのでその結果報告。


TM-binaryインジケーター フォワード結果


結論から言うとTM-binaryインジケーター設定そのままでは負けます。利益出ません。


負けます!

負けます!!

負けます!!!

ハイローオーストラリアでエントリーした生結果

勝率=> 51.24%
win=> 268回
lose=> 255回

High=> 285回
low=> 238回


エントリーは1234円です。リターンは2319円になります。

実際エントリーでの収益
利益=> 621492円
損益=> 645382円
収益=> -23890円 <= フォワードテスト(リアルのハイローオーストラリアの収益)結果です。

注意


上記結果はMT4上の結果ではありません。

リアルのハイローオーストラリアにてエントリーしての結果となります。


プログラムで自動売買を構築してエントリーしています。
自動売買ですが全てのアラートにエントリー出来ている訳でございませんので上記結果とエントリーアラートは多少違います。
※MT4のアラートの出るタイミングだったりハイロー側で約定拒否があったりしてエントリー出来ていない場合もあります。


ただ全てのTM-binaryインジケーターのアラートに人力でエントリーは現実的ではないのでプログラムによる自動売買が現実的なのかなーと。

ハイローオーストラリア エントリー履歴


※全部のせると長くなるのでハイローオーストラリアでエントリーした結果の一部
期間はここ一か月程度の結果です。



f:id:hogehoge_kato:20190824012043p:plain

f:id:hogehoge_kato:20190824012047p:plain

f:id:hogehoge_kato:20190824012051p:plain

f:id:hogehoge_kato:20190824012055p:plain

f:id:hogehoge_kato:20190824012445p:plain


エントリー履歴を集計


上記エントリー結果(履歴)をhigh と low側で時間帯で集計を行います。

f:id:hogehoge_kato:20190824012104p:plain



High Lowだけで集計するのではなく各通貨ペア毎の勝率及びエントリー足の分毎での勝率なども確認しています。

f:id:hogehoge_kato:20190824012108p:plain


谷あきら氏のサイトで掲載されている14ヶ月負けなしとは


谷あきら氏のフォワード結果はMT4上の結果を案内しているのかと考えます。

確かにMT4上では負けないんですよね。。。では何故実際のハイローオーストラリアでは負けてしまうのか。

そもそも該当期間のTM-binaryインジケーターの勝率が低い


TM-binaryインジケーターも万能ではなく過去バックテストを考えても56-59%に落ち着きます。
この勝率はMT4上での勝率になります。

この勝率は始値に確実にエントリー出来る前提になります。
実際ハイローオーストラリアにエントリーしてみると分かるかと考えますが足替わり0秒にエントリーを毎回は難しいです。自動売買でも。
(足替わり0秒エントリーは自動売買のプログラムの方法によっては出来なくもないのですが、まぁ今回はこの辺の話はまた今度)

また足替わりは約定拒否の確率も高い気がします。(約定拒否率を調べたわけでは御座いません。何となくなので。。。)


ハイローオーストラリア側の価格とMT4側の価格が違う


ハイロー側はFXCMの価格を採用との事ですが本当かなーってのが正直なところ。

価格はFXCMのtickデータを採用しているのかと考えますが価格が反映されていない又は結構ズレていたりします。

ハイローオーストラリアのサイトをみて頂ければと思いますが、同じ15分締めのUSDJPYでも締め時間によって価格がズレていたりもするのでFXCMの価格データを参考程度にしているといった感じが正確なのかと。


個人的にはハイローオーストラリア側で価格操作されてハイローオーストラリア側の利益の最大化(有利に)なる様に価格操作をされているのかと考えます。
※何の根拠もないですけどねー


価格がかけ離れるって事はないのですが少しズレる。
この微妙ズレの価格の差で負ける。


ではどうすれば勝てる様になるのか?


負ける理由は上記でも書いたのですが該当期間の勝率+微妙な価格差。


そもそもの該当期間の勝率はどうしようもうないのですが、少なくとも指標発表及び特定の時間帯は避けるなどバックテストで導き出した時間帯は避ける設定を徹底。


微妙な価格差の負けに対してもフォワードテストをして微妙な価格差で負けてる時間帯の把握とその時間帯は避ける。


併せて締めの分足にも注目する。
フォワードテストをしていると特定のエントリー分の勝率が低かったりします。
FX的な考えですが特定の分は足が伸びる傾向があります。機関投資家のキリの良いタイミングと重なるのが理由かと考えてましてその分が締めとなるエントリーは避ける。



簡単にまとめるとフォワードテストをハイローオーストラリアのサイトで行って勝てる時間帯だけのフィルター掛けてエントリーしましょ!!って感じ。


f:id:hogehoge_kato:20190824012111p:plain


フィルター設定したエントリーは勝てます!!!

さらに細かく設定などを詰めてやると勝率65%前後まで上がります!!!
ただ過度に最適化すると通用しなくなる可能性も高まるので塩梅が難しいです。

FX オープニングレンジブレイクアウト(短期ボラティリティに基づくオープニング・レンジ・ブレイクアウト)のバックテストしてみた その2


前回の記事でオープニングレンジブレイクアウトの決済は4つある話をしました。

http://bitra.hatenablog.com/entry/2019/08/09/164350

  1. ドテン決済反対側で決済
  2. 利確損切を指定して決済
  3. トレール幅での決済 トレンドーフォロー側のブレイクとアウトと相性が良いと考えます。
  4. 別の設定でオープニングレンジブレイクで決済


一応USDJPYにて全ての決済をバックテストしてみました。
最適化してバックテストしたので一つの決済のバックテストが半日とか掛かってしまいましたw
それを1時間足、4時間足。

FX オープニングレンジブレイクアウトのバックテスト結果


利益が最大になるのは利確損切した決済です。



具体的なバックテストの状況としては
TitanのMT4を利用
通貨ペア : USDJPY
時間 1H(1時間), 4H(4時間)
ヒストリカルデータ Dukascopy
期間 2014/1/1 - 2018/12/30 5年程


バックテストの結果詳細を書く長くなるのでお勧めの設定のみのご案内。

バックテスト設定数値など


時間は4時間足(4H)
注文時に利確損切(指値、逆指値)設定で注文。
過去5足
係数2.1
利確pips 1500
損切pips 700
lots 0.01 固定(バックテストなので複利はしません)

この条件でバックテスト結果


取引回数 217
プロフィットファクタ : 1.41
ドローダウン 0.65%


f:id:hogehoge_kato:20190822150437p:plain

上記より良い設定はあるけど


上記バックテスト結果よりも良い設定はあるのですが取引回数などを考えるとどうなのかなーって。
トレール注文も期待したのですが思ったよりは伸びなかったかなーって印象。

トレール注文で行うとしたら


トレール注文はプロフィットファクターなどの結果は良かったので、もしかしたら私が使いどころが間違っていた可能性あります。
トレール注文とナンピン、マーチン系と組み合わせると大化けする可能性も否定できませんが、設定見誤ると死ぬ可能性もあるので何とも。。。

ナンピン系はよほど自身がる相場か小資金の時は良いのですが、それを永続的に大きな金額でやっていくかと言われると不安しかないんんですよねー
その不安を払拭する設定又は何かしらの対応方法を見つけ出せれば、最強なんじゃないのって個人的には考えてます。
諦めてはいません。いつか時間のある時にナンピン系のロジックも組んでバックテストをして様子をみてみたいです。

ナンピン系のロジックを組みとしたらブレイクアウトでエントリーで一定幅のpipでlotを倍にしてのナンピンかな。




その他:複数のMT4でバックテストする方がいいかも


今回一つ一つの決済のバックテストに時間が掛かったので複数のMT4を立ち上げてバックテストを行いました。
そこで気が付いた事は取引所(MT4)によって結果が変わる。


Titanで行いつつalpariのMT4でもバックテストをしています。
正直今迄意識していなかったのですがバックテストは使用するMT4によって結果が大きく変わる場合があるので複数個のMT4で行って、どのMT4でも安定してそうな設定を選択するなどした方が良いかもしれません。
今迄はFXCMかTitanのどちらか一方でバックテストをしていたのですがそれだけではダメかもです。
複数のMT4でバックテストをしたからといって本番運用で必ず利益が出るとかではないのですが、どのMT4でも利益が出る設定は無難な設定な気がします。

裁量で成績出せてる人などは一つのMT4でバックテストをして最適化された設定の中から最適な設定を選択出来そうですがねーそうでない人は複数個のMT4でバックテストしてその上位の常連の設定で運用するのがいいんじゃないのかなーって考え。


見極められる人であれば不要ですが私の様なクソが見極めらる訳もなく、TitanのMT4のバックテストでこの設定良さげだなー思ったものはalpariでは通用しなかったり。
Titanに最適化されすぎただけの可能性もあり。


とはいえ最初から複数個のMT4でバックテストするのは難しい(時間も手間も面倒)ので、ある程度一つのMT4で設定を見極めておいて、その設定などが通用するのかなどを他のMT4でバックテスト検証するのが良い方向なのかなーと。


何かしら良い方法があるといいのですがねー

MT4 ストラテジーテスターを一括で複数の通貨ペア、複数のEAを行う方法 その2


前回の記事で下準備の一部が完了しました。
abitra.hatenablog.com



あとはやらなくても良いけど個人的に管理しやすい為の設定など。

MT4 Portable 起動用の設定(ini)


大元のMT4フォルダに Portable_iniフォルダを新規作成。
※名前は何でもいいです。コピー先のフォルダには不要です。

f:id:hogehoge_kato:20190815012334p:plain


このフォルダに後で記載する設定ファイルが書き込まれるます。


testerにsetファイルのフォルダとtest_reportのフォルダ作成


f:id:hogehoge_kato:20190815012403p:plain


setフォルダには最適化に必要な設定のファイルを追加して下さい。


f:id:hogehoge_kato:20190815012415p:plain


test_reportレポートフォルダは特に何もしなくていいです。
ストラテジーテスター完了するとレポートが入るフォルダになります。


準備完了。複数通貨をストラテジーテスターで一括でバックテスト


私はrubyで書いています。


バックテストのコード。
以下コードを動かせば8つのMT4が立ち上がりバックテストが始まります。

pair = ["USDJPY", "USDCAD", "NZDUSD", "GBPUSD", "GBPJPY", "EURUSD", "EURJPY", "EURGBP"]
period = "H4"
count = 1
testexpert="エキスパート名"

pair.each{|var|
  hoge = "
  Server=Alpari-Demo
  Login=************
  Password=*************
  TestExpert=#{testexpert}
  TestExpertParameters=set\\bbbbb.set
  TestSymbol=#{var}
  TestPeriod=#{period}
  TestModel=0
  TestRecalculate=false
  TestOptimization=true
  TestDateEnable=true
  TestFromDate=2014.01.01
  TestToDate=2018.08.14
  TestReport=tester\\test_report\\#{testexpert}_#{var}_#{period}_Report
  TestReplaceReport=True
  TestShutdownTerminal=false
  "
  open("portable_ini\\#{var}#{period}.ini", 'w'){|f|
    f.puts hoge
  }

  if count == 1
    Thread.new do #Threadで立ち上げる
      aaa = "\"C:/Users/hogehoge/デスクトップ/MT4_alpari/terminal.exe\" /portable \"C:/Users/hogehoge/デスクトップ/MT4_alpari/portable_ini/#{var}#{period}.ini\""
      system(aaa)
    end
  end

  if count > 1
    Thread.new do #Threadで立ち上げる
      bbb = "\"C:/Users/hogehoge/デスクトップ/MT4_alpari/MT4_alpari_#{count}/terminal.exe\" /portable \"C:/Users/hogehoge/デスクトップ/MT4_alpari/portable_ini/#{var}#{period}.ini\""
      system(bbb)
    end
  end
  sleep(1)
  count = count + 1
}


少し解説

f:id:hogehoge_kato:20190815012425p:plain



上記プログラムを動かすとMT4が立ち上がりと同時にバックテストが動きます。
細かいストラテジーテスターの設定は他サイトなどを参考に設定して頂くと良いかと考えます。





バックテスト開始してしばらく待つとレポートが出力されます。


場所は本記事の最初に作成したtesterのtest_reportになります。
※出力先は任意で決めれます。

f:id:hogehoge_kato:20190815012442p:plain



ストラテジーテスターのバックテスト完了


基本は以上です。
細かいところは端折っているのですが何となくの雰囲気は掴めたかと考えます。


"MT4BP" "MT4バッチプロセッサー"の場合はどの様な処理をしているのか分かりませんが以前の資料でMT4を8個同時に動かす的な資料を見た記憶があるので近い感じではあるのかなーと考えます。

もちろん"MT4BP" "MT4バッチプロセッサー"の方が色々設定出来るかと考えます。


実際8個のMT4で同時にバックテストしてみた結果


バックテスト中ですがめちゃくちゃPCの動作が遅くなります。
ブラウザ開くも画像ファイルがなかなか読み込まれなかったりマウスのポインタがカクついたりしました。


バックテストは成功したの?


バックテストは成功したのですが何点か問題もありました。


最適化結果のレポートを出力するもレポートだけではパラメータの確認が出来ません。
結局各MT4の最適化結果を確認しないといけない。(レポートにパラメータの入力表示出来るといいのになー)


f:id:hogehoge_kato:20190815012459p:plain


たまーにですが読み込まれなかった通貨ペアあがりました。
その時は動かなかったMT4を手動で動かしたりました。一度動かした後はプログラムでも問題なく動いたり。
理由はよく分からない。。。

今後は使っていく?


複数通貨ペアでバックテストす時は便利だから使っていこうかなーと。
通貨ペアだけでなく15分足、30分足、一時間足、4時間足と同時にバックテストしたい時など時々訪れるのでその時は便利なよかーん。



もし何か不明な点などあればコメントなどでお気軽にご連絡下さいませー

MT4 ストラテジーテスターを一括で複数の通貨ペア、複数のEAを行う方法 その1


以前コメントで頂きまして 山なめこさんの"MT4BP"を教えてもらって凄い気になっていたので自分でもつくれないかなーって事で近しいプログラムを作成してみました。


※完全一致でもないですし制作自体1日程度なので勘違い及び間違ってる可能性があるので注意。


"EA山なめこ@養分"

twitter.com



"MT4BP" "MT4バッチプロセッサー"

www.gogojungle.co.jp


MT4バッチプロセッサーとは何か?


引用

バックテストの超時短ツール。複数EAのバックテスト作業を最大8並列で完全自動化できます。複数の通貨・時間足を含め、複雑な設定でバッチ処理を設定でき、時間短縮&高度な分析が可能になります。


簡単に書くと複数のバックテストを並列で処理出来るツール。


通常のMT4のバックテストは一つしか動かせない。


MT4の設計自体が古い影響なのか通常はバックテストは一つしか出来ないですし、PCのCPUも一つのコアしか動いていない。
私のPCは高性能なのに全く活用出来ていない。。。
高性能PCは1コア辺りの処理が早い傾向があるのでバックテストの処理は早いのですが複数コア使ってもっと高速に出来るんじゃないのーって。

注意

正確には今回の方法も1つのMT4を利用してバックテストを行っているのですが、一括で複数のMT4を利用する事によって複数のCPUでバックテストを行っている様な感じです。
"MT4BP" "MT4バッチプロセッサー"がどのような処理をしているのか不明です。同じような処理なのか全く違うのか。

並列でバックテストを処理出来ると何が便利?


バックテストの検証時間が短くなります。


自作EA及び購入EAに関わらず必ずバックテスト検証しているかと考えますが数年を最適化で複数の設定で行うとめちゃくちゃ時間が掛かります。
下手したら一つの検証で1日とかねw

それを色々な時間軸、いくつもの通貨ペアでって考えると、かなり面倒(時間的にも)です。

MT4でストラテジーテスターを一括で複数の通貨ペアで処理する


ここからが本題。

出来る事

  1. 複数の通貨ペア (例えば"USDJPY", "USDCAD", "NZDUSD", "GBPUSD", "GBPJPY", "EURUSD", "EURJPY", "EURGBP" )を一度にバックテスト出来ます。
  2. 複数のEAを一度にバックテスト出来ます。
  3. 複数の時間軸のバックテストを行えます。


今迄一つのバックテストが終わったら別の通貨ペアの選択を選択して再度バックテストをしてといった感じでバックテストを行っていたのを一気に複数通貨ペアをバックテストさせます。
もちろん最適化も行います。

出来ない事


ビジュアルモードでのバックテスト

最適化を行う前提ですのでデメリットではないかなー


MT4 ストラテジーテスターを一括で複数の通貨ペア、複数のEAを行う為の準備


事前にある程度準備が必要です。
といってもコピーとリンクを少し変更する程度。

必要なもの


MT4 portable インストール型ではなくalpariなどのportableタイプのMT4
ruby (pythonjava何でもOK)などのプログラム環境。私がrubyがで行っただけ。


※以下PortableタイプのMT4で行う前提で書いています。

MT4のコピー(複製した分だけ一括で処理出来るMT4が増えます)

私はPCが8コアなので8つ同時動かす前提で考えています。
8つ同時で動かしてもそこそこ重たいので自身のPCスペックと相談しながら何個複製するか検討下さいませ。


MT4のファイルを確認すると以下の様な構成になっているかと考えます。


f:id:hogehoge_kato:20190814165402p:plain



このフォルダをそのままコピー


私はコピーしたフォルダをコピー元の大元フォルダにいれいます。



コピーしたフォルダに分かりやすいように番号を設定。

こんな感じ。


f:id:hogehoge_kato:20190814165535p:plain


その後コピーしたフォルダのtesterフォルダとExpertsフォルダを削除
大元のtesterフォルダとExpertsフォルダは消しちゃダメですよ。削除するのはコピーしたものだけ。


f:id:hogehoge_kato:20190814170754p:plain



大元からコピー先にファイルを共有するので。


f:id:hogehoge_kato:20190814170446p:plain

f:id:hogehoge_kato:20190814170450p:plain



削除したらジャンクションを利用して大元からコピー先にtesterフォルダとExpertsフォルダをジャンクションリンクを設定。

コマンドプロンプトを利用してジャンクションを設定

こんな感じ

mklink /J C:\Users\hogehoge\MT4_alpari\MT4_alpari_2\MQL4\Experts C:\Users\hogehoge\MT4_alpari\MQL4\Experts
&
mklink /J C:\Users\hogehoge\MT4_alpari\MT4_alpari_3\MQL4\Experts C:\Users\hogehoge\MT4_alpari\MQL4\Experts
&
mklink /J C:\Users\hogehoge\MT4_alpari\MT4_alpari_4\MQL4\Experts C:\Users\hogehoge\MT4_alpari\MQL4\Experts
&
mklink /J C:\Users\hogehoge\MT4_alpari\MT4_alpari_5\MQL4\Experts C:\Users\hogehoge\MT4_alpari\MQL4\Experts
&
mklink /J C:\Users\hogehoge\MT4_alpari\MT4_alpari_6\MQL4\Experts C:\Users\hogehoge\MT4_alpari\MQL4\Experts
&
mklink /J C:\Users\hogehoge\MT4_alpari\MT4_alpari_7\MQL4\Experts C:\Users\hogehoge\MT4_alpari\MQL4\Experts
&
mklink /J C:\Users\hogehoge\MT4_alpari\MT4_alpari_8\MQL4\Experts C:\Users\hogehoge\MT4_alpari\MQL4\Experts

このジャンクションを利用してコピー先に大元のExpertsを利用する事が出来ます。

大元のMT4のExpertsにEAいれたらコピー先のMT4でも利用出来るようになります。
ショートカットリンクでは出来ませんので注意。


mklink /J C:\Users\hogehgoe\デスクトップ\MT4_alpari\MT4_alpari_2\tester C:\Users\hogehgoe\デスクトップ\MT4_alpari\tester
&
mklink /J C:\Users\hogehgoe\デスクトップ\MT4_alpari\MT4_alpari_3\tester C:\Users\hogehgoe\デスクトップ\MT4_alpari\tester
&
mklink /J C:\Users\hogehgoe\デスクトップ\MT4_alpari\MT4_alpari_4\tester C:\Users\hogehgoe\デスクトップ\MT4_alpari\tester
&
mklink /J C:\Users\hogehgoe\デスクトップ\MT4_alpari\MT4_alpari_5\tester C:\Users\hogehgoe\デスクトップ\MT4_alpari\tester
&
mklink /J C:\Users\hogehgoe\デスクトップ\MT4_alpari\MT4_alpari_6\tester C:\Users\hogehgoe\デスクトップ\MT4_alpari\tester
&
mklink /J C:\Users\hogehgoe\デスクトップ\MT4_alpari\MT4_alpari_7\tester C:\Users\hogehgoe\デスクトップ\MT4_alpari\tester
&
mklink /J C:\Users\hogehgoe\デスクトップ\MT4_alpari\MT4_alpari_8\tester C:\Users\hogehgoe\デスクトップ\MT4_alpari\tester


Expertsと同じくtesterもジャンクションでリンクさせておきます。

ちゃんとジャンクション出来ているとコピー先のフォルダにこんな感じのフォルダが出来ます。


f:id:hogehoge_kato:20190814165725p:plain


f:id:hogehoge_kato:20190814165728p:plain



今回はここまで次回rubyプログラムで設定ファイルを作成して一括で8つのMT4を動かして一括で複数の通貨ペアをバックテスト。させる予定。予定。予定。書くのが面倒になってきたw書ききれるかな。。。

TMシグナルインジケーターとバイナリーオプション(ハイローオーストラリア)の取引回数の重要性


前回の続編
"バイナリーオプション(ハイローオーストラリア)の勝率とエントリー回数の関係について"
abitra.hatenablog.com



勝率にとらわれ過ぎると利益減るかもよ


TMシグナルインジケーター販売ページに時間フィルターの重要性が書かれているのですが勝率に囚われると利益が減るかもしれないので気を付けた方がいいよーって話。


f:id:hogehoge_kato:20190810015325p:plain


サイト記載の勝率

時間フィルター設定なし
勝ち 2442
負け 1837
勝率 57.07%


時間フィルター設定あり
勝ち 1615
負け 1119
勝率 59.07%



勝ち -827
負け -718
勝率 2.00%


つまり時間フィルターすると2%勝率が上がったよって事。

単純な勝率だけをみると59.07%のフィルターありの方が良いですし投機の2%の勝率は大きいです。


が問題は取引回数が合計6割程になってしまう。

勝率上がったから利益も上がるじゃないの?


半分正解で半分不正解、ポイントは取引回数。

計算してみた。
条件 : 1000円エントリー 5分足の倍率は0.88倍
※TMシグナルインジゲーターは5分足でエントリーするロジックです。


時間フィルター設定なし
勝ち 2442 => 2148960円
負け 1837 => 1837000円
勝率 57.07% => 利益 311960


時間フィルター設定あり
勝ち 1615 => 1421200
負け 1119 => 1119000
勝率 59.07% => 利益 302200


時間フィルター設定なし - 時間フィルター設定あり
差額 9760円


つまり時間フィルターなしの方が2%勝率低いのに利益は時間フィルターなしの方が高い。
個人的には利益が高い方が好き。(ってこれは当たり前w)


1000円エントリーで9760円の差ですが10,000円は100,000円、200,000円と考えると大きいです。
仮にですが200,000円エントリーの場合は1,952,000円の差。


時間フィルターの方向性は正しい


利益はほんの小さい差で生まれる。
時間フィルター設定ありの"勝ち"を1627にすると時間フィルターありの方が利益が出る。


その差は1627 - 1615 = 12回

2734回のトレードで12回多く勝てば時間フィルターの方向性は正しくなります。

勝率は59.25%にすることで時間フィルターありのほうが利益がでる。


悩んだら時間フィルターなしの運用もありかもよ


実際運用してみて感じているのはバックテストで導いた時間フィルターは参考にはなるけど実運用ではどうかなーって。

傾向を把握するのにバックテストは有効ですが絶対に当てはまるとも言い切れない。
フォワードテストで様子を見ながら時間フィルターを設定するのが正しいかも。


根底にはMT4のヒストリカルデータや実際のハイローオーストラリアの為替数値が違ったり操作されていたり色々あるので参考にしかならないってのがあるのかもねー


間違った認識だったらゴメンね。