アフィリエイト広告を利用しています

広告

posted by fanblog

広告

posted by fanblog
2013年08月13日
第20回 5分足チャート




MT4からデータを取得して5分足チャートを表示します。

(1) MT4のカスタムインディケータ

5分足用に下記のカスタムインディケータ UCSV28 を作ります。

//*******************************************************************
//
// UCSV28
//
// CopyRight 2013 VBAFAN.
//
//*******************************************************************
#property indicator_chart_window
//---- input parameters
extern int OutputBars = 1000;

int timecounter=0;

//*******************************************************************
// init
//*******************************************************************
int init()
{
     quote_write();
     return(0);
}

//*******************************************************************
// start
//*******************************************************************
int start()
{
     if (Minute()==timecounter) return(0);
     timecounter=Minute();
     quote_write();
     return(0);
}

//*******************************************************************
// quote_write
//*******************************************************************
int quote_write()
{
     datetime dt;
     bool flag;
     string str;

     Comment("start");

     dt=outputCSV("USDJPY");
     flag=true;

     if (outputCSV("EURJPY")!=dt) flag=false;
     if (outputCSV("GBPJPY")!=dt) flag=false;
     if (outputCSV("AUDJPY")!=dt) flag=false;
     if (outputCSV("NZDJPY")!=dt) flag=false;
     if (outputCSV("CHFJPY")!=dt) flag=false;
     if (outputCSV("CADJPY")!=dt) flag=false;

     if (outputCSV("EURUSD")!=dt) flag=false;
     if (outputCSV("GBPUSD")!=dt) flag=false;
     if (outputCSV("AUDUSD")!=dt) flag=false;
     if (outputCSV("NZDUSD")!=dt) flag=false;
     if (outputCSV("USDCHF")!=dt) flag=false;
     if (outputCSV("USDCAD")!=dt) flag=false;

     if (outputCSV("EURGBP")!=dt) flag=false;
     if (outputCSV("EURAUD")!=dt) flag=false;
     if (outputCSV("EURNZD")!=dt) flag=false;
     if (outputCSV("EURCHF")!=dt) flag=false;
     if (outputCSV("EURCAD")!=dt) flag=false;

     if (outputCSV("GBPAUD")!=dt) flag=false;
     if (outputCSV("GBPNZD")!=dt) flag=false;
     if (outputCSV("GBPCHF")!=dt) flag=false;
     if (outputCSV("GBPCAD")!=dt) flag=false;

     if (outputCSV("AUDNZD")!=dt) flag=false;
     if (outputCSV("AUDCHF")!=dt) flag=false;
     if (outputCSV("AUDCAD")!=dt) flag=false;

     if (outputCSV("NZDCHF")!=dt) flag=false;
     if (outputCSV("NZDCAD")!=dt) flag=false;

     if (outputCSV("CADCHF")!=dt) flag=false;

     str=TimeToStr(dt,TIME_DATE)+" "+TimeToStr(dt,TIME_MINUTES)+" finished";
     if (flag) str=str+" All updated";

     Comment(str);
     Print(str);

     return(0);
}

//*******************************************************************
// outputCSV
//*******************************************************************
datetime outputCSV(string symbol)
{
     int handle;
     bool ret;
     int period;

     period=Period();

     handle=FileOpen(symbol+period+".csv",FILE_CSV|FILE_WRITE,',');
     if(handle<1) return(0);

     for(int i=0;i < OutputBars;i++)
     {
       ret = FileWrite(handle,
       TimeToStr(iTime(symbol,period,i),TIME_DATE),
       TimeToStr(iTime(symbol,period,i),TIME_MINUTES),
       iOpen(symbol,period,i),
       iHigh(symbol,period,i),
       iLow(symbol,period,i),
       iClose(symbol,period,i),
       iVolume(symbol,period,i) );

       if(ret<1) return(0);
     }

     FileClose(handle);

     return(iTime(symbol,period,0));
}



MT4から5分足のCSVファイル取得するインディケータです。取得する通貨ペアは主要通貨ペア28種類です。上記のコードをコピーしてMT4フォルダ下の experts フォルダの indicators フォルダにファイル名 UCSV28.mq4 で保存して下さい。

(2) カスタムインディケータのコンパイル

MT4のツールメニューのメタエディターをクリックするとメタエディターが起動します。
file メニューから UCSV28.mq4 open して下さい。



メニューの compile ボタンをクリックして下さい。
0 error(s),0 warning(s) と表示されればOKです。

terminal ボタンを押すとメタエディターが終了します。
コンパイル後の実行可能ファイル名は UCSV28.ex4 になります。ソースファイルと同じフォルダに作成されます。

(3) チャートへカスタムインディケータを貼り付ける

コンパイルが完了するとナビゲーターカスタムインディケータUCSV28 が表示されます。いずれか1つの5分足チャートにドラッグして貼り付けて下さい。   
以上でMT4の準備作業は終了です。


(4) プロパティシートの設定




B2セルの足種類を5分足にして下さい

(5) MT4を起動します


(6) MT4の画面でCSVファイル取得完了のメッセージが表示されるのを待ちます



UCSV28 ... initialized  の次に
UCSV28 ... finished All updated が表示されればOKです。

MT4のカスタムインディケータをセットしたチャートにも finished All updated が表示されます。カスタムインディケータはどれか1つの5分足チャートにセットすれば必要な通貨ペアのCSVをすべてを取得することができます。

(7) エクセルでデータ更新ボタンを押します


A3セルのデータ更新ボタンを押すとデータの取込を行い、5分足チャートを表示します。


エクセルファイルです。

    ダウンロード


前へ   次へ

Posted by vbafan at 16:18 | この記事のURL
この記事のURL

×

この広告は30日以上新しい記事の更新がないブログに表示されております。