モメンタムによるトレーディングシステムの設計方法を学ぶ
はじめに
前回は、価格の方向性であるトレンドを見極めることの重要性について述べました。それが重要なのは、この方向性(トレンド)によって適切な判断を下すことができるからです。つまり、相場の方向性を見極めることで、取引の判断や成果を高めることができると言えます。だからこそ、トレンドを見極め、分析することが重要なのです。
また、このトレンドが強いのか弱いのか、言い換えれば、今のトレンドが続くのか続かないのかを判断することも、判断力を高める要素になります。それを実現するためのツールはいろいろあります。この記事では、トレンドについてより深く理解するための最も重要なツールの1つであるモメンタムに焦点を当てます。なぜなら、この記事からさらに詳しく分かるように、モメンタムは価格やトレンドの速度を測定するからです。
この記事では、モメンタムとその利用方法を詳しく説明し、MQL5で簡単なトレーディングシステムを設計して、スムーズで簡単、かつ効果的な取引を可能にするプログラミングの魔法を利用します。今回は、以下の項目について説明します。
- モメンタムの定義
- モメンタム戦略
- モメンタムトレーディングシステム設計図
- モメンタムトレーディングシステム
- 結論
最初のトピック「モメンタムの定義」では、モメンタム指標について詳しく説明し、モメンタム指標とは何か、どのように計算するのかを見ていきます。次に、モメンタム指標に対する理解を深め、それがどのように役立つかを理解するための簡単な戦略を学びます。言及したモメンタムトレーディング戦略をMQL5でコーディングするために、トレーディングシステムの設計図を設計して、この戦略のシグナルを得るために、どのようにコーディングし、実行するかを学びます。
この記事では、MetaTrader 5を使用してトレーディングシステムのプログラムを実行し、MetaTrader 5に内蔵されているMetaQuotes言語エディタを使ってコードを記述していきます。MetaTrader 5はからダウンロードできます。
MetaTrader 5をダウンロードしてインストールし、起動すると以下の画面が表示されます。
次に、コードを書くためにMetaQuotes言語エディタを開きます。これはさまざまな方法で行うことができます。
- MetaTrader 5ターミナルを開いた状態でF4キーを押す
- MetaTrader 5ターミナルのToolsタブをクリックして選択する
- MetaTrader 5ターミナルでIDEボタンをクリックする
最も簡単な方法は、MetaTrader 5を開き、キーボードからF4ボタンを押すことです。MetaQuotes言語エディタが開きます。
MetaQuotes言語エディタを開く2つ目の方法は、ツールメニューを使用することです。
3つ目の方法は、MetaTrader 5のIDEボタンをクリックすることです。
次のウィンドウが開きます。
もっと詳しく知りたい方は、私が過去に書いた「 アルゴリズムトレーディングシステムを設計する理由と方法について学ぶ」稿を読んでみてください。
また、理解が深まり、関連しているしていないにかかわらずトピックについてより多くの洞察や新しいアイデアを得ることができるので、読んだり学んだりしたことを応用してみることをお勧めします。この記事の主な目的は、この素晴らしいツールであるMQL5が取引にどのように役立つかについて私が学んだことを共有することです。
なお、私には合っていても、読者の取引スタイルによっては合わないこともありますので、学んだことはすべて、まずテストしてから使ってください。デモ口座を使って、学べることはすべてテストして、自分にとって役に立つかどうかを吟味することがとても大切です。
免責条項:本記事の内容はすべて教育目的でのみ作成されており、他の目的では使用できません。そのため、この記事の内容は何らかの結果を保証するものではありませんので、この記事の内容に基づいておこなう行動については、自己責任でお願いします。
さて、知識と上達のための新しいブロックを構築するために、このトピックの学習を開始しましょう。
モメンタムの定義
このセクションでは、モメンタムとは何で、何を意味し、どのように取引に役立つのか、モメンタム指標とは何でどのように計算するのかについて学びます。また、物事の核心を理解することで、効果的に対処できるようになるため、どのように役立つのか、どのように利用できるのかを理解するのに役立つはずです。
モメンタムの概念は、何かの速度を測定することです。ここでは測定するのは価格変動の速度です。現在の価格と過去の値を比較し、この2つの値の変化の速度を測定します。価格変動の速度やトレンドの加速度を測定するというのがモメンタム指標の役割です。
トレンドの種類や相場の方向性をまず判断することが非常に重要であることはすでにわかっています。上昇トレンドなのか、下降トレンドなのか、横ばいなのか、といったトレンドを見極める必要があります。
- 上昇トレンド:安値と高値が上がります。価格は上向きに動きます。通常、市場において大きな力を持つのは買い手と言われています。
- 下降トレンド:高値と安値が下がります。価格は下向きに動きます。主な力は、売り手の力です。
- 横ばい:上昇トレンドと下降トレンド以外のフォーメーションで価格が動きます。上下のどの方向にも明確な前進はなく、買い手と売り手にバランスがあります。
モメンタムの概念は、トレンドの動きの強さを示す別の次元であり、非常に重要です。そこで今度は、トレンドの方向性を見る、あるいは判断するだけでなく、モメンタムを分析することによって、そのトレンドの強さを測定することにします。
モメンタム指標は、価格をリードする可能性があり、言い換えれば、価格に変化が現れる前に変化するため、先行指標であると言えます。
計算面ではそれは非拘束型オシレータであり、これが欠点のひとつとされています。もう一つの欠点は、その計算によると、モメンタム指標はそれを計算する日間のデータを欠落させることです。
モメンタムの計算方法は2種類あります。
- 減算を使用する
- 除算を使用する
- 減算によるモメンタム値の算出
計算方法は非常に簡単で、当期の終値と前期の終値の差を求めることです。
モメンタム=現在の終値-(n)の終値
nは期間で、14がデフォルトです
モメンタム指標を計算した後、計算結果はゼロの上下に振動する線になります。
指標の計算例を見てみましょう。次のデータがあるとします。
日 | 終値 |
---|---|
1 | 10 |
2 | 12 |
3 | 15 |
4 | 17 |
5 | 19 |
6 | 20 |
7 | 18 |
8 | 16 |
9 | 20 |
10 | 22 |
11 | 24 |
12 | 20 |
13 | 18 |
14 | 17 |
15 | 15 |
15日目のモメンタムを計算したい場合、以下のようになります。
モメンタム=現在の終値-(n)の終値
n = 14(1日目)
モメンタム = 15 - 10 = 5
モメンタム指標はゼロの上下で振動しているので、ゼロの上と5の横の差をプロットします。この計算から、先に述べたような欠点が見えてきます。現在のデータから14期間を引いているため、計算されたデータの間に欠落があるのです。もう1つの欠点は、この指標が無制限であること、すなわち、上昇または下降に制限がないことです。
- 徐算によるモメンタム値の算出
モメンタム指標を計算するもう1つの方法は、比率を用いる方法です。MetaTrader 5では、まさにこの計算が使われています。それは以下の手順で構成されています。
モメンタム=(現在の終値/(n)の終値)*100
n = 14(1日目)
この計算を先ほどの例に当てはめると、モメンタムは次のようになります。
モメンタム = (15 / 10)*100 = 150
モメンタム指標は100の上下で振動するため、値は100の上と150の隣にプロットされるでしょう。今回は、この計算方法を用いて、戦略を適用していきます。
この指標はMetaTrader 5にすでに組み込まれているので、次のように選択すればチャートに挿入されます。
次の図のように、MetaTrader 5から、[挿入]タブをクリックし、[インディケータ]、[オシレーター]、[Momentum]の順に選択します。
モメンタムを選択すると、モメンタム指標のパラメータが下図のように表示されます。
前のウィンドウには、モメンタム指標のパラメータが含まれており、ここで、取引スタイルや取引プランに応じて、取引に適していると思われるものを設定することができます。
- 現在の価格と比較する期間を選択します。ここではデフォルトで14となっています。
- モメンタム計算で使用する価格の種類を選択します(終値、始値、高値、安値など)。
- 色、線の種類、線の太さなど、指標を表示するための好みのスタイルを選択します。
適切なパラメータを選択して[OK]を押すと、下図のような指標が表示されます。
モメンタム戦略
このセクションでは、モメンタム指標を使った簡単な戦略を説明します。モメンタムには便利な戦略や使い方がたくさんありますが、ここでの目的は使い方を学ぶことと、トピックの核心を学んだ後に現れる新しいアイデアの扉を開くことなので、教育目的の簡単な戦略で作業することにします。最終的な目的は、これらのアイデアをMQL5を使ってトレーディングシステムとして設計することを学ぶことです。
この戦略では、モメンタムラインと100のレベルとの間のクロスを探します。モメンタムラインが100を上向きにブレイクしたら、買いシグナルになり、モメンタムラインが100を下向きにブレイクしたら、ショートシグナルになります。
- モメンタム>100=買い
- モメンタム<100=ショート
このシグナルは、トレンドの方向に基づいて生成され、生成されたシグナルのフィルタリングを作成します。モメンタム指標は、初期シグナルとウィップソーを提供し、生成されたシグナルをフィルタリングするために使用することができます。
そのため、以下のように同じになります。
- モメンタム>100=買い
- 別のツールで利益を得ることができ、より効率的です。
次の図は、上昇トレンド中にモメンタムのクロスによって生成されたシグナルの例です。
- モメンタム<100=ショート
- より効率的にするには、別のツールでテイクプロフィットを使用します。
次の図は、下降トレンドで、モメンタム指標が100のレベルを超えたときに発生するシグナルの例です。
- 横ばい時:この記事を書いている今まで、私の見解は、横ばい時にはモメンタム指標よりも良いシグナルを出すことができる他のツールがあるということです。モメンタムの初期のシグナルとホイップソーが誤ったシグナルにつながる可能性があるからです。横ばいの動きの恩恵を受けるには、他のツールを使う方がよいです。
- 先ほど言及した、別のツールによる利食いシグナルについて。例えば、上昇トレンド中により低い安値を作成するか、下降トレンド中により高い高値を作成することによって、逆転がおこなわれたらエグジットできるため、プライスアクションを使用して利食いすることができます。これは、プライスアクションで使用できる他の多くの手法の1つです。オプションで、プライスアクションや指標など、最大限の利益を得てマーケットからエグジットするための他のツールを使用することができます。
モメンタムトレーディングシステム設計図
このセグメントでは、モメンタム戦略をトレーディングシステムとして設計するための設計図を提示します。読者はそれを実現することができます。つまり、この手順では、コンピュータで実行可能なプログラムを受け取ることを目的とした、将来のコーディングの計画を立てます。
- 上昇トレンドでは、プログラムが1ティックごとに戦略の条件を満たしているかどうかを確認する必要があります。モメンタムが100を上向きにブレイクするか、モメンタムの値が100を上回ったら、プログラムが買いシグナルを出すようにする必要があります。そのようなブレイクがなかったり、モメンタムの値が100以下であれば、プログラムは何もシグナルを出さず、何もしません。このことは、次の図に明確に示されています。
- 下降トレンドでは、ティックごとに戦略条件をチェックする必要があります。モメンタムが100を下向きにブレイクするか、モメンタムの値が100を下回ると、プログラムはショートのシグナルを出します。それ以外の場合は、プログラムがシグナルを出さず、何もしないようにします。以下はその図です。
上記の設計図を使って、MQL5で戦略をコードし、モメンタムのシグナルを手動で確認する必要がないように自動的にシグナルを出すプログラムを取得します。これは、本稿の次のセクションで実装します。
モメンタムトレーディングシステム
まず、モメンタム指標をコードする方法をより深く理解するために、モメンタムの値でチャートにコメントを生成する簡単なモメンタムシステムを設計する方法を学びます。これは以下のコードで実装されています。
//+------------------------------------------------------------------+
//| Simple Momentum System.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()
{
//Creating array for prices
double PriceArray [];
//Identifying Momentum properties
int MomentumDef = iMomentum(_Symbol,_Period,14,PRICE_CLOSE);
//Sorting price array
ArraySetAsSeries(PriceArray,true);
//Copying results
CopyBuffer(MomentumDef,0,0,3,PriceArray);
//Getting Momentum value of current price
double MomentumValue = NormalizeDouble(PriceArray[0],2);
//Commenting Momentum output on the chart
if(MomentumValue>100) Comment("MOMENTUM VALUE IS: ",MomentumValue);
}
//+------------------------------------------------------------------+
このプログラムを書いたら、MetaTrader 5取引プラットフォームで実行します。これをおこなうには、MetaTrader 5取引ターミナルに移動し、ナビゲータから目的のファイルを選択します。通常、ターミナルではナビゲータウィンドウが開いています。開いていない場合は、表示メニューからナビゲータを選択するか、MetaTrader 5を開いた状態でCtrl + Nを押します。
次の図は、ナビゲータでファイルを見つける方法です。
その後、このファイルをダブルクリックで開くか、チャートにドラッグ&ドロップします。その後、以下のようなプログラムウィンドウが表示されます。
[アルゴリズム取引を許可する]オプションを有効にして、[OK]をクリックします。プログラムはチャートに添付され、適切なコメントが表示されます。以下は、実行中のプログラムの例です。
ここで、上昇トレンドと下降トレンドの2種類のトレンドを想定して戦略を立てる必要があります。前に定義しましたが、
上昇トレンド
- 上昇トレンドでは「Momentum Uptrend Strategy - Buy」とコメントし、チャート上で買いシグナルを知らせてくれる戦略を使います。このシグナルは、モメンタムの値が100を超えたときに表示されるはずです。
- モメンタム>100=買い
- モメンタム値が100以下の場合、プログラムはチャートに「Momentum Uptrend Strategy - No signal」というコメントを表示する必要があります。
- モメンタム<100=シグナルなし
これは以下のコードで実装されています。
//+------------------------------------------------------------------+
//| Momentum Uptrend Strategy.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()
{
//Creating array for prices
double PriceArray [];
//Identifying Momentum properties
int MomentumDef = iMomentum(_Symbol,_Period,14,PRICE_CLOSE);
//Sorting price array
ArraySetAsSeries(PriceArray,true);
//Copying results
CopyBuffer(MomentumDef,0,0,3,PriceArray);
//Getting Momentum value of current price
double MomentumValue = NormalizeDouble(PriceArray[0],2);
//Commenting Momentum output on the chart
if(MomentumValue>100) Comment("MOMENTUM UPTREND STRATEGY - BUY");
if(MomentumValue<100) Comment("MOMENTUM UPTREND STRATEGY - No SIGNAL");
}
//+------------------------------------------------------------------+
このコードを書いた後、取引ターミナルで実行すると、前のプログラムで見たのと同じように、チャート上に希望のシグナルが生成されます。ナビゲータウィンドウで、次の図に示すように、プログラムを見つけます。
その後、このファイルをダブルクリックで開くか、チャートにドラッグ&ドロップします。以下のようなパラメータウィンドウが表示されます。
[アルゴリズム取引を許可する]オプションを有効にして、[OK]をクリックします。このファイルは、以下のようにチャートに接続されます。
チャート上でコメントが生成され、この戦略に従ったシグナルが表示し始められます。
- 買いシグナル
- シグナルなし
下降トレンド
- 下降トレンドでは、モメンタムが100を下回ったら、「Momentum Downtrend Strategy - Short」のコメントでチャート上にショートシグナルを表示します。
- モメンタム<100=ショート
- モメンタム値が100以上の場合、「Momentum Downtrend Strategy - No signal」とコメントします。
- モメンタム>100=シグナルなし
次のコードは、そのためのプログラムを設計する方法です。
//+------------------------------------------------------------------+
//| Momentum Downtrend Strategy.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()
{
//Creating array for prices
double PriceArray [];
//Identifying Momentum properties
int MomentumDef = iMomentum(_Symbol,_Period,14,PRICE_CLOSE);
//Sorting price array
ArraySetAsSeries(PriceArray,true);
//Copying results
CopyBuffer(MomentumDef,0,0,3,PriceArray);
//Getting Momentum value of current price
double MomentumValue = NormalizeDouble(PriceArray[0],2);
//Commenting Momentum output on the chart
if(MomentumValue<100) Comment("MOMENTUM DOWNTREND STRATEGY - SHORT");
if(MomentumValue>100) Comment("MOMENTUM DOWNTREND STRATEGY - No SIGNAL");
}
//+------------------------------------------------------------------+
MetaQuotes言語エディタでコードを書き、コンパイルした後、再度そのプログラムのファイルをチャート上で実行します。ナビゲータウィンドウのExpert Advisorsフォルダの下に、次の図のように表示されます。
その後、ファイルをダブルクリックするか、ドラッグ&ドロップでチャートに配置します。これにより、プログラムのパラメータを表示する以下のウィンドウが開きます。
再度、[アルゴリズム取引を許可する]を有効にして、[OK]をクリックします。プログラムはチャートに添付され、次の図のように動作します。
この戦略に従って生成されるシグナルは以下のようになります。
- ショートシグナル
- シグナルなし:
さて、簡単なトレーディング戦略を駆使して、モメンタム指標を使ったトレーディングシステムを設計してみました。記事で述べたように、モメンタム指標で使用できる戦略はたくさんありますが、ここでは、簡単なトレーディング戦略を使用して共有しました。これは、初心者が指標の概念を理解し、プログラムするのに役立つはずです。このトピックをきっかけに、MQL5を使った取引の改善方法について、新たな洞察やアイデアを発見していただければと思います。
結論
さて、今回のテーマは終了です。この記事では、モメンタムの概念について学び、この概念がなぜ取引に重要なのか、そしてどのように取引にもう1つの有用な側面を加えることができるのかを見てきました。また、モメンタムという指標について、何を測定するのか、どのように計算できるのかを見てきました。そして、相場の方向性やトレンドが異なるときに、モメンタム指標で使用できる簡単な戦略を学びました。また、MQL5でトレーディングシステムを設計する方法、この戦略のコードを書く方法、そしてプログラムが自動的にシグナルを生成できる取引ターミナル(MetaTrader 5)でそれを実行する方法を学びました。これが結果的に、スムーズで簡単、かつ効果的な取引につながります。
学習したことが自分の取引スタイルや計画に合っているかどうか、使用する前にテストすることがいかに重要であるか、また、学習したことをすべて改善することをお勧めします。この手順で、学習したことを吸収するだけでなく、新しいアイデアに心を開き、関連するまたは関連しない話題についてより多くの洞察を得ることができます。
ここでもう1つ言及したいのは、使用できる有益な戦略はたくさんありますが、誰かが戦略を使用して利益を上げているのに対し、別の人が同じ戦略を使用して損失を出しているということです。ですから、これは戦略についてだけではありません。確かに戦略は重要ですが、望ましい結果につながる要素は他にもあります。最も重要なのは規律であり、これを達成するために有用で効果的なツールがあります。規律とこのツールは、収益性の高い戦略によってトレーディングシステムを作成した後のようにプログラミングされています。コンピューターがあなたの戦略を理解し、人間ように感情に妨たげげることなく、あなたがやりたいことを実行するので、状況が一変します。
この記事が皆様の取引に役立つことを願います。そして、皆様が有益な取引をされることを祈っております。
MetaQuotes Ltdにより英語から翻訳されました。
元の記事: https://www.mql5.com/en/articles/10547
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索