本ブログは、MetaTrader を利用して、EA プログラムを自作紹介するサイトです。
決して儲かるシステムを紹介するものではありませんのであしからず・・・
もし、記事中に嘘偽りを発見された方、ご連絡頂けると幸いです。
なお、過去に作成した EA プログラムの作り方はこちらになります。

Loop_Entry : 同じ指値エントリーを繰り返し実行するプログラムです。
estTurn : 高値(安値)で反対売買を実行するプログラムです。

2008年8月6日水曜日

プログラムの起動と終了

とりあえずプログラムを動かすことを体験できました。

とは言っても、とりあえず動かすことを目的に、画面にメッセージを表示するという実際の売買には余り役に立たないプログラムでしたので、もう少し役に立つプログラムを書いてみたいと思います。

その前に、後で調べようと思っていたことを先に整理しておきます。

まず、”Test1”プログラムを作成した際に、次のような行を書きました。

Print("Test1プログラムを実行しています");

これは、MetaTrader 画面の ターミナルウィンドウ内の Expert タグにメッセージを表示するためのものですが、書いた場所に注目してみます。

//+------------------------------------------------------------------+
// expert start function
//+------------------------------------------------------------------+
int start()
{
//----
Print("Test1プログラムを実行しています");
//----
return(0);
}
//+------------------------------------------------------------------+

int start() って何でしょう?

MetaEditor では、疑問に思った箇所にカーソルを合わせて F1 キーを押すと、ヘルプが表示されます。

#"start"の文字部分にカーソルを合わせ F1 キーを押してみると、

#英語が得意な方は、是非読んでみてください。

私は英語が不得手なので、何となくで理解してしまいましたが、int Start() の後にある中括弧”{ }”の間に書かれたプログラムが、Tick に沿って繰り返し実行される様子です。

また、ヘルプにはその他にも、int init() int deinit() についても記載してあります。

これは、Expert Advisor ウィザードにより作成された”Test1”プログラム内にも、次のようにあらかじめ準備されている内容です。

//+------------------------------------------------------------------+
// expert initialization function
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
// expert deinitialization function
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}

これは、それぞれ、「プログラムが起動するときにだけ実行させたいものを書く場所」と、「プログラムが終了するときにだけ実行させたいものを書く場所」になる様子です。

プログラムが起動や終了する時とは、次のような場合です。

[起 動]
・チャートにプログラムを表示し、Expert Advisors ボタンを有効にした場合

[再起動]
・周期設定(1分足/5分足/15分足・・・)を変更した場合

[終 了]
・チャートよりプログラムを削除した場合
・チャートを閉じた場合

#ちなみに、プログラム実行中に通信が切れた場合どうなるか試してみましたが、
#プログラムの再起動は行われず、ずっと動き続けて( Tick に変化があるのを
#監視して)いる様子です。

実際に起動時と終了時に1回だけ実行されるのか試してみます。

またもや、メッセージを表示するコードを”Test1”プログラムに次のように追加してみます。

#”Test1”プログラムを修正するには、MetaTrader 画面の Navigater ウィンドウより”Test1”を右クリックし、「修正」を選択すると MetaEditor が起動します。

//+------------------------------------------------------------------+
// expert initialization function
//+------------------------------------------------------------------+
int init()
{
//----
Print("Test1プログラムの起動時メッセージです");
//----
return(0);
}
//+------------------------------------------------------------------+
// expert deinitialization function
//+------------------------------------------------------------------+
int deinit()
{
//----
Print("Test1プログラムの終了時メッセージです");
//----
return(0);
}
//+------------------------------------------------------------------+
// expert start function
//+------------------------------------------------------------------+
int start()
{
//----
Print("Test1プログラムを実行しています");
//---- return(0);
}
//+------------------------------------------------------------------+

プログラムをコンパイルして実行形式ファイルを作成し、次の手順でプログラムの実行と終了を行ってみます。

1.MetaTrader を起動
2.新しいチャートを表示
3.チャートにプログラムを表示
4.Expert Advisors ボタンを有効にする(プログラム起動)
5.チャートよりプログラム削除(プログラム終了)

本当でした。少しすっきりしました。

0 件のコメント:

参考になりました? よろしければご協力ください。

にほんブログ村 為替ブログへ 人気ブログランキング【ブログの殿堂】