2012年6月2日土曜日

FXのチャート分析ソフトMT4のインディケーターとは

FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)のインディケーターとは、チャートを分析するためのテクニカル指標のことです。

MT4のインディケーターには、罫線分析ツールとCustom Indicatorsの2つの種類があります。

罫線分析ツールとCustom Indicatorsとの機能的な違いはありませんが、Webサイトからダウンロードしたり自作したりしたインディケーターはCustom Indicatorsへ登録されます。

インディケーターの一覧は、ナビゲーターウィンドウに表示されます。


▼インディケーターの使用方法

インディケーターを使用するには、罫線分析ツール、あるいは、Custom Indicatorsに登録されているテクニカル指標をダブルクリックするか、テクニカル指標をチャート画面へドラッグ&ドロップするかのいずれかの方法でできます。

1つのチャート画面に、複数のインディケーターを表示させることができます。下のチャート画面では、一目均衡表とParabolic SAR、MACD、Momentumの4つのインディケーターを表示しています。


▼インディケーターの削除方法

一度表示したインディケーターを削除するには、まず、チャート画面を右クリックして、「表示中の罫線分析ツール」を選びます。


「表示中の罫線分析ツール」の画面が表示されるので削除するインディケーターを選択して「削除」のボタンをクリックします。


▼インディケーターの編集方法

表示中のインディケーターのパラメータを変更するには、上の画面の「編集」のボタンをクリックします。

▼インディケーターのダウンロード方法

インディケーターをWebサイトからダウンロードして使用するには、ダウンロードしたファイルをMT4がインストールされているフォルダの「experts」内の「indicators」内にコピーします。

▼インディケーターファイルの拡張子

インディケーターファイルの拡張子は「.mq4」、あるいは、「.ex4」です。「.mq4」はテキストファイル、「.ex4」は実行ファイルです。どちらも「experts」内の「indicators」内にコピーすれば使用できます。

MT4は、起動時に「.ex4」ファイルを調べて、実行ファイル「.mq4」を作成します。そのため、インディケーターを有効にするには、MT4を再起動する必要があります。

「.mq4」ファイルはテキストファイルです。どのようなロジックなのかを見ることができますし、改良することもできます。

▼インディケーターの削除

インディケーターを削除するには、MT4がインストールされているフォルダの「experts」内の「indicators」内にある「.mq4」と「.ex4」の2つのファイルを削除します。「.ex4」だけ削除をしても、MT4の起動時に「.mq4」をもとに「.ex4」が作成されてしまいますので注意が必要です。

FXのチャート分析ソフトMT4でティックを表示するには

FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)でティックを表示する方法を紹介します。

▼MT4のティック機能を使う方法

MT4のメニューから「表示」、「気配値表示」を選びます。


気配値表示の画面が表示されますので、ティック表示したい通貨ペアを選び、画面下の「ティックチャート」のタブをクリックします。


赤色のラインがティックです。


上のティックは、Bidでのレートを表示しています。Askでのレートを表示するには、ティックのチャート画面で右クリックをして「Askを表示」を選びます。

青色のラインがAskでのレートです。


他の為替レートのティックを表示するには、「通貨ペア一覧」のタブをクリックして、通貨ペアを選んでから「ティックチャート」のタブをクリックします。

▼インディケーターを使う方法

MT4の「Tick_on_Chart」というインディケーターを使えば、チャート画面にティックを表示できます。

「Tick_on_Chart」は、MT4に標準でインストールされていませんので下のリストをコピーして使用してください。

ファイル名は「Tick_on_Chart.mq4」として、MT4のインストールされているフォルダ内の「experts」フォルダ内にある「indicators」フォルダに保存します。

「Tick_on_Chart.mq4」
//+------------------------------------------------------------------+
//| Tick_on_Chart.mq4 |
//| Copyright ゥ 2005, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright ゥ 2005, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Cornsilk
#property indicator_color2 Red
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
int tik,t;
double buf[],MaxB,MinB=1000;
extern int period=200;

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_SECTION);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_NONE);
SetIndexBuffer(1,ExtMapBuffer2);

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int i,b;
//----
t++;
b=period;
ArrayResize(buf,b);

if(tik==0)
{
for(i=0;i0;i--)
{
buf[i]=buf[i-1];
if(MaxBbuf[i])MinB=buf[i];
}
buf[0]=Bid;
for(i=0;i

上の図は、USD/JPYのチャートにティックを表示したものです。なお、画面上側のローソク足とティックとは異なる時系列で表示されます。

FXのチャート分析ソフトMT4でラインを引いて分析するには

FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)でラインを引いて分析する方法を紹介します。

MT4でラインを引くには、画面上部のラインアイコンを用います。


「|」は垂線、「―」は水平線、「/」は斜線を引くことができます。


上の図は、チャート画面にさまざまなラインを引いたものです。

白色の四角で囲んだ部分は、高値をつけた後のレンジの局面です。黄色のライン(黄色のライン2本のうち下側)がサポートライン、水色のラインがレジスタンスラインです。水色のラインを突き抜けた地点が上昇トレンドの始まりということが分かります。

次に、2本の黄色のラインで挟まれた局面では、ダブルトップを形成しています。黄色の下側のラインを割り込んだ地点が下降トレンドの始まりということがわかります。

そして、下降トレンドの推移を調べるために、直近の安値(上の図の「A」)からラインを引きます。

ラインの引き方に決まりはありませんが、一般的には高値や安値の地点どうしを結ぶことが多いようです。

ここでは、Aを起点として、次のラインを引きました。
B
ダブルトップ直後の安値の地点
C
ダブルトップ後に初めて上昇へ転換した地点
D
再び上昇へ転換した地点
E
Dの後に大きな下げ相場を形成した時の安値の地点


上の図は、その後のチャートの推移です。

赤色のラインをサポートラインとして推移して、赤色の丸で囲んだ部分が上昇トレンドの転換点になっています。

その後、ピンク色の丸で囲んだ部分を高値として下降トレンドへ転換しています。そして、青色のラインが下降トレンドのサポートラインになっています。

このように、いろいろとラインを引くことによって、トレンドの転換点を見つけることができます。なお、他のテクニカル指標と併用するとトレンドの転換点を見つけやすくなることがあります。

なお、ラインを削除するには、チャート画面を右クリックして「ライン等一覧」を選びます。ラインの一覧が表示されますので、削除したいラインを選択して「削除」のボタンをクリックします。

FXのチャート分析ソフトMT4でケルトナーチャネルズを使うには

ケルトナーチャネルズ(Keltner channels)とは、為替レートの過熱度を表すボラティリティを元に考案されたテクニカル指標です。

ケルトナーチャネルズでは、3本のラインによって構成されていて、上のラインと下のラインはブレイクアウトのラインとして用いることもできます。例えば、上のラインを超えた場合には、為替レートの上昇する過熱度が高いことを表し、下のラインを超えた場合には、為替レートの下降する過熱度が高いことを表します。それぞれ、ラインを超えた地点が買いのエントリーポイント、売りのエントリーポイントになります。


上のチャートは、ケルトナーチャネルズを描画したものです。

赤色の四角で囲んだ部分では、ケルトナーチャネルズの下のラインを割っています。この地点がブレイクアウトとなり売りのエントリーポイントになります。そして、手仕舞いのタイミングは、ローソク足がケルトナーチャネルズの下のラインより上に納まった時になります。上の図では、黄色の四角で囲んだ部分になります。

同じように、緑色の四角で囲んだ部分が売りのエントリーポイント、青色の四角で囲んだ部分が手仕舞いのタイミングになります。

FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)には、ケルトナーチャネルズが標準でインストールされていませんので下のリストをコピーして使用してください。

ファイル名は「 Keltner Channels.mq4」として、MT4のインストールされているフォルダ内の「experts」フォルダ内にある「indicators」フォルダに保存します。

「 Keltner Channels.mq4」

//+------------------------------------------------------------------+
//| Keltner Channels.mq4 |
//| Coded by Gilani |
//| Copyright ゥ 2005, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright ゥ 2005, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 White
#property indicator_color2 White
#property indicator_color3 White


double upper[], middle[], lower[];
extern int period = 10;


int init()
{
SetIndexStyle(0,DRAW_LINE);
SetIndexShift(0,0);
SetIndexDrawBegin(0,0);
SetIndexBuffer(0,upper);

SetIndexStyle(1,DRAW_LINE);
SetIndexShift(1,0);
SetIndexDrawBegin(1,0);
SetIndexBuffer(1,middle);

SetIndexStyle(2,DRAW_LINE);
SetIndexShift(2,0);
SetIndexDrawBegin(2,0);
SetIndexBuffer(2,lower);


//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start() {
int limit;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;

double avg;

for(int x=0; x middle[x] = iMA(NULL, 0, period, 0, MODE_SMA, PRICE_TYPICAL, x);
avg = findAvg(period, x);
upper[x] = middle[x] + avg;
lower[x] = middle[x] - avg;
}
return(0);
}
//+------------------------------------------------------------------+


double findAvg(int period, int shift) {
double sum=0;
for (int x=shift;x<(shift+period);x++) {
sum += High[x]-Low[x];
}
sum = sum/period;
return (sum);
}

2012年5月30日水曜日

FXのチャート分析ソフトMT4で日本時間を表示するには

FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)での時刻表示は、MT4のダウンロード先にもよりますが、一般的には中央ヨーロッパ時間であることが多いようです。日本時間の9時は中央ヨーロッパ時間の1時になります。なお、中央ヨーロッパ時間が夏時間の場合には、2時になります。

中央ヨーロッパ時間の他にも、西ヨーロッパ時間、東ヨーロッパ時間などがあり、また、それぞれに夏時間があります。

以下は、日本の時間と各ヨーロッパ時間との対応表です。

日本 西ヨーロッパ 中央ヨーロッパ 東ヨーロッパ
時間 時間 夏時間 時間 夏時間 時間 夏時間
0 前15 前16 前16 前17 前17 前18
1 前16 前17 前17 前18 前18 前19
2 前17 前18 前18 前19 前19 前20
3 前18 前19 前19 前20 前20 前21
4 前19 前20 前20 前21 前21 前22
5 前20 前21 前21 前22 前22 前23
6 前21 前22 前22 前23 前23 0
7 前22 前23 前23 0 0 1
8 前23 0 0 1 1 2
9 0 1 1 2 2 3
10 1 2 2 3 3 4
11 2 3 3 4 4 5
12 3 4 4 5 5 6
13 4 5 5 6 6 7
14 5 6 6 7 7 8
15 6 7 7 8 8 9
16 7 8 8 9 9 10
17 8 9 9 10 10 11
18 9 10 10 11 11 12
19 10 11 11 12 12 13
20 11 12 12 13 13 14
21 12 13 13 14 14 15
22 13 14 14 15 15 16
23 14 15 15 16 16 17
MT4で日本時間を表示するには「JPN_Time_Sub」というインディケーターを用いることにより可能になります。「JPN_Time_Sub」は、MT4に標準でインストールされていませんので下のリストをコピーして使用してください。

ファイル名は「JPN_Time_Sub.mq4」として、MT4のインストールされているフォルダ内の「experts」フォルダ内にある「indicators」フォルダに保存します。

「JPN_Time_Sub.mq4」
//作成画面とバッファの指定
#property indicator_separate_window
#property indicator_minimum -1
#property indicator_maximum 2

//初期設定変数
extern bool Grid = false;
extern bool YEAR = false;
extern bool MONTH = true;
extern bool DAY = true;
extern bool HOUR = true;
extern bool MINUTE = true;
extern bool SECOND = false;
extern bool ARROW = false;
extern bool NewLine = false;
extern color GridColor = LightSlateGray;
extern int Time_difference = 7;
extern int FontSize = 8;
extern int TimeInterval = 12;
extern color TextColor = White;

string ObjArray[300000];
datetime JPNT,StandardTime;
//string JPND,JPNM,WinName="JPN_Time_Sub";
string JPND,JPNM,WinName=" ";
int DefPeri,DefWin,ObjTotal;

//初期化
int init(){
IndicatorShortName(" ");
if(DefPeri != Period()){
DefPeri = Period();
DeleteTimeObject();
}

return(0);
}


//終了時 時間表示を削除
int deinit(){
DeleteTimeObject();
return(0);
}


int start(){

int limit=Bars-IndicatorCounted();

for(int i=limit; i>=0; i--){
      //基準時間を超えたら作成
      if(StandardTime <= Time[i]){
         //日本時間の生成
         JPNT = Time[i] + Time_difference * 3600;
         SetTimeText(Time[i]);
 
         //次の基準時間を設定する
         datetime Period_Interval=DefPeri * 60 * TimeInterval;
         for(StandardTime = Time[i] + Period_Interval;(TimeDayOfWeek(StandardTime) == 0 || TimeDayOfWeek(StandardTime) == 6) && DefPeri < PERIOD_H1;StandardTime += Period_Interval){}
      }
   }
   return(0);
}
void SetTimeText(datetime settime){
   //日付文字列の作成
   string Y="";
   string M="";
   string D="";
 
   JPND = StringSubstr(TimeToStr(JPNT, TIME_DATE),2);
 
   if(YEAR){
      Y=StringSubstr(JPND,0,2);
   }
   if(MONTH){
      if(YEAR){
         Y=StringConcatenate(Y,".");
      }
      M=StringSubstr(JPND,3,2);
   }
   if(DAY){
      if(YEAR || MONTH){
         M=StringConcatenate(M,".");
      }
      D=StringSubstr(JPND,6,2);
   }
   JPND=StringConcatenate(Y,M,D);

   //時間文字列の作成
   string h="";
   string m="";
   string s="";
   JPNM = TimeToStr(JPNT, TIME_SECONDS);
   if(HOUR){
      h=StringSubstr(JPNM,0,2);
   }
   if(MINUTE){
      if(HOUR){
         h=StringConcatenate(h,":");
      }
      m=StringSubstr(JPNM,3,2);
   }
   if(SECOND){
      if(HOUR || MINUTE){
         m=StringConcatenate(m,":");
      }
      s=StringSubstr(JPNM,6,2);
   }
   JPNM=StringConcatenate(h,m,s);
   //同じオブジェクトが存在しなければ作成
   if(ObjectFind(StringConcatenate("JPNTS_Arrow",JPND,"_",JPNM)) == -1){
      MakeTimeObject(StringConcatenate("JPNTS_Arrow",JPND,"_",JPNM),StringConcatenate("JPNTS_Text",JPND,"_",JPNM,"_1"),StringConcatenate("JPNTS_Text",JPND,"_",JPNM,"_2"),StringConcatenate("JPNTS_GridJPN",JPND,"_",JPNM),JPND,JPNM,settime);
   }
}
void MakeTimeObject(string ArrowName,string TimeTextName1,string TimeTextName2,string GridName,string DATE,string TIME,datetime settime){
   DefWin=WindowFind(WinName);//念の為
   int Pos=2;
   //矢印の作成
   if(ARROW){
      ObjArray[ObjTotal]=ArrowName;
      ObjTotal++;
      ObjectCreate(ArrowName, OBJ_ARROW,DefWin,settime, Pos);
      Pos--;
      ObjectSet(ArrowName,OBJPROP_ARROWCODE,241);
      ObjectSet(ArrowName,OBJPROP_COLOR,TextColor);
   }
  
   if(NewLine){
      //2行で表示
      //日付の作成
      ObjArray[ObjTotal]=TimeTextName1;
      ObjTotal++;
      ObjectCreate(TimeTextName1, OBJ_TEXT,DefWin,settime, Pos);
      Pos--;
      ObjectSetText(TimeTextName1, DATE, FontSize, "Arial", TextColor);
  
      //時間の作成
      ObjArray[ObjTotal]=TimeTextName2;
      ObjTotal++;
      ObjectCreate(TimeTextName2, OBJ_TEXT,DefWin,settime, Pos);
      Pos--;
      ObjectSetText(TimeTextName2, TIME, FontSize, "Arial", TextColor);
   }else{
      //1行で表示
      ObjArray[ObjTotal]=StringConcatenate(TimeTextName1,"_",TimeTextName2);
      ObjectCreate(ObjArray[ObjTotal], OBJ_TEXT,DefWin,settime, Pos);
      Pos--;
      if(YEAR || MONTH || DAY){
         if(HOUR || MINUTE || SECOND){
            ObjectSetText(ObjArray[ObjTotal], StringConcatenate(DATE,"_",TIME), FontSize, "Arial", TextColor);
         }else{
            ObjectSetText(ObjArray[ObjTotal], DATE, FontSize, "Arial", TextColor);
         }
      }else if(HOUR || MINUTE || SECOND){
            ObjectSetText(ObjArray[ObjTotal], TIME, FontSize, "Arial", TextColor);
      }
      ObjTotal++;
   }
   //グリッドの作成
   if(Grid){
      ObjArray[ObjTotal]=GridName;
      ObjTotal++;
      ObjectCreate(GridName,OBJ_TREND, 0, settime,0,settime,WindowPriceMax(0));
      ObjectSet(GridName,OBJPROP_COLOR,GridColor);
      ObjectSet(GridName, OBJPROP_STYLE, STYLE_DOT);
   }
   ObjectsRedraw();
}
void DeleteTimeObject(){
   DefWin=WindowFind(WinName);
   //配列に格納した名前で削除  
   for(int i = 0 ; i < ObjTotal ;i++){
      if(ObjArray[i] != ""){
         ObjectDelete(ObjArray[i]);
         ObjArray[i]="";
      }
   }
  
   //メソッドからすべてのオブジェクトを取得して削除
   ObjTotal=ObjectsTotal();
   for(i=ObjTotal;i>=0;i--){
      string ObjName=ObjectName(i);
      if(StringSubstr(ObjName,0,5) == "JPNTS"){
         ObjectDelete(ObjName);
      }
   }
 
  
   ObjTotal=0;
}



ファイルを保存したら、MT4を起動します。すでにMT4を起動中の場合には、MT4を再起動します。再起動しないと「JPN_Time_Sub」が動きません。

ナビゲーターウィンドウのCustom Indicatorsに「JPN_Time_Sub」が登録されているのが確認できたら、「JPN_Time_Sub」の文字をダブルクリックします。


上のチャートに日本時間が表示されました。なお、表示の高さは自由に設定できます。

▼JPN_Time_Subのパラメータの設定方法

チャート画面を右クリックしてリストから「表示中の罫線分析ツール」を選びます。


次に、「JPN_Time_Sub」をクリックして「編集」のボタンをクリックします。


「パラメータの入力」タブをクリックすると、各種パラメータが設定できます。


各種パラメータの内容は次の通りです。

日本時間の表示に重要なパラメータは「Time_difference」です。

Grid
表示した時刻に垂線を引きます。垂線の色は、GridColorで指定できます。
YEAR
年を表示します。2012年なら「12」を表示します。
MONTH
月を表示します。
DAY
日を表示します。
HOUR
時を表示します。
MINUTE
分を表示します。
SECOND
秒を表示します。
ARROW
表示した時刻の上に矢印を表示します。
NewLine
時刻の表示を2行で表示します。
GridColor
垂線の色を指定します。
Time_difference
MT4の表示時刻と日本時間との差を指定します。各ヨーロッパ時間や夏時間などによる時間差を設定します。通常は「7」に設定されていますが、夏時間の場合には「6」に設定します。
FontSize
時刻を表示する文字の大きさを指定します。
TimeInterval
ローソク足1本分を1として、時刻を表示する間隔を指定します。
TextColor
時刻を表示する色を指定します。

FXのチャート分析ソフトMT4のローソク足の設定方法

FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)では、チャートの表示形式が標準ではバーチャート(Bar Chart)に設定されています。

MT4では、バーチャート以外に、ローソク足、ラインの3つのチャートが表示できます。表示の切り替えは、画面上部にあるボタンで行います。


ローソク足を表示するには、上の図の赤い線で囲んだ3つのボタンのうち真ん中のボタンをクリックします。


標準では、上の図のようなローソク足のチャートが表示されます。

ローソク足の色や背景色などを変更するには、チャート画面を右クリックしてリストから「プロパティー」を選びます。


プロパティーの設定画面が表示されます。画面の右側に設定項目、左側にプレビュー画面が表示されます。


項目を設定することで、さまざまなパターンのチャートを表示することができます。以下はその例です。

▼陽線を白色、陰線を赤色にしたパターン


▼陽線を赤色、陰線を黒色にしたパターン


▼陽線を赤色、陰線を青色にしたパターン

FXのチャート分析ソフトMT4でよく使うテクニカル指標をまとめて表示するには

FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)には、さまざまなテクニカル指標が表示できます。1つのチャート画面に複数のテクニカル指標を表示させることもできます。しかし、新しいチャート画面を開いた時は、テクニカル指標などは表示されないため、新たにテクニカル指標を表示し直さなければなりません。

ここでは、よく使うテクニカル指標をまとめて表示させる方法について解説をします。

まず、チャート画面によく使うテクニカル指標を表示します。

以下のチャートでは、チャート画面に平均足と移動平均線を表示して、サブウィンドウ(チャート画面より下の画面)にADXとAroon、そして日本時間を表示するJPN_Time_Subを追加しています。


チャート画面を右クリックしてリストから「定型チャート」を選びます。次に、「定型として保存」を選びます。


ファイル名を指定して「保存」のボタンをクリックします。ここでは、ファイル名を「adx_aroon.tpl」としています。


以降は、定型チャートから保存したファイルを読み込めば、保存したテクニカル指標をまとめて表示することができます。

FXのチャート分析ソフトMT4で1つのチャート画面に2つの通貨ペアを表示するには

FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)では、1つのチャート画面に1つの通貨ペアのチャートが表示できます。

2つの通貨ペアのチャートを見比べたい時には、2つのチャート画面を横に並べて表示します。しかし、2つの通貨ペアを1つの画面に表示して比較したい場合もあります。

そのような時は、「OverLay20Chart.mq4」というインディケーターを用いることで可能になります。


上のチャートは、USD/JPYのチャートに、EUR/JPYのチャートを重ね合わせたものです。デザインを変更するには、元のチャートとOverLay20Chart.mq4のそれぞれの設定を変更します。


上のチャートは、USD/JPYのチャートに、EUR/USDのチャートを重ね合わせたものです。シンプルなデザインに変更しています。

「OverLay20Chart.mq4」のソースリストは次の通りです。

ファイル名を「OverLay20Chart.mq4」として、MT4のインストールされているフォルダ内の「experts」フォルダ内にある「indicators」フォルダに保存します。

「OverLay20Chart.mq4」
//+------------------------------------------------------------------+
//| OverLay Chart.mq4 Ver.1.10 |
//| Copyrightゥ 2006-2007 S.B.T. |
//| http://sufx.core.t3-ism.net/ |
//+------------------- DO NOT REMOVE THIS HEADER --------------------+
//| This script is free to use/distribute/modify and re-distribute. |
//| (Limited to noncommercial use.) |
//+------------------------------------------------------------------+

//Indicator Properties
#property copyright "Copyrightゥ 2006 S.B.T."
#property link "http://sufx.core.t3-ism.net/"
#property indicator_chart_window
#property indicator_buffers 4


//Indicator Parameters
extern string SubSymbol = "USDJPY";
extern color BullBarColor = MediumSeaGreen;
extern color BearBarColor = Orange;
extern color GridColor = Black;
extern bool Mirroring = false;

//Global Variables
string Prefix; //Indicator Prefix
int Grid = 10; //Grid Lines
int SnapPips = 10; //Snap Pips For Grid Lines


//Indicator Buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];



//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init() {

//Initialize Indexes
Prefix = "OverLayChart" + SubSymbol;

IndicatorShortName( "OverLay Chart( " + SubSymbol + " )" );

SetIndexBuffer( 0, ExtMapBuffer1 );
SetIndexBuffer( 1, ExtMapBuffer2 );
SetIndexBuffer( 2, ExtMapBuffer3 );
SetIndexBuffer( 3, ExtMapBuffer4 );

SetIndexStyle( 0, DRAW_HISTOGRAM, DRAW_LINE, 1, BullBarColor );
SetIndexStyle( 1, DRAW_HISTOGRAM, DRAW_LINE, 1, BearBarColor );
SetIndexStyle ( 2, DRAW_HISTOGRAM, DRAW_LINE, 3, BullBarColor );
SetIndexStyle( 3, DRAW_HISTOGRAM, DRAW_LINE, 3, BearBarColor );

SetIndexEmptyValue( 0, 0.0 );
SetIndexEmptyValue( 1, 0.0 );
SetIndexEmptyValue( 2, 0.0 );
SetIndexEmptyValue( 3, 0.0 );


return( 0 );
}



//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
int _i;



//Delete Objects
ObjectDelete( Prefix + "Status" );
ObjectDelete( Prefix + "Copyright" );

for ( _i = 1; _i <= Grid ; _i ++ ) {
ObjectDelete( Prefix + "Grid" + _i );
ObjectDelete( Prefix + "Price" + _i );
}


return( 0 );
}



//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start() {
int _BarsCount;
double _CurRangeHigh, _CurRangeLow, _CurRangeCenter;
double _SubRangeHigh, _SubRangeLow, _SubRangeCenter;
double _SubPoint, _SubDigit;
double _SubOpen, _SubHigh, _SubLow, _SubClose;
double _PipsRatio;
double _GridPips, _GridPrice;
int _i;



//Initialize Buffers
RefreshRates();

ArrayInitialize( ExtMapBuffer1, 0.0 );
ArrayInitialize( ExtMapBuffer2, 0.0 );
ArrayInitialize( ExtMapBuffer3, 0.0 );
ArrayInitialize( ExtMapBuffer4, 0.0 );


//Calculate Visible Bars
_BarsCount = BarsPerWindow() + 1;
int _FirstBar = FirstVisibleBar();
int _LastBar = _FirstBar - _BarsCount + 1;
if ( _LastBar < 0 ) {
_LastBar = 0;
_BarsCount = _FirstBar + 1;
}


//Calculate Chart Ratio
_CurRangeHigh = High[Highest(NULL, 0, MODE_HIGH, _BarsCount, _LastBar)];
_CurRangeLow = Low[Lowest(NULL, 0, MODE_LOW, _BarsCount, _LastBar)];
_CurRangeCenter = ( _CurRangeHigh + _CurRangeLow ) / 2;

if ( Mirroring ) {
_SubRangeHigh = iLow( SubSymbol, 0, Lowest( SubSymbol, 0, MODE_LOW, _BarsCount, _LastBar ) );
_SubRangeLow = iHigh( SubSymbol, 0, Highest( SubSymbol, 0, MODE_HIGH, _BarsCount, _LastBar ) );
} else {
_SubRangeHigh = iHigh( SubSymbol, 0, Highest( SubSymbol, 0, MODE_HIGH, _BarsCount, _LastBar ) );
_SubRangeLow = iLow( SubSymbol, 0, Lowest( SubSymbol, 0, MODE_LOW, _BarsCount, _LastBar ) );
}

_SubRangeCenter = ( _SubRangeHigh + _SubRangeLow ) / 2;
_SubPoint = MarketInfo( SubSymbol, MODE_POINT );
_SubDigit = MarketInfo( SubSymbol, MODE_DIGITS );

_PipsRatio = ( _CurRangeHigh - _CurRangeLow ) / ( _SubRangeHigh - _SubRangeLow );

_GridPips = ( _SubRangeHigh - _SubRangeLow ) / Grid;
_GridPips = MathRound( ( _SubRangeHigh - _SubRangeLow ) / Grid / ( _SubPoint * SnapPips ) ) * ( _SubPoint * SnapPips );


//Draw Candlesticks
for ( _i = _LastBar; _i < _LastBar + _BarsCount; _i ++ ) {
_SubOpen = iOpen( SubSymbol, 0, _i ) - _SubRangeCenter;
_SubHigh = iHigh( SubSymbol, 0, _i ) - _SubRangeCenter;
_SubLow = iLow( SubSymbol, 0, _i ) - _SubRangeCenter;
_SubClose = iClose( SubSymbol, 0, _i ) - _SubRangeCenter;

if ( Mirroring ) {
if ( _SubOpen < _SubClose ) {
ExtMapBuffer2[_i] = _CurRangeCenter + _SubHigh * _PipsRatio;
ExtMapBuffer1[_i] = _CurRangeCenter + _SubLow * _PipsRatio;
} else {
ExtMapBuffer2[_i] = _CurRangeCenter + _SubLow * _PipsRatio;
ExtMapBuffer1[_i] = _CurRangeCenter + _SubHigh * _PipsRatio;
}

ExtMapBuffer4[_i] = _CurRangeCenter + _SubClose * _PipsRatio;
ExtMapBuffer3[_i] = _CurRangeCenter + _SubOpen * _PipsRatio;
} else {
if ( _SubOpen < _SubClose ) {
ExtMapBuffer1[_i] = _CurRangeCenter + _SubHigh * _PipsRatio;
ExtMapBuffer2[_i] = _CurRangeCenter + _SubLow * _PipsRatio;
} else {
ExtMapBuffer1[_i] = _CurRangeCenter + _SubLow * _PipsRatio;
ExtMapBuffer2[_i] = _CurRangeCenter + _SubHigh * _PipsRatio;
}
ExtMapBuffer3[_i] = _CurRangeCenter + _SubClose * _PipsRatio;
ExtMapBuffer4[_i] = _CurRangeCenter + _SubOpen * _PipsRatio;
}
}


//Draw Objects
ObjectCreate( Prefix + "Copyright", OBJ_LABEL, 0, 0, 0 );
ObjectSet( Prefix + "Copyright", OBJPROP_COLOR, GridColor );
ObjectSet( Prefix + "Copyright", OBJPROP_CORNER, 3 );
ObjectSet( Prefix + "Copyright", OBJPROP_XDISTANCE, 4 );
ObjectSet( Prefix + "Copyright", OBJPROP_YDISTANCE, 4 );
ObjectSetText( Prefix + "Copyright", "OverLay Chart by S.B.T.", 8 );

ObjectCreate( Prefix + "Status", OBJ_LABEL, 0, 0, 0 );
ObjectSet( Prefix + "Status", OBJPROP_COLOR, GridColor );
ObjectSet( Prefix + "Status", OBJPROP_CORNER, 0 );
ObjectSet( Prefix + "Status", OBJPROP_XDISTANCE, 4 );
ObjectSet( Prefix + "Status", OBJPROP_YDISTANCE, 16 );
ObjectSetText( Prefix + "Status",
SubSymbol + " O = " + DoubleToStr( iOpen( SubSymbol, 0, _LastBar ), _SubDigit ) +
", H = " + DoubleToStr( iHigh( SubSymbol, 0, _LastBar ), _SubDigit ) +
", L = " + DoubleToStr( iLow( SubSymbol, 0, _LastBar ), _SubDigit ) +
", C = " + DoubleToStr( iClose( SubSymbol, 0, _LastBar ), _SubDigit ),
8 );

for ( _i = 1; _i <= Grid ; _i ++ ) {
_GridPrice = MathRound( _SubRangeCenter / ( _SubPoint * SnapPips ) ) * ( _SubPoint * SnapPips );
_GridPrice = ( ( _GridPrice + _GridPips / 2 ) + _GridPips * ( Grid / 2 - 1 ) ) - ( _GridPips * ( _i - 1 ) );

ObjectCreate( Prefix + "Grid" + _i, OBJ_TREND, 0, 0, 0 );
ObjectSet( Prefix + "Grid" + _i, OBJPROP_TIME1, Time[_FirstBar] );
ObjectSet( Prefix + "Grid" + _i, OBJPROP_PRICE1, _CurRangeCenter + ( _GridPrice - _SubRangeCenter ) * _PipsRatio );
ObjectSet( Prefix + "Grid" + _i, OBJPROP_TIME2, Time[_LastBar] );
ObjectSet( Prefix + "Grid" + _i, OBJPROP_PRICE2, _CurRangeCenter + ( _GridPrice - _SubRangeCenter ) * _PipsRatio );
ObjectSet( Prefix + "Grid" + _i, OBJPROP_COLOR, GridColor );
ObjectSet( Prefix + "Grid" + _i, OBJPROP_STYLE, STYLE_DOT );
ObjectSet( Prefix + "Grid" + _i, OBJPROP_WIDTH, 1 );
ObjectSet( Prefix + "Grid" + _i, OBJPROP_RAY, true );

ObjectCreate( Prefix + "Price" + _i, OBJ_TEXT, 0, 0, 0 );
ObjectSet( Prefix + "Price" + _i, OBJPROP_TIME1, Time[_FirstBar - _BarsCount / 10] );
ObjectSet( Prefix + "Price" + _i, OBJPROP_PRICE1, _CurRangeCenter + ( _GridPrice - _SubRangeCenter ) * _PipsRatio );
ObjectSet( Prefix + "Price" + _i, OBJPROP_COLOR, GridColor );
ObjectSetText( Prefix + "Price" + _i, DoubleToStr( _GridPrice, _SubDigit ), 8 );
}


return( 0 );
}
//+------------------------------------------------------------------+

FXと外貨預金の違いは

FX(外国為替証拠金取引)と外貨預金の違いは何でしょうか。

例えば、FXでUSD/JPYの買いポジションを保有することは、円を売って米ドルを買うことです。これは、外貨預金では米ドルを預金することと同じことになります。

ここでは、FXと外貨預金の違いをいくつかまとめてみました。

▼取引先
FXの取引先はFX業者になります。一方、外貨預金の取引先は銀行などの金融機関になります。

▼利息
FXでは、スワップポイントとしてFX業者から支払われます。外貨預金でも利息が支払われますが、FX業者のほうが利息の高い傾向にあります。また、外貨預金の場合、利息は年に2回程度まとめて支払われます。なお、利息は課税対象になります。

▼ロスカット
FXの場合、レバレッジを1倍にしていてもかなり低い確率ですがロスカットになる可能性があります。ロスカットになると「円を売って米ドルを買う」状態が解消されます。一方、外貨預金ではUSD/JPYがいくら円高になってもロスカットはありません。

▼手数料
FXの場合、一般的には手数料は無料です。外貨預金の場合には、預け入れ、引き出しのそれぞれに手数料がかかります。

▼値決め
FXの場合、その時の為替レートで売買できます。FXではBID(売値)とASK(買値)で表示されます。例えばBIDが79.500円、ASKが79.510円と表示されている時に1万通貨の買いポジションをするには79万5,100円が必要になります。ちなみに、買いポジションの直後に決済すると79万5,000円が戻ってくるのでマイナス100円になります。

外貨預金では、銀行が午前9時55分にその日の取引レートを決定し、そのレートでの取引になります。外貨預金では、TTS(売値)とTTB(買値)で表示されます。米ドルの場合、TTSとTTBとの差は約2円です。例えばTTSが79.500円、TTBが81.500円と表示されている時に1万米ドルを買うには81万5,000円が必要になります。この時点で米ドルを売ると79万5,000円が戻ってくるのでマイナス2万円になります。なお、一部の銀行では、TTS、TTBではなくリアルタイムの為替レートを適用しています。

▼利益
FXも外貨預金も、為替差益が年間20万円を超えたら雑所得として確定申告が必要になります。

▼現受け
FXの場合、現受けをしているFX業者は少ないようです。一方、銀行の外貨預金では現受けがほとんどできます。なお、現受けには手数料がかかります。

FXの損切りのタイミングは

FX(外国為替証拠金取引)の損切りのタイミングは、投資スタンスにより異なりますが、一般的な損切りは次のようなケースが考えられます。

▼IFD
IFD(イフダン)によって損切りのタイミングを決定します。例えば、USD/JPYを80円で買い注文して79円になったら損切するというものです。あらかじめ損切り額を自分で設定できるため、損失額を抑えることが可能です。

▼トレール
トレールによって損切り幅を設定します。例えば、USD/JPYを80円で買い注文して1円下がったら損切するというものです。ただしトレールの場合は、為替レートが80円から80.50円になれば損切り額は79.50円へ切り上がります。もし為替レートが82円になれば81円で決済されるため、損切りにはなりません。このようにトレールでは、最大損失額を限定することができます。

▼ロスカット
証拠金維持率の低下による強制決済で、結果として損切りになります。ロスカットの場合には損失額が最大になるため、良い損切りとはいえません。

▼テクニカル指標
テクニカル指標によって損切りのタイミングを図るものです。IFDやトレールは、テクニカル指標に頼らない損切りでしたが、テクニカル指標の場合には、ある一定の数値に達したらそこで損切りをするというものです。


上の図はチャートとテクニカル指標のRSIを描画したものです。赤色の丸で囲んだ部分で売りエントリーをしたものの一向に下がらないため、黄色の丸でかこんだ部分で損切りをするケースです。