MagicNumberを、チャートの_Symbolで特定し適用する(インクルード)
EAってたくさん作ると、チャートの通貨種別から自動で判断してくれるようにできないかな?って思ったりしませんか
あと、このMagicNumberって使ってるっけ?一覧であったらいいのに・・・とかね
インクルード作ってみました、引数とかちょっと変えれば色々な使い方ができると思いますので参考になれば
まずは以下のインクルードを作成して・・・
![](https://assets.st-note.com/img/1722571283529-MlpWbycUbZ.png?width=1200)
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~~
![](https://assets.st-note.com/img/1722571747008-ivDWfISXZl.png?width=1200)
MQL5コード一覧はコチラ
https://note.com/noway_pway/n/na50e47a51645