2017-01-12 6 views
1

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構造体アイテムが存在するため、最近ビルドに追加された可能性が最も高いです。

既存の組み込み構造体に不足している変数項目を追加する方法はありますか?古いコンパイラは構文チェックをパスしますか?

答えて

0

PositionBySelect()はビルド1325(新しいヘッジモード)以降に追加された新機能ですか?

new MetaTrader 5 Terminal release notes

12:PositionSelectByTicket機能を追加しました - 指定されたチケットでさらなる作業のために開いた位置 を選択します。

bool PositionSelectByTicket(ulong ticket); // position ticket 
+0

、私はそれを認識してんだけど、それのビルド全く新しいが存在しないため、問題は、その機能を持っていない、それはありません古いCLIコンパイラの下でMQL5コードをコンパイルについてですMQLコンパイラ。だから問題は、互換性のあるコードをコンパイルすることです。 – kenorb

+0

この機能をエミュレートする方法はありません。ヘッジ勘定でのみ機能するためです。 1325からのサポートのみがサポートされています。 –

関連する問題