MQL5でEA開発 53 SetExpertMagicNumberメソッド
SetExpertMagicNumberメソッド
SetExpertMagicNumberメソッドはEAのマジックナンバーを設定するCTradeクラスのメソッドです。
CTradeクラスとメソッドについては後で説明します。
とりあえず、関数と同じと考えて下さい。
戻り値はありません
引数は
引数:マジックナンバー。ulong型
となっています。
サンプルコード
#include <Trade\Trade.mqh> // ライブラリのインクルード
CTrade ExtTrade; // インスタンスの宣言
int OnInit(void)
{
ExtTrade.SetExpertMagicNumber(20248);
return(INIT_SUCCEEDED);
}
void OnTick()
{
int positions_total=PositionsTotal(); // ポジション数
for(int i=positions_total-1;i>=0;i--)
{
string position_symbol=PositionGetSymbol(i); // ポジションの銘柄
long position_magic=PositionGetInteger(POSITION_MAGIC); // ポジションのマジックナンバー
Print("position_magic=",position_magic);
}
}
EAのマジックナンバーを「20248」に設定してみます。
マジックナンバーの設定はEAを起動するときに1回やればいいので、OnTick関数ではなくてOnInit関数の中で実行します。
SetExpertMagicNumberメソッドは「Trade」フォルダー内にある「Trade.mqh」ファイルというライブラリで定義されています。
そのため、SetExpertMagicNumberメソッドを使うには、このライブラリをインクルードする必要があります。
インクルードとは含ませるという意味で、このライブラリを含ませる、取り込んで使う、という意味です。
インクルードするには
#include <Trade\Trade.mqh>
とします。
また、このライブラリには「Ctrade」というクラスが定義されています。
クラスとは構造体のようなものです。
構造体は子どもの変数としてメンバを持ちましたが、クラスはメンバを持つことができるだけではなく、関数を持つこともできます。
このクラスが持つ関数のことをメソッドと言います。
クラスを使うには構造体の場合と同様、インスタンスの宣言をします。
サンプルコード中の
CTrade ExtTrade;
がそれです。
これで、CTradeクラスの「ExtTrade」というインスタンスが作られました。
もちろん、名前は任意に決めていいのですが、MetaEditorのサンプルコードで「ExtTrade」という名前にしていた例があったので、ここでもそれに従います。
さて、メソッドを利用するには「インスタンス名.メソッド名」のようにします。
SetExpertMagicNumberメソッドはCtradeクラスが持っているメソッドです。
したがって、インスタンス名が「ExtTrade」なら、「ExtTrade.SetExpertMagicNumber」のようにします。
メッセージ
まだポジションを持っていないので何も出力しません。
もしポジションを1つ持っていたら、
のように出力されるでしょう。