バックテストを活用しよう。パラメータの最適化1EAの良し悪しは、プログラムのロジックだけでは決まりません。同じロジックでも、パラメータが変わることで全く違う成績にもなります。EAのパラメータとは、例えば前に作成した移動平均線のEAであれば、移動平均の期間や、移動平均の種類などを指します。本格的にEAを作ってみよう。カスタム指標を使用するとはいえパラメータを少しずつ変えてバックテストを実行して検証するのは大変なんですが、MT4には最適化という便利な機能があります。最適化とは、指定したパラメータの組み合わせを自動的に実行し、結果を比較することができる機能です。今回は、最適化の手順を説明します。ストラテジーテスターの[セッティング]タブの[最適化]にチェックを付けます。最適化の選択[エキスパート設定]ボタンをクリックします。エキスパート設定の表示EAの設定画面が表示されます。[テスト設定]タブの設定を行います。テスト設定[最適化パラメータ]では、パラメータの良し悪しを何の数値で評価するかを選択します。基本的には[Balance]でよいと思いますが、以下から選択することが出来ます。(EAに埋め込まれた評価値算出処理の出力する数値)[遺伝的アルゴリズム]も、基本的にチェックでよいです。遺伝的アルゴリズムは、ランダムなパラメータの組み合わせから評価の良いものを抽出し、それを何度も繰り返すことで、高い確率で最適な組み合わせに行き着くと言われています。遺伝的アルゴリズムのチェックを外した場合、パラメータの組み合わせを総当りで実行します。組み合わせが少ない場合は総当りの方が確実ですが、組み合わせが多い場合には遺伝的アルゴリズムを使用することで短時間で最適化が行えます。必要に応じて、[初期証拠金]を増やすこともできます。[ポジション]でロング(買)とショート(売)どちらかしか持たないこともできます。基本的にこれらは変更しなくてもよいかと思います。次に[パラメーターの入力]タブで、最適化したいパラメータを選択します。最適化するパラメータを、左のチェックを入れて選択します。最適化するパラメータの数が増えるとそれだけ時間がかかりますので、2~3個までに留めておくのがよいと思います。今回は[移動平均の期間]と[移動平均線の種類]を最適化します。その右の設定値は、[スタート]の値から[ストップ]の値までを[ステップ]の値刻みで変化させて最適化を行うという意味になります。チェックを入れたパラメータは[値]の値は無視されます。[最適化]タブでは、EAを停止するための制限を設けることができますが、下手に制限をかけるとEAの成績が正しく評価できないこともありますので、基本的には何もせず無制限としておきます。これらの設定を行ってから、ストラテジーテスターの[スタート]ボタンをクリックすると、最適化が開始されます。時間がかかると思いますが、通常のバックテストと同様で、緑のバーが右端まで到達し、[ストップ]が[スタート]に戻ったら完了です。最適化の結果を確認したいと思いますが、長くなりましたので続きは次回に。次の回へ「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。インジケータ一覧Twitterもよろしくお願いします。https://twitter.com/mt4programブログランキングにご協力よろしくお願いします。m(._.)mにほんブログ村お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。フラクタルバンドを使ったトレンド判定機能追加Gewinn7に組み込んだ、フラクタルを利用したもう一つのインジケータも合わせて公開します。本業がそこそそ忙しかったため、こちらのインジケータのことをすっかり忘れていました^^;;;;このバージョンアップを持ちまして現在980円で販売中のフラクタルバンドを1680円に値上げします。5/16のバージョンアップを予定しています。5/16までは現状の980円にて販売いたします。H1波を打ちながら高値安値のラインを更新している場合、ある程度の行き過ぎ状態が表れる事がわかってきました。Gewinn7にて、この行き過ぎ時からの反転タイミングで利食いを行うとPFを0.15ほど押し上げる効果がありました。考え方としてはS/Rオシレータのカスタムフラクタル版的インジケータになっています。~5/16まで頂点位置からレンジ帯を表示する「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。インジケータ一覧Twitterもよろしくお願いします。https://twitter.com/mt4programブログランキングにご協力よろしくお願いします。m(._.)mにほんブログ村お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。V1.11をFX-ONにリリース申請しました。修正点は下記の通りです。・利食いにおいてフラクタルでの頂点タイミングを見るように変更しました。・変化率分散バンドトレンド判定において、ある一定期間一方方向に動いた際値幅が±1σを超えるようならトレンドととらえるような判定を追加しました。・利食いに関するパラメータを少し修正しました。3ゴールデンウィーク中に大負けしました。考え方としては想定していた通りなのですが、ちょっと負けすぎとおもい、あれこれ調査していました。±1σの幅を超えての値動きは上記に匹敵するという判定を加えたところPFが2を超えてきましたのでバージョンアップを行いました。ご購入済みの皆さまには、ご迷惑おかけいたします。FX-ONのバージョンアップが終わり次第、バージョンアップよろしくお願いいたします。9800円にて販売中です。変化率分散バンドと平均足を利用したトレンドフォロー型EA・・フォワードのチャートが崩れまくっていますが、日々改善していますので、ぜひご検討ください。「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。インジケータ一覧Twitterもよろしくお願いします。https://twitter.com/mt4programブログランキングにご協力よろしくお願いします。m(._.)mにほんブログ村お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。本格的にEAを作ってみよう。カスタム指標を使用するそれでは、独自に作成したインジケータ(カスタム指標)を使用したEAを作成しましょう。Averages」を使用します。移動平均線のインジケータなので、戦略や結果は前回とほとんど変わりませんが、これを使って独自のインジケータの使い方を説明します。それではコードを見てみましょう。今回は[EA_MACustom]という名前で新しいEAを作成しています。他のEAと当らない値を使用する。}//+------------------------------------------------------------------+見れば分かると思いますが、前回とほとんど同じですね。前回との違いだけ説明していきます。移動平均線の条件を入力パラメータとして宣言しています。Averages」インジケータのパラメータです。基本的にインジケータのパラメータはEAの入力パラメータとしておくとよいです。Averages";使用するインジケータの名前です。[Indicators]フォルダに格納されている名前どおりに指定します。この場合は[Indicators]フォルダ直下にあるインジケータを使用しているので名前のみですが、子フォルダの下にあるインジケータの場合はフォルダ階層も含めて指定します。Averages"のように指定します。);ここでカスタムインジケータの値を取得しています。前回のiMA()関数ではなく、カスタムインジケータの値を取得するiCustom()関数を使用しています。iCustom()関数の引数は以下の通りです。symbol通過ペア名。timeframe時間軸。時間軸は、以下のように定義されています。name使用するインジケータの名前。・(インジケータのパラメータ)インジケータのパラメータ。(数は可変)パラメータの数だけ、順番に指定します。modeインジケータの中の取得したいライン(バッファ)の番号。(0~)インジケータによっては、1つのインジケータの中に複数のラインを表示するものがあります。その中のどのラインの値を取得するかを、0から始まるライン番号で指定します。shiftインジケータの値を取得する足の位置。(0~)引数の中のインジケータのパラメータは、インジケータをチャートに表示した時の[パラメーターの入力]タブの通りの内容と順番になります。パラメーターの入力また、コードでインジケータのパラメータを確認したい場合、ナビゲーターの[インディケータ]の中のインジケータを右クリックし、[修正]をクリックします。インジケータのコード表示メタエディターにてインジケータのコードが表示されますので、入力パラメータの宣言を確認できます。後ろから2番目のmode引数のインジケータのライン番号は、インジケータをチャートに表示した時の[色の設定]タブで確認できます。ラインの一覧が表示されますので、一番左の#の列がラインの番号になります。色の設定コードでインジケータのラインを確認したい場合は、パラメータの場合と同様にメタエディターでインジケータのコードを開きます。SetIndexBuffer()関数でライン番号とラインの元になるデータを指定していますので、こちらで確認することができます。このように、iCustom()関数を使用することによって、独自のインジケータの値を取得することができます。ここまでで、簡単にですが一通りEAを作成することが出来るようになったかと思います。これらを参考に、ぜひ自作のEAを作ってみてください。本ブログでも公開している無料インジケータもありますので、よければそちらなども使用して試してみてください。次の回へ「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。インジケータ一覧Twitterもよろしくお願いします。https://twitter.com/mt4programブログランキングにご協力よろしくお願いします。m(._.)mにほんブログ村お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。MT4プログラミング2016年5月10日火曜日[MT4インジケータ]フラクタルバンドを販売開始しました。アルゴリズム紹介MT4の標準にフラクタルというインジケータがあります。これは5本の頂点位置を算出するものです。考え方としては単純ですが、反発位置ということで、そこに抵抗があると判断してトレンドラインや抵抗線支持線を描画するのに使用されています。これをフィルタなどを利用して精度を高めたうえで、何かしらのルールでバンドを描けないか?と考えたのが第一のスタートでした。フラクタルバンドまず、フラクタルですが、MT4標準のフラクタルを使ってみると描画される矢印が多すぎます。どれを採用すればよいのかさっぱりわかりません。そこで、算出方法の変更とフィルタを追加してみました。算出方法の変更について図にて解説します。■フィルタまた、フラクタルを描画する際、二つのフィルタを搭載しています。1.Tick値によるフィルタデフォルトの設定では次のようになっています。過去48本のTick値平均に対して、Fractals対象のバーが50%以上のTick数を保持していること。2.ATFによるフィルタ頂点位置から、以降2本の高値安値のレンジが、100期間ATR未満の場合は無視します。ATRは2本の足における高値安値の幅ですので3本分と比較すると十分これを超えてくるはずです。上記のフィルタ付きフラクタルから、さらに価格帯バンドを表示しています。デフォルトの設定では、次のようになっています。上限バンドの例を示します。過去10個の上矢印を価格順にソートします。高い値から9個目と8個目の値を採用します。最高値は異常値として無視しています。9個目と8個目の値が近すぎる場合は、7個目の値を採用します。フラクタルは価格の反発位置を抽出します。反発位置というのは、そこの価格で何かしらの抵抗を受けたということになります。その抵抗位置をバンドとして描画しました。・このPips以下の差分は・・・・バンドを描画する際の値が近すぎると判断するPips数です。この値を大きくするとバンド幅が広がります。・trueの場合Close値を対象とする。trueのフラクタルの計算をClose値にて行います。falseの場合は高値安値から計算します。・Tick値平均期間Tick値フィルタにおけるTick値を平均する期間です。・Tick値とTick値を比較する際に・・・・Tick値と比較する場合に、Tick値平均に欠けるレートです。本値を0にするとTick値フィルタが無効化します。・ATRフィルタにおけるATR期間ATRフィルタ比較元となるATR期間です。・ATRフィルタ倍率ATRと比較する際に、ATR側に欠ける倍率です。バンドを計算する際に、ソート対象となる矢印数です。・上矢印タイプ/下矢印タイプフラクタルを描画する際の矢印タイプです。最初はブログネタにと思ったのですが、結構手間がかかったのと、Gewinn7に組み込んでみたらPFの改善が見られたため、効果ありそうということで980円にて販売いたします。認証は入っていません。値上げの予定も特にありませんが、要望等が発生してアップデートがかかる場合には値上げを検討いたします。頂点位置からレンジ帯を表示する「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。インジケータ一覧Twitterもよろしくお願いします。https://twitter.com/mt4programブログランキングにご協力よろしくお願いします。m(._.)mにほんブログ村お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。バックテストを活用しよう。レポートの見方EAを作ったら、どんどんバックテストして確認していきましょう。バックテスト結果の詳細はストラテジーテスターの[レポート]タブで確認できるので、この見方を理解して、望ましい結果を得れるようなEAを作っていきましょう。レポートそれぞれの項目の意味を、一通り説明します。・モデルティック数バックテストで使用したティック数。・モデリング品質バックテストで使用したティックの割合。・スプレッドバックテストに適用するスプレッド(0.1pips単位)。ここまではあまり重要ではありません。ここから下が、EAの成績として確認すべき内容です。その中で、特に重要な項目を赤色にしてあります。