English Русский 中文 Español Deutsch Português 한국어 Français Italiano Türkçe
preview
ウィリアムズPRによる取引システムの設計方法を学ぶ

ウィリアムズPRによる取引システムの設計方法を学ぶ

MetaTrader 5トレーディング | 25 10月 2022, 08:54
280 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

はじめに

この、最も人気のあるテクニカル指標に基づいて取引システムを設計する方法についての連載の新しい記事では、新しいテクニカル指標であるウィリアムズ・パーセント・レンジ(WPR)に基づいて、様々なシンプルな取引システムを設計する方法を学びます。さらに、WPRテクニカル指標を詳細に理解し、その背後にある主な考え方に基づいて、それを効果的に使用する方法を学びます。物事の根本を理解することができれば、それを効果的に使うことができるだけでなく、主な概念や関連するツールを中心として新しい洞察やアイデアを見出すことができ、それが取引から特別でより良い結果を得る理由となると、私は信じています。そこで、さらに理解を深めるために、物事の根源を学び、教えてみるというアプローチをしています。

この記事では、次のような多くのトピックを通して、そのことを学びます。

  1. ウィリアムズの%Rの定義
  2. ウィリアムズの%R戦略
  3. ウィリアムズの%R戦略の設計図
  4. ウィリアムズの%R取引システム
  5. 結論

最初のトピックである「ウィリアムズの%Rの定義」を通して、ウィリアムズの%Rとは何か、何を測定するのか、そしてどのように手動で計算することができるのかを学びます。そして、この指標の背後にある主な概念に基づく簡単な戦略を通じて、この指標をどのように適切に使用できるかを、「ウィリアムズの%R戦略」を通じて学びます。この記事のメインタスクである、この指標による取引システムの作成に役立つように、言及した各戦略のステップバイステップの設計図を作成します。この設計図は、「ウィリアムズの%R戦略の設計図」を通して作成されます。次に、この記事で最も興味深いトピックは、「ウィリアムズの%R取引システム」を通じて、前述の戦略を基にした取引システムを作成することです。

この後、このテクニカル指標の基本を学び、さらにこの指標を使った簡単な売買システムを作成し、MetaTrader 5でこの売買システムを使い、自動的にシグナルを発生させることができるようになると考えています。すべて自分でやってみると、理解が深まるのでぜひやってみてください。また、シグナル戦略を実際の口座で使用する前に、それが自分にとって有用であることを確認するためにテストするようにしてください。

MetaTrader 5取引ターミナルと内蔵のMetaEditorを使って、エキスパートアドバイザー(EA)の形で取引システムを作成するためのMQL5コードを記述します。MetaTrader 5を入手する方法やMQL5コードの書き方がわからない場合は、詳細について以前の記事で「MetaEditorでMQL5コードを書く」のトピックをお読みください。

免責条項:すべての情報は「現状有姿」で提供され、情報提供のみを目的としており、取引目的やアドバイスを目的としたものではありません。いかなる結果も保証するものではありません。読者がこれらの資料を自分の取引口座で使用する場合、自己責任でおこなってください。

さて、より良い結果を得るために、取引の転換点となるような新しいツールの学習を始めましょう。


ウィリアムズの%Rの定義

冒頭で述べたように、ウィリアムズの%R指標について詳しく学びます。ウィリアムズの%R (WPR)は、ラリー・ウィリアムズが開発したモメンタム指標です。WPRはストキャスティックオシレータの逆で、スケールが違うだけで、ストキャスティックと同じように使うことができます。ストキャスティクスについて詳しく知りたい方は、私が以前書いた「ストキャスティクスで取引システムを設計する方法を学ぶ」をご覧ください。WPRは、終値と高値・安値のレンジの関係を測定するものです。また、WPR指標は0~-100の間で推移します。WPRはモメンタム指標であるため、トレンドの強さを測定するためにも使用されることがあります。トレンドやトレンドの種類について詳しく知りたい方は、以前の記事から「トレンドの定義」のトピックを読むと、その理解に役立つと思いますので、読んでみてください。この指標は、重要なレベルである-80、-20、中間点の-50をみることで意味を持つことができます。

この記事の「戦略」でおこなうように、この指標と他のテクニカルツール、例えばプライスアクションツール、チャートパターン、出来高、移動平均などを組み合わせてみることが重要です。これは、研究対象の商品についてより多くの視点を明確にすることによって、適切な判断を下すために大いに役立ちます。

次に、WPRという指標をどのように算出するのか、その方法を知っておく必要があります。簡単に言うと、以下の手順で計算することができます。

  1. 最大高値=算出期間中の高値の最大値を算出する
  2. 最小安値=算出期間中の安値の最小値を算出する
  3. WPR = (最大高値 - 終値)/(最大高値 - 最小安値) * -100

より理解を深めるために、それを適用して WPR を計算する実際の値を含む例を確認する必要があります。

期間 高値 安値 終値
1 1.078 1.0678 1.0733
2 1.0788 1.0726 1.0777
3 1.0766 1.0697 1.0727
4 1.0733 1.0662 1.0724
5 1.074 1.0642 1.068
6 1.0749 1.0661 1.0734
7 1.0698 1.0558 1.0689
8 1.0599 1.0532 1.056
9 1.0608 1.046 1.0586
10 1.0565 1.046 1.0466
11 1.0556 1.0429 1.0547
12 1.0444 1.0388 1.0431
13 1.0421 1.035 1.0411
14 1.053 1.0353 1.0379
15 1.0577 1.0502 1.0511
16 1.0586 1.0525 1.0527
17 1.0594 1.0495 1.0555
18 1.0601 1.0482 1.0551
19 1.0642 1.0493 1.054
20 1.0632 1.0505 1.0621
21 1.0579 1.0491 1.052
22 1.0567 1.0491 1.051
23 1.0602 1.0381 1.0547
24 1.0509 1.0359 1.0443
25 1.0486 1.0396 1.0414
26 1.052 1.04 1.0408
27 1.0644 1.0505 1.0515
28 1.0775 1.0611 1.0614
29 1.0749 1.0671 1.0714
30 1.0715 1.0652 1.0699

では、次のように同じ手順を踏んで、WPRを計算します。なお、ここではデフォルトの設定である期間を14とします。

1 - 高値の最大値

HH値

2 - 安値の最小値

LL値

3 - WPR

WPRの値を算出しました。0から-100の間で振動する線になり、前述したようにモメンタムを測定することができます。この指標はMetaTrader 5ターミナルに内蔵されており、利用可能な指標の中からそれを選択するだえなので、手動で計算する必要はありません。

W_Rの挿入

その後、そのパラメータを決定するためのウィンドウが以下のように表示されます。

W_Rパラメータ

1 - 希望する期間を設定する

2 - 指標の色を決定する

3 - 指標のスタイルを決定する

4 - WPR線の太さを決定する

また、以下のように[レベル]タブで指標のレベルをコントロールすることができます。

W_Rlvls

先ほどの図では、高値と安値を記録する重要なレベルである-80と-20の2つのレベルがあることがわかります。また、[追加]を押して-50レベルを追加し、チャート上の指標ウィンドウに表示するレベルを決定するなど、有用と思われるレベルも追加することができます。

すべてのパラメータを決定し、[OK]を押すと、以下のようにチャートに指標が接続されます。

W_Rの接続

前の図でわかるように、チャート下のウィンドウの黒い線は、0と-100の間で振動してモメンタムを計っています。また、中点の-50は重要なレベルです。WPRが-50を上回ると計算期間中の高値・安値のレンジの上半分で取引されることを意味し、逆にWPRが-50を下回ると計算期間中の高値・安値のレンジの下半分で取引されることを意味するので、値動きに対する有意義な洞察が得られます。その他の場合、指標が-80以下の領域にあれば、価格が安値近くで取引されていることを示し指標値は低くなりますが、-20レベル以上の領域にあれば、価格が高値近くで取引されていることを示し指標値は高くなります。これらの-80と-20のレベルは非常に重要な領域です。後で見るように、価格が買われ過ぎと売られ過ぎの領域に到達することを示しているからです。


ウィリアムズの%R戦略

このセクションでは、ウィリアムズ%Rの主な概念に基づいた簡単な戦略を通して、ウィリアムズ%Rの使い方を学びます。ウィリアムズ%R指標の背後にある考えに基づいて使用することができる3つの異なる戦略を学びます。最初の戦略は「Williams %R - OB & OS」、2番目の戦略は「Williams %R - Crossover」、3番目の戦略は、「Williams %R - MA」と呼ぶことにしましょう。

  • 戦略1:Williams %R - OB & OS

この戦略では、特定の条件下で買われ過ぎや売られ過ぎを通知する必要があります。ウィリアムズ%Rの値が-80レベルを下回る場合は、売られ過ぎのシグナルとなり、ウィリアムズ%Rの値が-20レベルを上回る場合は、買われ過ぎのシグナルとなります。

この戦略は、価格が買われ過ぎや売られ過ぎの領域に達したときに通知してくれるので、モメンタムの状態を読み取ることによって、今後の動きを予想するのに役立ちます。

WPR値 < -80 → 売られ過ぎ

WPR値 > -20 → 買われ過ぎ

  • 戦略2:Williams %R - Crossover

この戦略によると、現在のウィリアムズ%Rと前回のウィリアムズ%R (WPR)、そして-50レベルのクロスオーバーをもとに、売買シグナルがあった場合にシグナルを得る必要があります。前回のWPRが-50を下回り、今回のWPRが-50を上回る場合、買いシグナルとなります。前回のWPRが-50を上回り、今回のWPRが-50を下回る場合、売りシグナルとなります。

この戦略は、非常に重要なレベルである-50とのクロスオーバーに基づいて売買シグナルを生成するため有用であり、これらのシグナルを確認するために別のテクニカルツールを組み合わせるとより効果的です。

前回のWPR < -50かつ現在のWPR > -50 → 買いシグナル

前回のWPR>-50かつ現在のWPR < -50 → 売りシグナル

  • 戦略3:ウィリアムズ%R - MA

この戦略によると、売買シグナルが出たときにも通知を受ける必要がありますが、それは別の条件に基づいています。売値が移動平均値を上回り、ウィリアムズ%R値が-50レベル上回るときに買いシグナルが出ます。買値が移動平均値より低く、ウィリアムズ%Rの値が移動平均値を下回ったら売りシグナルを出す必要があります。

この戦略では、移動平均という別のテクニカルツールを組み合わせることで、現在のシグナルを確認し、偽のブレイクアウトをフィルタリングするため、その条件に基づいてより明確な売買シグナルを得ることができます。

売値 > MA値かつWPR > -50 → 買いシグナル

買値 < MA値かつWPR < -50 → 売りシグナル


ウィリアムズの%R戦略の設計図

このトピックでは、言及されたすべての戦略について、取引システムを作成するためのステップバイステップの設計図を設計します。私は、このステップは、取引システムの作成プロセスにおいて、整理されたステップを通じて、何をすべきかを理解するために、非常に重要なステップであると考えています。

  • 戦略1:Williams %R - OB & OS

この戦略に基づいて、取引システムを作成するためのステップバイステップの設計図を設計します。プログラムまたはEAがティックごとに3つの値を確認し、互いの位置を比較する必要があります。これらの3つの値は現在のWPR、-80および-20レベルです。EAは、前回の比較の後、現在のWPR値が-80レベルを下回る場合、「売られ過ぎ」のコメントをチャートに生成する必要があると判断します。もう1つのシナリオは、現在のWPR値が-20レベルを上回る場合で、EAがチャートに「買われ過ぎ」と別のコメントを生成する必要があります。

そのための設計図を以下に示します。

Williams_R-OB_OSの設計図

 

  • 戦略2:Williams %R - Crossover

この戦略に基づいて前回のWPR、今回のWPR、-50の3つの値を確認し、売買シグナルを生成するプログラムが必要です。このシグナルは、EAがティックごとにこれら3つの値を確認し、前回と今回のWPR値の-50レベルからの位置を比較することで生成されます。前述したように、前回のWPRが-50を下回り、現在のWPR値が -50 レベルを上回る場合、EAは買いシグナル、ウィリアムズ%R値、および前回のウィリアムズ%R値をチャートのコメントとして生成します。また、前回のWPRを上回り、今回のWPRが-50を下回る場合、売りシグナル、ウィリアムズ%Rの値、前回のウィリアムズ%Rの値がWPRチャート上にコメントとして表示されます。

この戦略の設計図をは次のようになります。

Williams %R - Crossover」の設計図

  • 戦略3:Williams %R - MA

この戦略では、他の条件や他の測定値に基づいて売買シグナルを生成する取引システムを作成する必要があります。そこで、売値、買値、WPR値、移動平均、-50レベルを継続的に確認し、これらのシグナルを生成することができるシンプルなEAを作成する必要があります。EAは、売値が移動平均を上回り、WPR値が-50レベルを上回りと判断した場合、買いシグナル、ウィリアムズ%R値、指数移動平均値をチャート上にコメントとして生成する必要があります。また、買値が移動平均を下回り、WPRが-50レベルを下回る場合、売りシグナル、ウィリアムズ%R値、指数移動平均値をコメントとしてチャート上に生成します。

以下は、このような取引システムを構築するための設計図です。

Williams_R _ MAの設計図

ウィリアムズの%R取引システム

このセクションでは、この記事で最も興味深い部分である、各戦略に対する取引システムの作成方法を学びます。まず、ウィリアムズの%Rの値によってチャートにコメントを生成する簡単な取引システムを作成し、すべての戦略のベースとして使用することにします。

以下は、この取引システムのコードの書き方です。

  • 値を小数で表すdoubleの配列を作成します。
double WPArray[];
  • 作成した配列を、ブール値(true/false)を返すArraySetAsSeries関数を使って、現在のデータから並び替えます。パラメータはarray[]とflagです。
ArraySetAsSeries(WPArray,true);
  • Williams'%R定義のWPDefに整数変数を作成した後、iWPRを使ってWilliams'%Rプロパティを定義します。iWPR関数はLarryWilliams'PercentRange指標のハンドルを返します。パラメータは、銘柄名、期間、平均化期間です。
    • ここでは、現在使用されている銘柄に適用される(_Symbol)と、現在使用されている時間枠に適用される(_Period)を使用することにします。
int WPDef = iWPR(_Symbol,_Period,14);
  • CopyBuffer関数を使用して、作成した配列に価格データをコピーします。コピーしたデータ数、またはエラーがあった場合は-1を返します。パラメータは、指標ハンドル、指標バッファ時間、開始位置、コピー量、コピー先配列です。
CopyBuffer(WPDef,0,0,3,WPArray);
  • 現在のウィリアムズの%Rの値をWPValueというdouble変数にした後、NormalizeDouble関数を使って現在のデータのウィリアムズの%Rの値を取得します。NormalizeDouble関数のパラメータは、正規化された数値と小数点以下の桁数です。
double WPVal = NormalizeDouble(WPArray[0],2);
  • Comment関数を使って、ウィリアムズの%Rの値をチャート上にコメントとして生成します。
Comment("Williams' %R Value is",WPVal);

次は、以前の取引システムの完全なコード行です。

//+------------------------------------------------------------------+
//|                                            Simple Williams%R.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double WPArray[];

   ArraySetAsSeries(WPArray,true);

   int WPDef = iWPR(_Symbol,_Period,14);

   CopyBuffer(WPDef,0,0,3,WPArray);

   double WPVal = NormalizeDouble(WPArray[0],2);

   Comment("Williams' %R Value is",WPVal);

  }
//+------------------------------------------------------------------+

このコードをコンパイルした後、ナビゲータウィンドウの「Expert Advisors」フォルダファイルに、次の図と同じようにEAが表示されます。

WPRナビゲータ1

実行したいチャートにドラッグ&ドロップすることで、取引システムのウィンドウが以下のように表示されます。

Simple W_Rのウィンドウ

[OK]を押すと、次のようにチャートに接続されます。

Simple W_Rの接続

以下は、この取引システムにより生成されたシグナルの例です。

Simple W_Rのシグナル

前の例でわかるように、EAはチャートの左上隅に現在のWPR値でコメントシグナルを生成しました。生成されたシグナルがMetaTrader 5の内蔵指標と同じであることを次の図で確認することができます。

Simple W_Rの同じシグナル

前の図にあるように、EAと指標が挿入され、両方とも同じシグナルまたは値を生成していることがわかります。右上にはSimple Williams %R EAがあり、左上にはその生成されたシグナルがコメントとして表示されます。これは、下のウィンドウでチャートに挿入されている内蔵指標の値と同じ-78.15に等しいです(内蔵指標の値は左側のWPRラインの上に表示されているます)。 

  • 戦略1:Williams%R - OB & OS

この戦略では、価格が買われ過ぎや売られ過ぎの領域に達したときに、自動的にシグナルを発生させることができる取引システムを作成する必要があります。以下は、この戦略の取引システムを作成するための完全なコードです。

//+------------------------------------------------------------------+
//|                                         Williams%R - OB & OS.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double WPArray[];
   
   ArraySetAsSeries(WPArray,true);
   
   int WPDef = iWPR(_Symbol,_Period,14);
   
   CopyBuffer(WPDef,0,0,3,WPArray);
   
   double WPVal = NormalizeDouble(WPArray[0],2);
   
   if(WPVal<-80)
   {
      Comment("Over Sold");
   }
   
   if(WPVal>-20)
   {
      Comment("Over Bought");
   }
   
  }
//+------------------------------------------------------------------+

コードの相違点は、以下の通りです。

売られ過ぎの条件

   if(WPVal<-80)
   {
      Comment("Over Sold");
   }

買われ過ぎの条件

   if(WPVal>-20)
   {
      Comment("Over Bought");
   }

このコードをコンパイルした後、MetaTrader 5で実行して自動シグナルを発生させるには、次のステップを実行します。

ナビゲータウィンドウでEAファイルを探します。

WPRナビゲータ3

シグナルを抽出したいチャートにドラッグ&ドロップします。以下は、そのウィンドウです。

Williams_R-OB_OSのウィンドウ

[アルゴリズム取引を許可する]の横にチェックを入れて、[OK]をクリックします。チャートに接続されます。

Williams_R-OB_OSの接続

以下は、この戦略に基づいたシグナルをテストから生成した例です。

買われ過ぎ

Williams_R-OB_OSのOBシグナル

前の例でわかるように、WPR値が-20レベルを上回るため、EAは買われ過ぎのシグナルを生成しました。これは、価格が14期間中の高値に近いところで取引されていることを意味します。

売られ過ぎ

Williams_R-OB_OSのOSシグナル

先ほどの例では、WPRが-80を下回っていることから、安値に近いレベルで取引されていることがわかります。

  • 戦略2:Williams %R - Crossover

この戦略では、クロスオーバーに基づいて売買シグナルを生成する取引システムを作成する必要があります。以下は、この戦略に基づいた取引システムを作成するための完全なコードです。

//+------------------------------------------------------------------+
//|                                       Williams%R - Crossover.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double WPArray[];

   ArraySetAsSeries(WPArray,true);

   int WPDef = iWPR(_Symbol,_Period,14);

   CopyBuffer(WPDef,0,0,3,WPArray);

   double WPVal = NormalizeDouble(WPArray[0],2);
   double WPPrevVal = NormalizeDouble(WPArray[1],2);

   if(WPPrevVal<-50 && WPVal>-50)
     {
      Comment("Buy signal","\n",
              "Williams % R Value is",WPVal,"\n",
              "Williams % R Previous Value is",WPPrevVal);
     }

   if(WPPrevVal>-50 && WPVal<-50)
     {
      Comment("Sell signal","\n",
              "Williams % R Value is",WPVal,"\n",
              "Williams % R Previous Value is",WPPrevVal);
     }

  }
//+------------------------------------------------------------------+

コードの相違点は、以下の通りです。

前回のウィリアムズの%Rの値をWPPrevValueというdouble変数にした後、NormalizeDouble関数を使って、前回のウィリアムズの%Rの値を取得します。NormalizeDouble関数のパラメータは、正規化された数値と小数点以下の桁数です。

double WPPrevVal = NormalizeDouble(WPArray[1],2);

Williams %R - Crossover戦略の条件

買いシグナルの場合

   if(WPPrevVal<-50 && WPVal>-50)
     {
      Comment("Buy signal","\n",
              "Williams % R Value is",WPVal,"\n",
              "Williams % R Previous Value is",WPPrevVal);
     }

売りシグナルの場合

   if(WPPrevVal>-50 && WPVal<-50)
     {
      Comment("Sell signal","\n",
              "Williams % R Value is",WPVal,"\n",
              "Williams % R Previous Value is",WPPrevVal);
     }

このコードをコンパイルすると、ナビゲータウィンドウに下図のように表示されます。

WPRナビゲータ2

この戦略のEAをダブルクリックし、目的のチャートで実行することで、EAのウィンドウが表示されます。

Williams %R - Crossoverのウィンドウ

[OK]を押すと、チャートに接続されます。

Williams_R - Crossoverの接続

以下は、戦略のテストによる生成シグナルの例です。

買いシグナル:

Williams %R - Crossoverの買いシグナル

チャートで見るのと同じように、前回のWPR (-55.93)が-50レベルを下回り、現在のWPR (-41.09)が-50レベルを上回るため、この戦略の条件を満たしているとして、EAが買いシグナル、ウィリアムズ%R値、ウィリアムズ%R値をコメントとしてチャート左上隅に生成しています。

売りシグナル

Williams %R - Crossoverの売りシグナル

 

先ほどの戦略による売りシグナルの例にあるように、戦略の条件を満たしているため、チャート左上には売りシグナル、現在のWPR、前回のWPRの値がコメントとして表示されています。

前回のWPR値 (-29.95)は-50レベルを上回り、今回のWPR値(-58.8)は-50レベルを下回っています。

  • 戦略3:Williams%R - MA

以下は、この戦略の取引システムを作成するための完全なコードです。

//+------------------------------------------------------------------+
//|                                              Williams%R & MA.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double WPArray[];
   double MAArray[];

   double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);

   ArraySetAsSeries(WPArray,true);
   ArraySetAsSeries(MAArray,true);

   int WPDef = iWPR(_Symbol,_Period,14);
   int MADef = iMA(_Symbol,_Period,100,0,MODE_EMA,PRICE_CLOSE);

   CopyBuffer(WPDef,0,0,3,WPArray);
   CopyBuffer(MADef,0,0,3,MAArray);

   double WPVal = NormalizeDouble(WPArray[0],2);
   double MAVal = NormalizeDouble(MAArray[0],2);

   if(Ask>MAVal && WPVal>-50)
     {
      Comment("Buy signal","\n",
              "Williams % R Value is",WPVal,"\n",
              "EMA Value is",MAVal);
     }

   if(Bid<MAVal && WPVal<-50)
     {
      Comment("Sell signal","\n",
              "Williams % R Value is",WPVal,"\n",
              "EMA Value is",MAVal);
     }

  }
//+------------------------------------------------------------------+

コードの相違点は、以下の通りです。

WPとMA用の配列を作成します。

double WPArray[];
double MAArray[];

売値と買値のダブル変数を作成して、値を取得します。

double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);

これらの作成された配列を現在のデータから並び替えます。

ArraySetAsSeries(WPArray,true);
ArraySetAsSeries(MAArray,true);

iWPR関数でウィリアムズPRを定義し、iMA関数で移動平均を定義します。iWPRのパラメータは前述の通りです。iMAのパラメータは、銘柄名、期間、平均化期間、水平シフト、平滑化タイプ、価格の種類です。

int WPDef = iWPR(_Symbol,_Period,14);
int MADef = iMA(_Symbol,_Period,100,0,MODE_EMA,PRICE_CLOSE);

CopyBuffer関数を用いて、作成した配列に価格データをコピーします。

CopyBuffer(WPDef,0,0,3,WPArray);
CopyBuffer(MADef,0,0,3,MAArray);

現在のウィリアムズRPと移動平均の値を取得します。

double WPVal = NormalizeDouble(WPArray[0],2);
double MAVal = NormalizeDouble(MAArray[0],2);

戦略の条件

買いシグナルの場合

   if(Ask>MAVal && WPVal>-50)
     {
      Comment("Buy signal","\n",
              "Williams % R Value is",WPVal,"\n",
              "EMA Value is",MAVal);
     }

売りシグナルの場合

   if(Bid<MAVal && WPVal<-50)
     {
      Comment("Sell signal","\n",
              "Williams % R Value is",WPVal,"\n",
              "EMA Value is",MAVal);
     }

このコードをコンパイルした後、MetaTrader 5のナビゲータウィンドウで、次のようにEAが表示されます。

WPRナビゲータ4

これを目的のチャートにドラッグ&ドロップすると、次のようなウィンドウが表示されます。

Williams_R _ MAのウィンドウ

[アルゴリズム取引を許可する]にチェックを入れて[OK]ボタンを押すと、次のようにチャートにEAが接続されます。

Williams_R _ MAの接続

以下は、この戦略に基づいて生成されたシグナルの例です。

買いシグナルの場合

Williams_R _ MA - 買い

生成されたシグナルはチャート上の左上隅にあります。

  • 買いシグナル 
  • WPR値
  • EMA値

売値がMAを上回り、WPRが-50を上回る場合、条件が満たされます。

売りシグナルの場合

Williams_R _ MA - 売り

生成されたシグナルはチャート上の左上隅にあります。

  • 売りシグナル 
  • WPR値
  • EMA値

買値がMAを下回り、WPRが-50を下回る場合、条件が満たされます。


結論

ウィリアムズのPRは、前述したように、モメンタムを測定する最も一般的な指標の1つにみなされる、重要なテクニカルツールです。また、他のテクニカル指標と組み合わせることで、より大きな効果を得ることができます。これは、テクニカル分析の最も重要な利点の1つで、複数のツールを使用することで、複数の視点をクリアして、適切な判断を下すためのツールを理解することができるからです。

この記事を通して、WilliamsのPRテクニカル指標とは何か、何を測定するのか、それをどのように計算するのか、例を通して応用することで理解を深め、次に指標の挿入方法、指標をどのように読めば何を知らせたいのかが分かるようになるなど、より多くのトピックを学ぶことができました。

また、3つの簡単な戦略を学び、その背後にある主要な概念に基づいた簡単な戦略を通じて、どのように使用できるかを学びました。

  • Williams %R - OB & OS:価格がこれらのゾーンに達したときに買われ過ぎと売られ過ぎのシグナルを生成します。
  • Williams %R - Crossover:特定の意味のある条件に基づいて、売買シグナルのシグナルを生成します。
  • ウィリアムズ%R - MA:WPRと指数移動平均の読みに基づいた売買シグナルを生成します。
その後、言及された各戦略の取引システムを作成するために、ステップバイステップの設計図を作成しました。MQL5によって各戦略の取引システムを学習・作成し、MetaTrader 5の取引ターミナルで使用して、自動的かつ正確にシグナルを発生させることができるようになりました。

この記事で学んだことはすべて、プログラミングを使ってどのようにできるかの簡単な例です。アルゴリズム取引は、スムーズで簡単、かつ効果的に取引を行うことができる、素晴らしいツールです。文字通り寝ている間にお金を働かせることができる、とても便利なツールです。皆さんもぜひ、このツールを使って、利益を最大化する確率を高める方法を学んだり、考えたりしてみてください。

ここでもう一度確認しておきたいのは、どんな戦略も実際の口座で使う前に必ずテストしなければならないということです。万人に適したものは何もないからです。 特に、この記事の主な目的は教育的なものであるため、戦略を最適化する必要がある場合があります。学んだことを理解するために重要な要素になるので、読んだことを自分で応用してみてください。また、最も人気のあるテクニカル指標によって取引システムを設計する方法に関する同様の記事をお読みになりたい場合は、この連載の過去の記事をお読みください。

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

一からの取引エキスパートアドバイザーの開発(第22部):新規受注システム(V) 一からの取引エキスパートアドバイザーの開発(第22部):新規受注システム(V)
今日は、新しい受注システムの開発を進めていきます。新しいシステムを導入するのはそう簡単なことではありません。プロセスが非常に複雑になるような問題がしばしば発生します。このような問題が発生したときは、一度立ち止まって、自分たちの進むべき方向を再分析しなければなりません。
CCI指標:アップグレードと新機能 CCI指標:アップグレードと新機能
この記事では、CCI指標をアップグレードする可能性について検討するとともに、この指標の修正を提示します。
知っておくべきMQL5ウィザードのテクニック(第02回):コホネンマップ 知っておくべきMQL5ウィザードのテクニック(第02回):コホネンマップ
この連載では、MQL5ウィザードがトレーダーの主力であるべきことを示します。なぜでしょうか。MQL5ウィザードを使用すれば、新しいアイデアを組み立てることで時間を節約できるだけでなく、コーディングの重複によるミスを大幅に減らすことができるため、最終的に、取引の哲学のいくつかの重要な分野にエネルギーを注ぐことができるからです。
ニューラルネットワークが簡単に(第19部):MQL5を使用したアソシエーションルール ニューラルネットワークが簡単に(第19部):MQL5を使用したアソシエーションルール
アソシエーションルールの検討を続けます。前回の記事では、このタイプの問題の理論的側面について説明しました。この記事では、MQL5を使用したFPGrowthメソッドの実装を紹介します。また、実装したソリューションを実際のデータを使用してテストします。