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

広告

posted by fanblog

広告

posted by fanblog
2013年07月26日
第8回 MT4にカスタムインディケータをセットする




今回の記事は 前回 の続きです。MT4にセットするカスタムインディケータについて書きます。

(1) MT4にセットするカスタムインディケータ

//*******************************************************************
//
// DCSV28
//
// CopyRight 2013 VBAファン.
//
//*******************************************************************
#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;

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

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

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

     FileClose(handle);

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

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

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

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


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

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

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



コンパイルが完了するとナビゲーターカスタムインディケータDCSV28 が表示されます。いずれか1つのチャートにドラッグして貼り付けて下さい。日足チャートでなくともかまいません。   

以上でMT4の準備作業は終了です。



エクセルファイルです。

    ダウンロード


前へ   次へ

Posted by vbafan at 20:41 | この記事のURL
この記事のURL

×

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