EA開発/MQL5/詐欺師・商材屋お断り https://x.com/matsu20248

EA開発/MQL5/詐欺師・商材屋お断り https://x.com/matsu20248

最近の記事

MQL5でEA開発 77 最適化

最適化ブレイクアウトEAのパラメータの最適化をします。 デフォルトでは 長期期間:20 短期期間:10 としていました。 しかし、このパラメータはタートルズの例に従っただけで、最適なものかどうかは分かりません。 そこでパラメータの最適化ということをやってみます。 最適化の設定設定は以下だけ変更します。 「設定」タブ オプティマイズ:完全アルゴリズム(遅い)、最大回復係数 前回の記事で説明しましたように、最大回復係数とは最大のリカバリファクターのことです。

    • MQL5でEA開発 76 パフォーマンス指標

      パフォーマンス指標これからパラメータを最適化するなど様々な検証をする前に、パフォーマンスの指標について説明しておきます。 MT5ではパラメータを最適化すると、指定した基準でパフォーマンスを順位づけることができます。 もし1位のパラメータを採用するのだとすると、基準選択が重要になります。 パフォーマンス指標はいろいろありますが、「ストラテジーテスター」の「設定」タブで「オプティマイズ」を「完全アルゴリズム(遅い)」などにすると、基準とするパフォーマンス指標を選択できます。

      • MQL5でEA開発 75 過剰最適化

        過剰最適化これからブレイクアウトEAを使って検証を始める前に過剰最適化について触れておくことにします。 過剰最適化はオーバーフィッティングとも呼ばれます。 過剰最適化というのは多くのパラメータを使用して最適化し、バックテストでのパフォーマンスを高めるものです。 一般にパラメータが多いほどバックテストでのパフォーマンスはよくなります。 しかし、実際に運用してみると全然勝てない、つまり再現性がないということがよくあります。 過剰最適化の例過剰最適化の例を1つ挙げておきま

        • MQL5でEA開発 74 エラーのチェック

          エラーのチェックEAが完成したら、使用する前にバックテストでエラーを起こさないかチェックしましょう。 もしエラーが起きていたら、原因を調べ、コードを修正する必要があります。 では先ず、普通にバックテストをします。 終わったら「ストラテジーテスター」の「操作ログ」タブを開きます。 いろいろとたくさん表示されていると思います。 この中にエラーがないかを探します。 ビューアで確認 「操作ログ」タブで右クリックし、「ビューア」を選択します。 「Tester\Logs」

          MQL5でEA開発 73 ブレイクアウトEAの完成

          ブレイクアウトEAの完成これまでの記事でブレイクアウトEAを完成させるのに必要なパーツはすべて揃いました。 これらを組み立てることで、ようやくブレイクアウトEAを完成させることができます。 コードは長くなりました。 しかし、自作関数を並べた部分がほとんどで、実質的な内容はOnTick関数内にあり、これはそれほど長くありません。 ブレイクアウトEAの設計図を再掲します、 ・取引時間でなければ終了する・長期期間の最高値を求める・長期期間の最安値を求める・スプレッドを求め

          MQL5でEA開発 73 ブレイクアウトEAの完成

          MQL5でEA開発 72 マクロ

          マクロマクロとは特定の数値や文字列を他の文字列に置き換えたものです。 変数に似ていますが、変数のように後で別のデータで置き換えるということはできません。 マクロを最初に使うときは #define マクロ名 数値、または文字列 のようにします。 これをマクロの定義と言います。 変数の宣言のときのように最後に「;」が付かない点に注意して下さい。 なお、マクロ名はすべて大文字にするのが習慣です。 サンプルコード#define MAGIC 20248 // マクロの

          MQL5でEA開発 72 マクロ

          MQL5でEA開発 53 SetExpertMagicNumberメソッド

          SetExpertMagicNumberメソッドSetExpertMagicNumberメソッドはEAのマジックナンバーを設定するCTradeクラスのメソッドです。 CTradeクラスとメソッドについては後で説明します。 とりあえず、関数と同じと考えて下さい。 戻り値はありません 引数は 引数:マジックナンバー。ulong型 となっています。 サンプルコード#include <Trade\Trade.mqh> // ライブラリのインクルードCTrade Ext

          MQL5でEA開発 53 SetExpertMagicNumberメソッド

          MQL5でEA開発 71 groupキーワード

          groupキーワードgroupキーワードはInput関数をグループ分けしたいときに使います。 単純に見た目だけのもので、実質的な機能はありません。 「input group "文字列"」としてグループを区切ります。 サンプルコードinput group "----- テクニカル指標の設定 -----"input int SlowPeriod=20; // 長期期間input int FastPeriod=10; // 短期期間input group "----- 資

          MQL5でEA開発 71 groupキーワード

          MQL5でEA開発 70 Input変数

          Input変数Input変数はコンパイルし直すことをせずに、データを入力し、変更することのできる変数です。 前回の記事で売買エントリーの許可を設定する変数を作り、それにtrueやfalseを入力してコンパイルするということをしました。 しかし設定を変更したい場合、trueやfalseを一々入力し直し、コンパイルし直すのは面倒なことです。 そこでInput変数を使うと、コンパイルし直すことなしにデータをいろいろと書き換えることができます。 Input変数を使うには型の前

          MQL5でEA開発 70 Input変数

          MQL5でEA開発 69 売買エントリー許可の設定

          売買エントリー許可の設定買いエントリー、売りエントリーを許可するかどうかを設定します。 強いトレンドが発生したり、日銀の介入を警戒したり、重要なイベントを前にしたりしたとき、買い、または売り、あるいは両方のエントリーを一時的に避けたいということがあると思います。 MT4には買いエントリーのみ許可、売りエントリーのみ許可、両方許可といった設定ができる機能があります。 しかし、MT5ではこの機能はなくなったようです。 そこで、それが可能となるようにコードを書きます。 M

          MQL5でEA開発 69 売買エントリー許可の設定

          MQL5でEA開発 68 有効証拠金の下限の設定

          有効証拠金の下限の設定有効証拠金の下限の設定をします。 有効証拠金が下限を下回ったら新規注文を出せないようにします。 EAが注文を大量に出したり、短期間で大量に売買を繰り返したりするなど想定外の動きをすると、大きな損失になりかねません。 そこで、有効証拠金が下限を下回ったら新規注文を出せないようにすれば安全です。 単に有効証拠金がここまで減ったらトレードを一時停止したいというときにも使えます。 ここではAccountInfoDouble関数を使用しました。 サンプ

          MQL5でEA開発 68 有効証拠金の下限の設定

          MQL5でEA開発 67 ロット数の上限の設定

          ロット数の上限の設定ロット数の上限の設定をします。 ロット数はユニットで管理するつもりでいます。 しかし、データに異常があって、過大なロット数になる可能性がないわけではありません。 そこでロット数の上限を設定して、ロット数がそれより大きくならないようにすると安心です。 ここではMathMin関数を使用しました。 サンプルコードdouble ATR(string symbol, ENUM_TIMEFRAMES timeframe, int period, int sh

          MQL5でEA開発 67 ロット数の上限の設定

          MQL5でEA開発 66 高安でトレーリングストップを実行する関数

          高安でトレーリングストップを実行する関数高安でトレーリングストップを実行する関数を作ります。 買いポジションなら直近安値に、売りポジションなら直近高値+スプレッドにストップを置きます。 名前はTrailingStopHL関数とします。 戻り値はありません。 引数は 第1引数:足の種類。ENUM_TIMEFRAMES型 第2引数:計算期間。int型 第3引数:シフト。int型 第4引数:スプレッド(価格単位)。double型 第5引数:注文間隔(ミリ秒)。in

          MQL5でEA開発 66 高安でトレーリングストップを実行する関数

          MQL5でEA開発 65 値幅でトレーリングストップを実行する関数

          値幅でトレーリングストップを実行する関数値幅でトレーリングストップを実行する関数を作ります。 トレーリングストップにも様々な種類があります。 その中でも値幅でトレーリングストップをするのは最もスタンダードなものでしょう、 実はMT5には値幅でトレーリングストップをする機能が備わっています。 ただ、MQL5でそれを実行するような関数が用意されているわけではないようです。 したがって、それは裁量トレード用の機能ということでしょう。 そこで、値幅でトレーリングストップを

          MQL5でEA開発 65 値幅でトレーリングストップを実行する関数

          MQL5でEA開発 64 条件で絞ったポジション数を計算する関数

          MQL5でEA開発 63 条件で絞ったポジション数を計算する関数 条件で絞ったポジション数を計算する関数条件で絞ったポジション数を計算する関数を作ります。 名前はPositionsTotalByFilters関数とします。 戻り値はint型です。 引数は 第1引数:銘柄。string型 第2引数:タイプ。long型 第3引数:マジックナンバー。long型 とします。 関数の作成にあたって、以下の関数を使用しました。 PositionsTotal関数 Po

          MQL5でEA開発 64 条件で絞ったポジション数を計算する関数

          MQL5でEA開発 63 条件で絞った注文数を計算する関数

          条件で絞った注文数を計算する関数条件で絞った注文数を計算する関数を作ります。 名前はOrdersTotalByFilters関数とします。 戻り値はint型です。 引数は 第1引数:銘柄。string型 第2引数:タイプ。long型 第3引数:マジックナンバー。long型 とします。 関数の作成にあたって、以下の関数を使用しました。 OrdersTotal関数 OrderGetTicket関数 OrderGetInteger関数 OrderGetStr

          MQL5でEA開発 63 条件で絞った注文数を計算する関数