Iました次のサンプルMQL5コード(問題を実証する):MQL5の組み込み構造体に新しい項目を追加するには?
// PositionSelectByTicket is missing in older MQL5 builds.
#ifndef PositionSelectByTicket
#define PositionSelectByTicket(ticket) OrderSelect(ticket)
#endif
void CheckOrder(const MqlTradeRequest &Request) {
if (Request.action == TRADE_ACTION_SLTP) {
ulong pos = PositionSelectByTicket(Request.position); // error 130: 'position' - struct member undefined
}
}
void OnStart() { }
そして、それはしかし、ビルド1162で、Metaeditor 5(1495ビルド)の最新のビルドに罰金コンパイルは(古いmqlコンパイラを使用して)私は、次のエラーを持っている:
$ wine mql /s /mql5 MQL_Test.mq5
MQL4/MQL5 Compiler build 1162 (02 Jul 2015)
MQL_Test.mq5 : information: Checking 'MQL_Test.mq5'
MQL_Test.mq5(9,17) : error 130: 'position' - struct member undefined
MQL_Test.mq5(9,17) : warning 60: possible use of uninitialized variable ''
: information: Result 1 error(s), 1 warning(s)
Time: 11 ms
私は下位互換性があることを、コードを改善したいと私はすでに未定義の機能を回避するために、上記のようPositionSelectByTicket
に定義追加しました。
上記のエラーをどのように修正して両方のコンパイラで動作させることができますか?
documentation page of MqlTradeRequest
structには、position
構造体アイテムが存在するため、最近ビルドに追加された可能性が最も高いです。
既存の組み込み構造体に不足している変数項目を追加する方法はありますか?古いコンパイラは構文チェックをパスしますか?
、私はそれを認識してんだけど、それのビルド全く新しいが存在しないため、問題は、その機能を持っていない、それはありません古いCLIコンパイラの下でMQL5コードをコンパイルについてですMQLコンパイラ。だから問題は、互換性のあるコードをコンパイルすることです。 – kenorb
この機能をエミュレートする方法はありません。ヘッジ勘定でのみ機能するためです。 1325からのサポートのみがサポートされています。 –