MagicNumberを、チャートの_Symbolで特定し適用する(インクルード)

EAってたくさん作ると、チャートの通貨種別から自動で判断してくれるようにできないかな?って思ったりしませんか

あと、このMagicNumberって使ってるっけ?一覧であったらいいのに・・・とかね

インクルード作ってみました、引数とかちょっと変えれば色々な使い方ができると思いますので参考になれば


まずは以下のインクルードを作成して・・・

新規作成 > インクルードで.mqhファイルを作成するよ



MagicNumber_search.mqh

//+------------------------------------------------------------------+
//| MagicNumber_search.mqh                                               |
//+------------------------------------------------------------------+
#ifndef __MAGICNUMBERLIB_MQH__
#define __MAGICNUMBERLIB_MQH__

// マジックナンバーを格納する構造体
struct MagicNumbers {
   string symbol;
   int bid;
   int ask;
};

// 通貨ペアごとのマジックナンバーを格納する配列
MagicNumbers magicNumberArray[];

void InitializeMagicNumbers()
{
   ArrayResize(magicNumberArray, 8); // 必要なサイズに合わせる
   // 他の通貨ペアを追加する場合はArrayResizeで配列サイズを増やし、
   // 各通貨ペアのマジックナンバーを設定してください

   // USDJPYのマジックナンバー
   magicNumberArray[0].symbol = "USDJPY";
   magicNumberArray[0].bid = 1211;
   magicNumberArray[0].ask = 1201;

   // EURUSDのマジックナンバー
   magicNumberArray[1].symbol = "EURUSD";
   magicNumberArray[1].bid = 11211;
   magicNumberArray[1].ask = 11201;

   // AUDUSDのマジックナンバー
   magicNumberArray[2].symbol = "AUDUSD";
   magicNumberArray[2].bid = 111211;
   magicNumberArray[2].ask = 111201;

   // EURJPYのマジックナンバー
   magicNumberArray[3].symbol = "EURJPY";
   magicNumberArray[3].bid = 1111211;
   magicNumberArray[3].ask = 1111201;

   // GBPUSDのマジックナンバー
   magicNumberArray[4].symbol = "GBPUSD";
   magicNumberArray[4].bid = 11111211;
   magicNumberArray[4].ask = 11111201;

   // EURGBPのマジックナンバー
   magicNumberArray[5].symbol = "EURGBP";
   magicNumberArray[5].bid = 111111211;
   magicNumberArray[5].ask = 111111201;

   // AUDJPYのマジックナンバー
   magicNumberArray[6].symbol = "AUDJPY";
   magicNumberArray[6].bid = 11121211;
   magicNumberArray[6].ask = 11121201;

   // GBPJPYのマジックナンバー
   magicNumberArray[7].symbol = "GBPJPY";
   magicNumberArray[7].bid = 11131211;
   magicNumberArray[7].ask = 11131201;
}

bool GetMagicNumbers(string symbol, int &MagicNum_bid, int &MagicNum_ask)
{
   for(int i = 0; i < ArraySize(magicNumberArray); i++)
   {
      if(magicNumberArray[i].symbol == symbol)
      {
         MagicNum_bid = magicNumberArray[i].bid;
         MagicNum_ask = magicNumberArray[i].ask;
         return true;
      }
   }
   MagicNum_bid = 0;
   MagicNum_ask = 0;
   Print("No MagicNumbers defined for symbol: ", symbol);
   return false;
}

#endif
GetMagicNumbers(string symbol, int &MagicNum_bid, int &MagicNum_ask)
                   ↑ ココの&が大事ダヨ  ↑





使い方はこんな感じで
magicnumbercheck.mq5

#include <MagicNumber_search.mqh>

int MagicNumber_bid = 0;
int MagicNumber_ask = 0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   InitializeMagicNumbers();

   // 使用例
   if(GetMagicNumbers(_Symbol, MagicNumber_bid, MagicNumber_ask))
   {
      Print("Symbol         : ", _Symbol);
      Print("MagicNumber_bid: ", MagicNumber_bid);
      Print("MagicNumber_ask: ", MagicNumber_ask);
   }

   return(INIT_SUCCEEDED);
}


インクルードに入れておいたMagicNumberがメッセージされればOK!
お疲れさまでした( ^^) _U~~

メッセージでMagicNumberを確認!


MQL5コード一覧はコチラ

https://note.com/noway_pway/n/na50e47a51645


この記事が気に入ったらサポートをしてみませんか?