2019年3月9日土曜日
[MQL4] MarketInfo で値が取れない時は気配値表示ウィンドウを確認する
気配値表示ウィンドウに対象の通貨ペアを表示していない場合、基本的に [MarketInfo()](https://docs.mql4.com/marketinformation/marketinfo) の値は取得できません。 `MarketInfo()` の値が取れない時は、気配値表示ウィンドウを確認してみましょう。
気配値表示ウィンドウに対象の通貨ペアを表示していない場合、基本的に [MarketInfo()](https://docs.mql4.com/marketinformation/marketinfo) の値は取得できません値が0になってしまう。 `MarketInfo()` の値が取れない時は、気配値表示ウィンドウを確認してみましょう。
@MetaTrader 4.00 Build 1170 (20 Dec 2018) [SymbolInfoDouble()](https://docs.mql4.com/marketinformation/symbolinfodouble), [SymbolInfoInteger()](https://docs.mql4.com/marketinformation/symbolinfointeger), [SymbolInfoString()](https://docs.mql4.com/marketinformation/symbolinfostring) 等の関数はストラテジーテスターの中では動作しない時があるので注意が必要です。
[値幅を基準通貨の金額に換算する](https://strategyofc.blogspot.com/2018/07/mql4.html) 際に使う [SymbolInfoDouble(null, SYMBOL_TRADE_TICK_VALUE)](https://docs.mql4.com/marketinformation/symbolinfodouble) ですが、過去の値はとれないので注意が必要です。 つまり、Strategy Tester 内で使用することが出来ません。 [MarketInfo(null, MODE_TICKVALUE)](https://docs.mql4.com/marketinformation/marketinfo) も同様です。 > 参考 > > [How to calculate pip value in currency account (USD, EUR etc) some bars ago or some time ago? - Currency Pairs - Expert Advisors and Automated Trading - MQL5 programming forum](https://www.mql5.com/en/forum/40812)
特定の Object をまとめて消したい時、以下のようにループで各オブジェクトを消したくなります。
しかし、以下は Object が2個以上あるとうまくいきません。
```mq4
// NG
for (int i = 0; i < ObjectsTotal(EMPTY); i++) {
string objectName = ObjectName(i);
ObjectDelete(objectName);
}
```
EA の `OnTick()` 処理中に Bid, Ask が更新されたとしても `Bid`, `Ask` 変数にこれらの値は反映されません。 注文の実行時など、最新の値を使用したい時は [RefreshRates()](https://docs.mql4.com/series/refreshrates) を使用すると `Bid`, `Ask` 変数等を更新する事が出来ます。
他通貨のバー情報を取得するには [iHigh()](https://docs.mql4.com/series/ihigh) 等の関数が使えます。 通常はこれで十分なのですが、リアルタイムで Bid, Ask の情報を取得したいことも時としてあります。 その場合、以下のようにして取得することが可能です。
昨年末に「【重要】OANDA Japan NYサーバーにおける新取引システム【v20】への移行および口座移管のお知らせ」というメールが届きました。 2019年1月中旬以降、順次取引システムが `v20` に更新されるらしい。 両建て口座は自動で更新されないとのことなので、手動で `v20` 口座を作成し、移管してみました。 ところが、新規の `v20` 口座では通貨ペアがグレーアウトされてしまい、 新規注文が出せません新規注文画面に通貨ペアが表示されない。 そして、USDJPY のスプレッドが 14 と広がっています。ボラティリティの低い安定時です。 原則 8 point Oanda Japan の USDJPY では 8 point = 0.8 pip 固定じゃなかったのか!?
アプリケーション開発から組み込みまで手を出しているフリーランスのエンジニア
投資経験は10年以上
現在、完全自動売買を目指して研究中
当ブログ内の情報は環境等により動作が異なる場合があります。 情報は正確になるよう努めていますが、もし間違いを見つけた方はご一報いただけると幸いです。 なお、当ブログの情報によって損害が生じたとしても管理人は一切の責任を負いません。 全て自己責任でお願い致します。