MQL4 通貨ペア、時間足の限定

通貨ペア、時間足

 

EAを作る時に通貨ペアと時間足を限定してコーディングするケースが多いです。

ユーザーが異なる通貨ペアと時間足を選択した時にアラームあるいはエラーを出して知らせる必要があります。それぞれは以下の関数で取り出すことができます

  • Symbol():通貨ペア
  • Period():時間足

 

 

Symbol()

 

チャートで使用されている通貨ペアは以下のように取得できます。
 

Ref: Symbol – Chart Operations – MQL4 Documentation

注意点としてSymbol()から得られる情報はFX業者によって異なります。
例えば「USDJPY」の場合、

  • USDJPY-b:OANDA(NewYork)
  • USDJPY-oj5k:OANDA(TKY)
  • USDJPY-oj3m:OANDA(TKY)
  • USDJPY-cd:FXTF
  • USDJPY:GaitameFinest
  • USDJPY:Ducascopy
  • etc.

同じ業者でも注文が何万Lotまでなど、口座によってもサフィックスで区別している場合があります。
文字列を操作するStringSubstr()を使うと欲しいところだけ取り出せます。

これを使ってSymbol()で戻ってくる文字列の6文字のみを取り出せば「USDJPY」を判断できます。

あるいは、SymbolInfoString()でIDを指定すると他の通貨ペア情報を取り出せます。

Ref: SymbolInfoString – Market Info – MQL4 Documentation

ENUM_SYMBOL_INFO_STRINGのIDは、

  • SYMBOL_CURRENCY_BASE
    • USD、基軸通貨
  • SYMBOL_CURRENCY_PROFIT
    • JPY、決済通貨
  • SYMBOL_CURRENCY_MARGIN
    • JPY、証拠金通貨
  • SYMBOL_DESCRIPTION
    • US Dollar vs Japanese Yen、シンボル説明
  • SYMBOL_PATH
    • Forex\USDJPY、パス
 

Period()

 

時間足は以下の関数で取得できます

Ref: Period – Chart Operations – MQL4 Documentation

 

サンプルコード

 

通貨ペアが「USDJPY」、時間足が5分以外はアラートとプリントでエラーを出します。

OnTick()に設定しましたがこれをTickで毎回呼び出すのはこの関数に限らず負荷になります。
OnInit()で確認することもできますが、チャートを途中で変更されるとワークできません。
Tick呼び出しを止めるなど工夫が必要でしょう。




シェアする

  • このエントリーをはてなブックマークに追加

フォローする