とは言っても、とりあえず動かすことを目的に、画面にメッセージを表示するという実際の売買には余り役に立たないプログラムでしたので、もう少し役に立つプログラムを書いてみたいと思います。
その前に、後で調べようと思っていたことを先に整理しておきます。
まず、”Test1”プログラムを作成した際に、次のような行を書きました。
Print("Test1プログラムを実行しています");
これは、MetaTrader 画面の ターミナルウィンドウ内の Expert タグにメッセージを表示するためのものですが、書いた場所に注目してみます。
//+------------------------------------------------------------------+
// expert start function
//+------------------------------------------------------------------+
int start()
{
//----
Print("Test1プログラムを実行しています");
//----
return(0);
}
//+------------------------------------------------------------------+
int start() って何でしょう?
MetaEditor では、疑問に思った箇所にカーソルを合わせて F1 キーを押すと、ヘルプが表示されます。
#"start"の文字部分にカーソルを合わせ F1 キーを押してみると、
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuckflFRb6p5HTWPbDHryISuV7wfdOrVjPgFM1jAkxhvHzjXtvnUwa3DJ4l4kSkpps9uos25Tqe4rAkX4kNyMU0k758kEbc72HxTGZFgCD5bfpqdSZNK4bOPuclKKFL1tVuCS8sxi9KE4/s200/0_Pic.bmp)
#英語が得意な方は、是非読んでみてください。
私は英語が不得手なので、何となくで理解してしまいましたが、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 件のコメント:
コメントを投稿