English Русский 中文 Español Deutsch Português
サポート/レジスタンスレベルを描く方法

サポート/レジスタンスレベルを描く方法

MetaTrader 4 | 17 2月 2016, 10:07
646 0
Slobodov Gleb
Slobodov Gleb

はじめに

サポート/レジスタンスレベルはほとんどすべてのトレーダーに利用される基本的ツールです。これらレベルはほとんどの予測で見られ、トレーダーはだれもが個人的にそれらを検出することができます。

本稿はサポート/レジスタンスレベルを検出するシンプルなスクリプトを作成する手順について説明します。本稿は初心者向けに書かれているので、手順の各段階の詳細説明を確認することができます。ただ、スクリプトはひじょうにシンプルでも、本稿は上級トレーダーや MetaTrader 4 プラットフォーム利用者にとっても有用なことでしょう。ここには表形式へのデータエクスポート例、テーブルの Microsoft Excel へのインポート、より詳細な分析のためのチャートプロットの例が入っています。

サポート/レジスタンスレベル

以下で2とおりのサポート/レジスタンスレベルご確認いただけます。


この語の意味を深く掘り下げることはしません。サポート/レジスタンスレベルについて書かれた書籍のほとんどが、たいていの時間、クオートはこの2本の線の間に留まり、それを超えることはほぼない、と述べられているのを目にします。


その証拠を以下の画像で見ることができます。


そこでこの特性を利用します。サポート/レジスタンスレベルを検出するには、クオートと価格レベルの交点数を数える必要があります。

計算はひじょうにむつかしいものです。結果、価格それぞれとこの価格と交わるバーの数に相関関係を得ます。ここで結果表示に問題があります。インチケータチャートを用いてそれを内に作成するのは不可能です。というのも、必要なのは時間についての価格チャートではなく、価格についてのバーチャートだからです。だからです。データをエクスポートし、別のプログラムで分析するのはそのためです。

スクリプト作成

まず、新規スクリプトを作成する必要があります。




これを行うには、「ナビゲータ」ウィンドウに行き、「スクリプト」セクションで右クリックし、「作成する」コマンドを選択します。新しいウィンドウが表示されます。作成しようとしているプログラムうタイプがスクリプトであることを確認し、「次へ」ボタンをクリックします。



そうするとスクリプト名とパラメータを入力するように促されます。「完了」ボタンをクリックしたら、スクリプトを書き始めることができます。



スクリプト書き出し

スクリプトのソースコードは20行より長くはなりません。

//+------------------------------------------------------------------+
//|                                                 ExportLevels.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net"
 
#property show_inputs
extern int MaxLimit = 1000;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
   int handle;
   handle = FileOpen("FindLevels.txt", FILE_CSV|FILE_WRITE, '\t');
   FileWrite(handle, "Cost", "Bars Num");
   double d1 = Low[iLowest(NULL, 0, MODE_LOW, MaxLimit, 0)];
   double d2 = High[iHighest(NULL, 0, MODE_HIGH, MaxLimit, 0)];
   for (double d = d1; d d2; d += 0.0001)
     {
       double a = 0.0;
       for(int i = 0; i MaxLimit; i++)
           if(d > Low[i] && d High[i])
               a+=1;   
       FileWrite(handle, d, a);
     } 
   FileClose(handle);
   return(0);
  }
//+------------------------------------------------------------------+

スクリプトは関数一つだけで構成されています。start() です。それはスクリプトを呼ぶたびに実行されます。以下にソースコードの詳細説明があります。

#property show_inputs
extern int MaxLimit = 1000;

1行目は、スクリプト実行前にユーザーが外部パラメータ選択を依頼されることを指定します。実際には、2行目で定義されるパラメータが1つあります。MaxLimit はプログラムで使用される履歴バー数を処理します。デフォルトでは 1000 ですが、いつでもユーザーが変更することができます。

   int handle;
   handle = FileOpen("FindLevels.txt", FILE_CSV|FILE_WRITE, '\t');
   FileWrite(handle, "Cost", "Bars Num");

start() 関数の最初の2行では、パラメータ FILE_CSV(ファイルがテキストテーブルであることを意味します)および FILE_WRITE(ファイルが書き込みのため開かれることを意味します)を持つ "FindLevels.txt" ファイルを開く処理を行います。‘\t’パラメータはファイル内の数字が集計で分割されることを指示します。 ファイルには2列あります。1列目は「コスト」-価格、2列目は「バー数」-この価格を超えるバーの数です。FileWrite() f関数を用いて"FindLevels.txt" ファイルに 列名を書きます。

   double d1 = Low[iLowest(NULL, 0, MODE_LOW, MaxLimit, 0)];
   double d2 = High[iHighest(NULL, 0, MODE_HIGH, MaxLimit, 0)];

それから、ゼロバーから履歴内で MaxLimit 数のバーまでの安値と高値を見つけます。iLowest() は最低価格が見つかるバーのインデックスを表示します。Low[] はこのバーに対する最低価格値です。iHighest() および High[] に対しても同じ手順に従います。

   for (double d = d1; d <= d2; d += 0.0001)
     {
       double a = 0.0;
       for(int i = 0; i < MaxLimit; i++)
           if(d > Low[i] && d < High[i])
               a+=1;   
       FileWrite(handle, d, a);
     }

その後“for”サイクルを取得します。このサイクルは安値 d1 から高値 d2 まで 0.0001 のステップで価格を実行します。変数“a”は価格 "d" をクロスするバー数です。2番目の括弧で囲まれたサイクルは MaxLimit 履歴バーを実行し、価格 "d" をクロスする場合、チェックをします。囲まれたサイクルの後に、FileWrite プロシージャがファイルに価格“d”とバー本数“a”を書き込みます。

   FileClose(handle);
   return(0);

プロシージャ start() の末尾で return() 関数により、ファイルを閉じ、プロシージャを終了します。スクリプトを書いたら、「コンパイルする」ボタンをクリックしてコンパイルし、「ナビゲータ」ウィンドウの「スクリプト」セクションから MetaTrader でそれを実行します。


Excel のあるファイル

スクリプトを呼び出したあと、プログラムは“\experts\files\” フォルダに“FindLevels.txt”ファイルを作成します。それを Excel で開きます。それを行うため、Microsoft Excel を呼び、「開く」ボタンをクリックする必要があります。それからファイルタイプに「テキストファイル」を選択して必要なファイルを検索し、「開く」ボタンをクリックします。


最初の2枚のウィンドウでは何も変更する必要はありまsねん。「次へ」ボタンをクリックするだけです。


3番目のウィンドウで「詳細」ボタンをクリックし、小数点としてドット記号(“.”)を、1000分の1ポイントに '(アポストロフィ)を選択します。それから「OK」と「終了」をクリックします。



結果、Excelに列を2列取得します。ここでチャートをプロットする必要があります。挿入 → 「チャート」を選択します。




最後に行うことは、将来のチャートタイプとその表示タイプを選択することです。


ついに価格のバーチャートを取得します。


チャートの最小値が 1.2582, 1.2616, 1.2644, 1.2705, 1.2712, 1.2730, 1.2744, 1.2850, 1.2879 ポイントにあるのがわかります。これらがサポート/レジスタンスレベルです。


10.11.2006 の結果を前回日付9.10 の結果と比較することができます。2006:

RES 4 $1.2880 -8月31日の高値
RES 3 $1.2865 1.618-1.2795 から1.2680 への下落後のスイング狙い
RES 2 $1.2830 -1.2940 から 1.2485 へフィボナッチ 76.4%
RES 1 $1.2805-時間レジスタンス
現在レベル:1.2760
SUP 1 $1.2745-3週刊の上昇トレンド
SUP 2 $1.2730- 1.2680 から 1.2820 へフィボナッチ 61.8%
SUP 3 $1.2715 -1.2680 から 1.2820 へフィボナッチ 76.4%
SUP 4 $1.2680-11月3日の安値


見てのとおり、チャートと予測に良い相関関係があります。それはわれわれが見つけたレベルが本当にサポート/レジスタンスレベルであるということです!


MetaQuotes Ltdによってロシア語から翻訳されました。
元の記事: https://www.mql5.com/ru/articles/1439

添付されたファイル |
ExportLevels.mq4 (1.33 KB)
サポート/レジスタンスレベルの表示 サポート/レジスタンスレベルの表示
本稿では MetaTrader 4 プログラムにおけるサポート/レジスタンスレベルの検出および表示について取り上げます。その便利で万能のインディケータはシンプルなアルゴリズムを基にしています。本稿ではまた、一つのワークスペース内の異なるタイムフレームからもたらされる結果を表示する、シンプルなインディケータの作成という有用なテーマにも取り組みます。
Linux を利用したトレーディング Linux を利用したトレーディング
本稿ではオンラインで金融市場の状況を見守るためのインディケータの使用法を説明します。
履歴によるフィルター 履歴によるフィルター
本稿はトレード開始フィルターの不可欠な部分としての仮想トレーディングの利用について説明します。
トレーダー個々の心理状態 トレーダー個々の心理状態
金融マーケットにおけるトレーダーのふるまいのポートレートA. Elder.著"Как играть и выигрывать на бирже(『証券取引の投機方法と勝利方法』)"からの私独自のメニュー