English Deutsch
preview
プライスアクション分析ツールキットの開発(第15回):クォーターズ理論の紹介(I) - Quarters Drawerスクリプト

プライスアクション分析ツールキットの開発(第15回):クォーターズ理論の紹介(I) - Quarters Drawerスクリプト

MetaTrader 5 | 23 6月 2025, 07:52
25 0
Christian Benjamin
Christian Benjamin

内容



はじめに

すべての市場において、価格は周期的に変動します。上昇トレンドでも下降トレンドでも、価格は一定のレンジ内で繰り返し変動します。長年にわたり、トレーダーたちはこうしたパターンを説明するために多くの理論を構築してきました。本連載では、包括的なプライスアクション分析ツールキットを作成しています。本日は、その中からMQL5を使って自動化し、使いやすくかつ優れた成果を実現した革新的なアプローチを紹介します。

本記事のテーマは「クォーターズ理論(Quarters Theory)」です。これはイリアン・ヨトフ(Ilian Yotov)によって開発された理論です。イリアンはTraders Television Networkでの活動で数千人の為替トレーダーやストラテジストに知られている人物で、AllThingsForex.comやTraderTape.comを創設し、毎日放送される人気番組「All Things Forex」のホストも務めています。彼の理論によると、大きな価格変動は2つの「ラージクォーターポイント(Large Quarter Point)」間で起こり、250 pips単位で進行するとされています。この手法は主要なサポート・レジスタンスレベルを明確に示す目印となり、トレーダーに実用的な洞察をもたらします。

この記事は、クォーターズ理論の第一弾です。今回はQuarters Drawerというスクリプトを使ったクォーターの構築に焦点を当てています。これら重要なレベルの描画を自動化することで、反転および継続の重要ゾーンを視覚的に捉えるための実用的な出発点を提供します。今後の展開では、シグナル生成や高度な市場分析を支援する、より強力なツールも開発していく予定です。


コンセプトの概要

クォーターズ理論は、重要な価格範囲をより小さく意味のある区間に分割するテクニカル分析の手法です。この枠組みでは、MajorStep(たとえば、EUR/USDのような通貨ペアで0.1000)が、主要整数値同士の差(たとえば1.2000から1.3000)を定義します。 この範囲はさらに4等分され、ラージクォーター(large quarter)として知られる部分に分割されます。各ラージクォーターは、価格が一時停止、反転、または加速する可能性のある重要なレベルを表しており、トレーダーにとってはサポートやレジスタンスの候補となります。

クォーターズ理論の主要な構成要素には以下が含まれます。

  • メジャーホールナンバー(主要整数値、Major Whole Number) :取引範囲を定める主要なレベル(例:1.2000、1.3000)で、理論のより細かい構造を構築するための参照ポイントとして使用されます。
  • ラージクォーターライン(Large Quarter Lines) :2つのメジャーレベル間の幅を均等に4分割したラインです。これらのラインは価格の動きにおいて重要な中間レベルを示し、転換点や価格のもみ合いが起こる可能性のあるポイントとしてトレーダーに利用されます。
  • スモールクォーターライン(Small Quarter Lines)(オプション) :さらなる精度向上のために、100 pips区間をさらに細かく分割したラインです。細分化されたレベルを提供しますが、主な注目点はあくまでラージクォーターラインにあります。
  • オーバーシュート/アンダーシュート領域 :各ラージクォーターラインの周辺には、価格が一時的に予想レベルを超えたり届かなかったりする微妙なズレ(オーバーシュートやアンダーシュート)が描かれています。これらの領域は調整や反転の可能性を見極めるための重要なサインとなります。

さらに詳しい情報については、以下の図をご覧ください。

クォーターズ

図1:クォーターズ

クォーターズ

図2:クォーター

これらの重要なレベルをチャート上に視覚的に示すことで、クォーターズ理論はトレーダーに価格の動きを体系的に評価する手法を提供します。このアプローチはQuarters Drawerスクリプトで実装されており、異なるスタイルや色で明確にラインを描画することで、主要ライン、ラージクォーターライン、スモールクォーターラインの各グループを識別しやすくしています。この視覚ツールは、重要な価格帯をはっきりと際立たせ、理論の理解と活用を助けます。


MQL5での実装

スクリプトの最初のブロックには、スクリプト名、バージョン、著作権情報、作者プロファイルへのリンクなど、重要な情報を記載したヘッダーコメントが含まれています。これに続いて、プロパティ宣言によって著作権やバージョンといったメタデータが埋め込まれ、厳格なコンパイル設定が適用されます。この組み合わせによって、スクリプトの識別情報が確立され、堅牢なコーディング標準に準拠していることが保証されます。

//+------------------------------------------------------------------+
//|                                              Quarters Drawer.mql5|
//|                                Copyright 2025, Christian Benjamin|
//|                           https://www.mql5.com/ja/users/lynnchris|
//+------------------------------------------------------------------+
#property copyright "Christian Benjamin"
#property link      "https://www.mql5.com/ja/users/lynnchris"
#property version   "1.0"
#property strict

次に、入力パラメータが定義されており、ユーザーがスクリプトの動作や見た目を完全にコントロールできるようになっています。ここでは、MajorStepのようなパラメータで主要価格レベル間の間隔を設定し、ラージクォーターライン、スモールクォーターライン、オーバーシュート/アンダーシュートのマーカーの描画を切り替えるためにブールブール値のフラグを使用します。たとえば、DrawLargeQuartersがtrueに設定されていればスクリプトはラージクォーターラインを描画しますが、falseに切り替えると表示されなくなります。

同様に、DrawSmallQuartersDrawOvershootAreasについても、スモールクォーターラインやオーバーシュートゾーンを表示したくない場合は、それらの値をfalseに切り替えるだけで済みます。これにより、コアロジックを変更することなく表示のカスタマイズが簡単におこなえます。さらに、各種ラインに対して色設定やラインのスタイル/太さのオプションも用意されており、トレーダーは自分の好みや取引戦略に合わせて視覚的な出力を簡単に調整できます。

//---- Input parameters -------------------------------------------------
input double MajorStep          = 0.1000;   // Difference between major whole numbers.
input bool   DrawLargeQuarters  = true;     // Draw intermediate large quarter lines.
input bool   DrawSmallQuarters  = true;     // Draw small quarter lines.
input bool   DrawOvershootAreas = true;     // Mark overshoot/undershoot areas for large quarter lines.

//---- Color settings ---------------------------------------------------
input color  MajorColor         = 0x2F4F4F; // Dark Slate Gray for major lines.
input color  LargeQuarterColor  = 0x8B0000; // Dark Red for large quarter lines.
input color  SmallQuarterColor  = 0x00008B; // Dark Blue for small quarter lines.
input color  OvershootColor     = clrRed;   // Red for overshoot/undershoot lines.

//---- Group style and thickness settings -------------------------------
input ENUM_LINE_STYLE MajorLineStyle       = STYLE_SOLID;
input int    MajorLineWidth                 = 4;
input ENUM_LINE_STYLE LargeQuarterLineStyle  = STYLE_DOT;
input int    LargeQuarterLineWidth          = 3;
input ENUM_LINE_STYLE OvershootLineStyle     = STYLE_DASH;
input int    OvershootLineWidth             = 1;
input ENUM_LINE_STYLE SmallQuarterLineStyle  = STYLE_SOLID;
input int    SmallQuarterLineWidth          = 1;

スクリプト内にある16進数のカラーコードは赤(Red)、緑(Green)、青(Blue)の値を組み合わせて特定の色を表しています。以下はその代表例です。

  • 0x2F4F4F:このコードは「ダークスレートグレー(Dark Slate Gray)」に対応します。2桁ごとのペアが赤、緑、青の成分をそれぞれ表しています。ここでは「2F」(10進数で47)が赤、「4F」(10進数で79)が緑と青に使われており、チャート上の主要なラインに適した、落ち着いた涼しげなグレー調の色となっています。
  • 0x8B0000:このコードは「ダークレッド(Dark Red)」を表します。ここで「8B」(10進数で139)が強い赤成分を示し、緑と青はどちらも「00」(ゼロ)なので、深く濃い赤色になります。この色はスクリプト内でラージクォーターラインを強調するために使われています。
  • 0x00008B:このコードは「ダークブルー(Dark Blue)」を示します。この場合、赤と緑の成分は「00」で、青成分が「8B」(10進数で139)となり、深い青色を作り出します。これはスモールクォーターラインに適用され、はっきりとした視覚的なコントラストを提供します。

これらのハードコードされた16進数の値に加えて、スクリプトではあらかじめ定義された定数clrRedも使用しています。16進数コードを手動で指定する代わりに、この組み込み定数を使うことで、通常は赤色(RGB値でいうと255, 0, 0)を表現できます。たとえば、スクリプトではオーバーシュートの色を次のように設定しています。

input color OvershootColor = clrRed;

入力パラメータの後、スクリプトにはチャート上に水平ラインを描画する専用の関数が用意されています。この関数はまず、指定された名前のラインがすでに存在するかどうかを確認し、重複を避けるために必要に応じて削除します。その後、指定された価格レベルに新しい水平ラインを作成し、定義された色、スタイル、幅を適用します。各ラインがチャート全体にわたって伸びるようにすることで、このモジュール化された関数はスクリプト内で複数のラインを一貫して描画する作業を簡単にしています。

//+------------------------------------------------------------------+
//| DrawHorizontalLine: Creates or replaces a horizontal line        |
//+------------------------------------------------------------------+
void DrawHorizontalLine(string name, double price, color lineColor, int width, ENUM_LINE_STYLE style)
{
   // Delete the object if it already exists
   if(ObjectFind(0, name) != -1)
      ObjectDelete(0, name);

   // Create a new horizontal line object
   if(!ObjectCreate(0, name, OBJ_HLINE, 0, 0, price))
   {
      Print("Failed to create line: ", name);
      return;
   }

   // Set properties: color, style, width, and extension to the right
   ObjectSetInteger(0, name, OBJPROP_COLOR, lineColor);
   ObjectSetInteger(0, name, OBJPROP_STYLE, style);
   ObjectSetInteger(0, name, OBJPROP_WIDTH, width);
   ObjectSetInteger(0, name, OBJPROP_RAY_RIGHT, true);
}

スクリプトの主な実行はOnStart関数から始まります。ここでは、現在の銘柄とそのBid価格を取得します。このステップは非常に重要で、以降のすべての計算は有効な市場価格に依存しています。Bid価格が取得できない場合は、エラーを防ぐためにスクリプトは早期に終了し、有効なデータがある場合にのみ処理が続行されるようになっています。

void OnStart()
{
   // Get current symbol price
   string symbol = _Symbol;
   double currentPrice = SymbolInfoDouble(symbol, SYMBOL_BID);
   if(currentPrice == 0)
      return;

現在の価格を取得した後、スクリプトは主要価格レベルを計算し、それを主要な参照ポイントとして使用します。まず、現在の価格をMajorStepで定義された最も近い間隔に切り下げて下限レベルを決定し、同じステップを加えることで上限レベルを算出します。これらの計算されたレベルが構造化された枠組みを作り出し、以降の視覚的グリッドの明確な境界を設定します。

   // Calculate the major range based on the current price and MajorStep
   double lowerMajor = MathFloor(currentPrice / MajorStep) * MajorStep;
   double upperMajor = lowerMajor + MajorStep;

これらの主要価格レベルを使って、スクリプトは下限と上限の境界に2本の目立つ水平ラインを描画します。これらの主要ラインは、特定の色や太さ、ラインのパターンでスタイリングされており、チャート上でひと目で識別できるようになっています。これらのラインはチャートの視覚構造の骨格となり、トレーダーが重要なサポートやレジスタンスのエリアを素早く見つけるのに役立ちます。

   // Draw Major Whole Number lines at lower and upper boundaries
   DrawHorizontalLine("MajorLower", lowerMajor, MajorColor, MajorLineWidth, MajorLineStyle);
   DrawHorizontalLine("MajorUpper", upperMajor, MajorColor, MajorLineWidth, MajorLineStyle);

ラージクォーターラインを描画するオプションが有効になっている場合、スクリプトは主要な間隔を4等分します。主要な境界の間に中間レベルを計算し、その位置に水平ラインを描画します。さらに、オーバーシュート/アンダーシュートのマーカーも有効になっている場合は、それぞれのラージクォーターラインの上下に追加のラインが描かれます。これらの追加マーカーは、価格が一時的に予想範囲を超えて動く可能性のあるエリアを強調し、トレーダーにとって価格の反転の兆候となる貴重な情報を提供します。

   // Draw Large Quarter lines and overshoot/undershoot lines if enabled
   if(DrawLargeQuarters)
   {
      double LQIncrement = MajorStep / 4.0;
      for(int i = 1; i < 4; i++)
      {
         double level = lowerMajor + i * LQIncrement;
         string objName = "LargeQuarter_" + IntegerToString(i);
         DrawHorizontalLine(objName, level, LargeQuarterColor, LargeQuarterLineWidth, LargeQuarterLineStyle);

         if(DrawOvershootAreas)
         {
            double smallQuarter = MajorStep / 40.0;
            DrawHorizontalLine("Overshoot_" + IntegerToString(i) + "_up", level + smallQuarter, OvershootColor, OvershootLineWidth, OvershootLineStyle);
            DrawHorizontalLine("Undershoot_" + IntegerToString(i) + "_down", level - smallQuarter, OvershootColor, OvershootLineWidth, OvershootLineStyle);
         }
      }
   }

さらなる詳細を表示するために、スモールクォーターラインを描画するオプションも用意されています。このオプションが有効である場合、主要な間隔を10分割し、さらに各セグメントを細かく細分化します。これにより、より細やかなグリッドが作られ、微妙な価格変動を捉えることができるため、トレーダーは正確なエントリーやエグジットポイントを見極めるのに役立つ詳細な視点を得られます。

   // Draw Small Quarter lines if enabled
   if(DrawSmallQuarters)
   {
      double segStep = MajorStep / 10.0;
      double smallQuarter = segStep / 4.0;
      for(int seg = 0; seg < 10; seg++)
      {
         double segStart = lowerMajor + seg * segStep;
         for(int j = 1; j < 4; j++)
         {
            double level = segStart + j * smallQuarter;
            string objName = "SmallQuarter_" + IntegerToString(seg) + "_" + IntegerToString(j);
            DrawHorizontalLine(objName, level, SmallQuarterColor, SmallQuarterLineWidth, SmallQuarterLineStyle);
         }
      }
   }

視覚的な強化を締めくくるために、スクリプトはチャートに常に表示されるラベル(ロゴ)を追加します。このラベルにはスクリプトの名前、バージョン、作者情報が表示され、クレジットとしてだけでなく、ユーザーにとっての簡単な参照にもなります。ラベルを設置する前に、スクリプトは既存のラベルがないかどうかを確認して重複を防ぎ、その後、見やすさを考慮したフォントサイズや色設定でチャートの右上隅に配置します。

   // Create a persistent label (logo) in the top-right corner
   if(ObjectFind(0, "ScriptLogo") != -1)
      ObjectDelete(0, "ScriptLogo");
   if(ObjectCreate(0, "ScriptLogo", OBJ_LABEL, 0, 0, 0))
   {
      string logoText = "Script: DrawQuarters_DarkBold\nv1.04\nby Christian Benjamin";
      ObjectSetString(0, "ScriptLogo", OBJPROP_TEXT, logoText);
      ObjectSetInteger(0, "ScriptLogo", OBJPROP_COLOR, clrYellow);
      ObjectSetInteger(0, "ScriptLogo", OBJPROP_FONTSIZE, 14);
      ObjectSetInteger(0, "ScriptLogo", OBJPROP_CORNER, CORNER_RIGHT_UPPER);
      ObjectSetInteger(0, "ScriptLogo", OBJPROP_XDISTANCE, 80);
      ObjectSetInteger(0, "ScriptLogo", OBJPROP_YDISTANCE, 10);
   }

最後に、スクリプトは再描画コマンドでチャートを更新し、描画されたすべてのオブジェクト(ラインやラベル)が即座に表示されるようにします。この最終ステップは非常に重要で、最新の市場データやカスタム設定を反映させ、技術分析における完全かつ最新の視覚ツールを提供します。

   // Redraw the chart to display all objects
   ChartRedraw();
}


MQL5コード

//+------------------------------------------------------------------+
//|                                              Quarters Drawer.mql5|
//|                                Copyright 2025, Christian Benjamin|
//|                           https://www.mql5.com/ja/users/lynnchris|
//+------------------------------------------------------------------+
#property copyright "Christian Benjamin"
#property link      "https://www.mql5.com/ja/users/lynnchris"
#property version   "1.0"
#property strict

//---- Input parameters -------------------------------------------------
input double MajorStep          = 0.1000;   // Difference between major whole numbers.
input bool   DrawLargeQuarters  = true;     // Draw intermediate large quarter lines.
input bool   DrawSmallQuarters  = true;    // Draw small quarter lines.
input bool   DrawOvershootAreas = true;     // Mark overshoot/undershoot areas for large quarter lines.

//---- Color settings ---------------------------------------------------
input color  MajorColor         = 0x2F4F4F; // Dark Slate Gray for major lines.
input color  LargeQuarterColor  = 0x8B0000; // Dark Red for large quarter lines.
input color  SmallQuarterColor  = 0x00008B; // Dark Blue for small quarter lines.
input color  OvershootColor     = clrRed;   // Red for overshoot/undershoot lines.

//---- Group style and thickness settings -------------------------------
input ENUM_LINE_STYLE MajorLineStyle       = STYLE_SOLID;
input int    MajorLineWidth                 = 4;
input ENUM_LINE_STYLE LargeQuarterLineStyle  = STYLE_DOT;
input int    LargeQuarterLineWidth          = 3;
input ENUM_LINE_STYLE OvershootLineStyle     = STYLE_DASH;
input int    OvershootLineWidth             = 1;
// For small quarter lines, we now use a continuous (solid) style.
input ENUM_LINE_STYLE SmallQuarterLineStyle  = STYLE_SOLID;
input int    SmallQuarterLineWidth          = 1;

//+------------------------------------------------------------------+
//| DrawHorizontalLine: Creates or replaces a horizontal line        |
//+------------------------------------------------------------------+
void DrawHorizontalLine(string name, double price, color lineColor, int width, ENUM_LINE_STYLE style)
  {
   if(ObjectFind(0, name) != -1)
      ObjectDelete(0, name);

   if(!ObjectCreate(0, name, OBJ_HLINE, 0, 0, price))
     {
      Print("Failed to create line: ", name);
      return;
     }

   ObjectSetInteger(0, name, OBJPROP_COLOR, lineColor);
   ObjectSetInteger(0, name, OBJPROP_STYLE, style);
   ObjectSetInteger(0, name, OBJPROP_WIDTH, width);
   ObjectSetInteger(0, name, OBJPROP_RAY_RIGHT, true);
  }

//+------------------------------------------------------------------+
//| Script entry point                                               |
//+------------------------------------------------------------------+
void OnStart()
  {
// Get current symbol price
   string symbol = _Symbol;
   double currentPrice = SymbolInfoDouble(symbol, SYMBOL_BID);
   if(currentPrice == 0)
      return;

// Calculate the major range
   double lowerMajor = MathFloor(currentPrice / MajorStep) * MajorStep;
   double upperMajor = lowerMajor + MajorStep;

// Draw Major Whole Number lines
   DrawHorizontalLine("MajorLower", lowerMajor, MajorColor, MajorLineWidth, MajorLineStyle);
   DrawHorizontalLine("MajorUpper", upperMajor, MajorColor, MajorLineWidth, MajorLineStyle);

// Draw Large Quarter lines and their overshoot/undershoot lines
   if(DrawLargeQuarters)
     {
      double LQIncrement = MajorStep / 4.0;
      for(int i = 1; i < 4; i++)
        {
         double level = lowerMajor + i * LQIncrement;
         string objName = "LargeQuarter_" + IntegerToString(i);
         DrawHorizontalLine(objName, level, LargeQuarterColor, LargeQuarterLineWidth, LargeQuarterLineStyle);

         if(DrawOvershootAreas)
           {
            double smallQuarter = MajorStep / 40.0;
            DrawHorizontalLine("Overshoot_" + IntegerToString(i) + "_up", level + smallQuarter, OvershootColor, OvershootLineWidth, OvershootLineStyle);
            DrawHorizontalLine("Undershoot_" + IntegerToString(i) + "_down", level - smallQuarter, OvershootColor, OvershootLineWidth, OvershootLineStyle);
           }
        }
     }

// Draw Small Quarter lines if enabled (continuous lines, without overshoot/undershoot)
   if(DrawSmallQuarters)
     {
      double segStep = MajorStep / 10.0;
      double smallQuarter = segStep / 4.0;
      for(int seg = 0; seg < 10; seg++)
        {
         double segStart = lowerMajor + seg * segStep;
         for(int j = 1; j < 4; j++)
           {
            double level = segStart + j * smallQuarter;
            string objName = "SmallQuarter_" + IntegerToString(seg) + "_" + IntegerToString(j);
            DrawHorizontalLine(objName, level, SmallQuarterColor, SmallQuarterLineWidth, SmallQuarterLineStyle);
           }
        }
     }

// Create a persistent label (logo) in the top-right corner
   if(ObjectFind(0, "ScriptLogo") != -1)
      ObjectDelete(0, "ScriptLogo");
   if(ObjectCreate(0, "ScriptLogo", OBJ_LABEL, 0, 0, 0))
     {
      string logoText = "Script: DrawQuarters_DarkBold\nv1.04\nby Christian Benjamin";
      ObjectSetString(0, "ScriptLogo", OBJPROP_TEXT, logoText);
      ObjectSetInteger(0, "ScriptLogo", OBJPROP_COLOR, clrYellow);
      ObjectSetInteger(0, "ScriptLogo", OBJPROP_FONTSIZE, 14);
      ObjectSetInteger(0, "ScriptLogo", OBJPROP_CORNER, CORNER_RIGHT_UPPER);
      ObjectSetInteger(0, "ScriptLogo", OBJPROP_XDISTANCE, 80);
      ObjectSetInteger(0, "ScriptLogo", OBJPROP_YDISTANCE, 10);
     }

   ChartRedraw();
  }
//+------------------------------------------------------------------+



結果

結果を調べる前に、スクリプトを作成してコンパイルする方法を説明します。MetaEditorを開き、[新規作成]を選択してから[スクリプト]を選択します。スクリプトの名前を入力し、コードの記述を開始します。スクリプトをコンパイルします。エラーが表示された場合は、コンパイルが成功するまで修正します。コンパイルしたら、チャート上でスクリプトをテストします。これはEAではないため、残高に影響を与えることなく、デモモードでもライブモードでもライブチャートで実行できます。

このセクションでは、視覚的に理解しやすくするためにいくつかの図を用意しています。これから各図をステップごとに紹介します。最初の図はAUD/USDペアでのテストを示しています。そのテストでは、DrawLargeQuarters を有効にし、オーバーシュートおよびアンダーシュートエリアも有効にしました。一方で、DrawSmallQuartersはfalseに設定しています。

//---- Input parameters -------------------------------------------------
input double MajorStep          = 0.1000;   // Difference between major whole numbers.
input bool   DrawLargeQuarters  = true;     // Draw intermediate large quarter lines.
input bool   DrawSmallQuarters  = false;    // Draw small quarter lines.
input bool   DrawOvershootAreas = true;     // Mark overshoot/undershoot areas for large quarter lines.

下の図2を見てみましょう。スクリプトを追加した方法と記録された結果が表示されます。価格がクォーターとどのように相互作用し、そのオーバーシュートやアンダーシュートが発生するかを確認します。

Quartile Drawer

図2:AUDUSDのクォーター

以下は同じペアでキャプチャしたスクリーンショットです。グラフ上でクォーターの影響を強調表示しました。結果は明らかです。市場はラージクォーターラインのレベルでサポートとレジスタンスを見つけています。これらのラージクォーターラインを明確に視覚化するために、オーバーシュートラインとスモールクォーターラインのオプションはfalseに設定しました。

//---- Input parameters -------------------------------------------------
input double MajorStep          = 0.1000;   // Difference between major whole numbers.
input bool   DrawLargeQuarters  = true;     // Draw intermediate large quarter lines.
input bool   DrawSmallQuarters  = false;    // Draw small quarter lines.
input bool   DrawOvershootAreas = false;     // Mark overshoot/undershoot areas for large quarter lines.

以下の図03を参照してください。

ラージクォーター

図3:ラージクォーター

さらに拡大表示したので、アンダーシュートやオーバーシュートを含め、価格がラージクォーターラインとどのように相互作用するかがはっきりとわかります。

クォーターシュート

図4:オーバーシュートとアンダーシュート

最後に、EUR/USDでのスクリプトの動作を見てみましょう。すべてのFXトレーダーが注目する重要なレベルが、クォーターラインによって明確に可視化されています。

EURUSD

図5:EUR/USDクォーター

以下の本を参照してください。  The_Quarters_Theory_-_Ilian_Yotov



結論

このスクリプトの効果は皆さんにもきっと実感いただけると思います。クォーターラインを描画し、手動では時間がかかる計算を自動でおこなってくれます。特に注目すべき点は、クォーターラインがサポートや反転のレベルとして機能することです。ラージクォーターライン、つまり主要な下限・上限レベルは重要なレジスタンスおよびサポートとなり、スモールクォーターラインは補助的なレベルとして働きます。この初期のアプローチは、自動分析の強力な出発点と言えるでしょう。今後、この理論をさらに深めながら、より多くのツールを開発していくことを楽しみにしています。ご意見やご提案がありましたら、ぜひ共有してください。

日付ツール名 詳細バージョン アップデート 備考
01/10/24ChartProjector前日のプライスアクションをゴースト効果でオーバーレイするスクリプト1.0初回リリースツール番号1
18/11/24Analytical Comment前日の情報を表形式で提供し、市場の将来の方向性を予測する1.0初回リリースツール番号2
27/11/24Analytics Master2時間ごとに市場指標を定期的に更新 1.01v.2ツール番号3
02/12/24Analytics Forecaster Telegram統合により、2時間ごとに市場指標を定期的に更新1.1v.3ツール番号4
09/12/24Volatility Navigatorボリンジャーバンド、RSI、ATR指標を使用して市場の状況を分析するEA1.0初回リリースツール番号5
19/12/24Mean Reversion Signal Reaper 平均回帰戦略を用いて市場を分析し、シグナルを提供する 1.0 初回リリース ツール番号6 
9/01/25 Signal Pulse 多時間枠分析ツール1.0 初回リリース ツール番号7 
17/01/25 Metrics Board 分析用のボタン付きパネル 1.0 初回リリースツール番号8 
21/01/25External Flow外部ライブラリによる分析1.0 初回リリースツール番号9 
27/01/25VWAP出来高加重平均価格  1.3 初回リリース ツール番号10 
02/02/25 Heikin Ashi トレンドの平滑化と反転シグナルの識別 1.0 初回リリース ツール番号11
04/02/25 FibVWAP Python分析によるシグナル生成 1.0 初回リリース ツール番号12
14/02/25 RSI DIVERGENCE プライスアクションとRSIのダイバージェンス 1.0 初回リリース ツール番号13 
17/02/25 Parabolic Stop and Reverse (PSAR) PSAR戦略の自動化1.0初回リリース ツール番号14
20/02/25 Quarters Drawerスクリプト チャートにクォーターレベルを描く 1.0 初回リリース ツール番号15 

MetaQuotes Ltdにより英語から翻訳されました。
元の記事: https://www.mql5.com/en/articles/17250

添付されたファイル |
MQL5での取引戦略の自動化(第10回):トレンドフラットモメンタム戦略の開発 MQL5での取引戦略の自動化(第10回):トレンドフラットモメンタム戦略の開発
この記事では、「トレンドフラットモメンタム(Trend Flat Momentum)戦略」のためのエキスパートアドバイザー(EA)をMQL5で開発します。移動平均線のクロスオーバーに、RSI(相対力指数)とCCI(商品チャネル指数)といったモメンタム系のフィルターを組み合わせて、トレードシグナルを生成します。また、バックテストの方法や、実運用でのパフォーマンス向上のための改善案についても取り上げます。
MQL5経済指標カレンダーを使った取引(第6回):ニュースイベント分析とカウントダウンタイマーによるトレードエントリーの自動化 MQL5経済指標カレンダーを使った取引(第6回):ニュースイベント分析とカウントダウンタイマーによるトレードエントリーの自動化
本記事では、MQL5経済指標カレンダーを活用して、ユーザー定義のフィルターと時間オフセットに基づいた自動取引エントリーを実装します。対象となる経済指標イベントを検出し、予想値と前回値の比較により、買うか売るかの判断を下します。動的なカウントダウンタイマーは、ニュース公開までの残り時間を表示し、取引後には自動的にリセットされます。
エラー 146 (「トレードコンテキスト ビジー」) と、その対処方法 エラー 146 (「トレードコンテキスト ビジー」) と、その対処方法
この記事では、MT4において複数のEAの衝突をさける方法を扱います。ターミナルの操作、MQL4の基本的な使い方がわかる人にとって、役に立つでしょう。
知っておくべきMQL5ウィザードのテクニック(第55回):PER付きSAC 知っておくべきMQL5ウィザードのテクニック(第55回):PER付きSAC
強化学習において、リプレイバッファは特にDQNやSACのようなオフポリシーアルゴリズムにおいて重要な役割を果たします。これにより、メモリバッファのサンプリング処理が注目されます。たとえばSACのデフォルト設定では、このバッファからランダムにサンプルを取得しますが、Prioritized Experience Replay (PER)を用いることで、TDスコア(時間差分誤差)に基づいてサンプリングを調整することができます。本稿では、強化学習の意義を改めて確認し、いつものように交差検証ではなく、この仮説だけを検証する、ウィザードで組み立てたエキスパートアドバイザー(EA)を用いて考察します。