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つ持っていたら、

position_magic=20248

のように出力されるでしょう。

いいなと思ったら応援しよう!