2019年4月12日金曜日

MQL4 で配列用メモリを動的確保する方法

プログラムの動作中に配列長が決まるということはよくありますMQL だとそう多くはないかもしれないですが。

そういった場合、C++ では `new` 演算子で動的にメモリを確保するわけですが、MQL4 では `new` 演算子で配列用のメモリを確保することは出来ません。

その代わり、[ArrayResize()](https://docs.mql4.com/array/arrayresize) を利用することでメモリを動的確保することができます。

2019年4月11日木曜日

MT4 Android 版で Notification の音を変更する方法

@Android版 MetaTrader 4 Build 1174 (05 Apr 2019)

[MT4 Android 版で Notification の音が変更できない](https://strategyofc.blogspot.com/2018/08/mt4-android-notification.html) で書いたように [MT4 Android 版](https://play.google.com/store/apps/details?id=net.metaquotes.metatrader4) では Notification の音を変更することが出来なくなっていました少なくとも Android 9 Pie では。

アプリの更新が出るたびに、修正されているか確認しているのですが、未だに直っていないようです。

…と思ったら、アプリ内からは変更できないけど Android の設定からは変更できるようになっていましたもしかしたら 2018 Jun バージョンから出来たのかも。
Android 9 Pie で Notification の仕様が少し変わり、MetaTrader 4 アプリはそれに正しく対応出来ていないようですね。

なので、公式にはまだ直っているとは言い難いですが、Android の機能を使えば Notification の音を変更することが可能です。

2019年4月4日木曜日

[MT4] tester cannot calculate prices が出てしまった場合の対処方法

昨日まで使えていた EA でテストをしようとしたところ、"tester cannot calculate prices" というエラーが出て、動かなくなってしまいました。
エラーの前に "margin exchange rate cannot be calculated" という警告が出ているのも気になります。

調べてみたところ、以下のような条件下でおこるようです条件が AND か OR か不確定。 - "Expert properties"(エキスパート設定)の "Initial deposit currency"(初期証拠金通貨)がブローカーのものと異なる - テストの "Symbol" (通貨ペア)が直接計算できない例えば、証拠金を「USD」にしていて、「EURJPY」で計算しようとしている場合など - サーバーと通信出来ていない