問題タブ [mql5]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
struct - MQL5 の組み込み構造体に新しい項目を追加する方法は?
次のサンプル MQL5 コードがあります (問題を示すため):
また、Metaeditor 5 の最新ビルド (ビルド 1495) では正常にコンパイルされますが、ビルド 1162 (古いMQLコンパイラを使用) では次のエラーが発生します。
コードを改善して下位互換性を持たせたいのですが、PositionSelectByTicket
未定義の関数を避けるために、上記のようにdefine forを追加しました。
両方のコンパイラで動作するように上記のエラーを修正するにはどうすればよいですか?
構造体のドキュメントページにはMqlTradeRequest
構造体position
アイテムが存在するため、最近のビルドで追加された可能性が最も高いです。
不足している変数項目を既存の組み込み構造体に追加して、古いコンパイラが構文チェックに合格する方法はありますか?
pointers - MQL で構造体の配列にポインターを割り当てる方法は?
たとえば、同じタイプの構造体の3 つの個別の配列があります。
here の C の説明と同様です。
これらの配列が後で設定されると仮定すると、これらの配列への共通のポインターを作成するにはどうすればよいでしょうか?
だから私は次のようなことができます:orders_ptr = &orders1
または*orders_ptr = orders1
.
ここに私の非動作コードがあります:
そして、ここに別の試みがあります:
異なるプールとは、プール引数を使用してOrderSelectで行われるのと同様のことを意味しますが、私のプールは完全に異なります。
ただし、上記のコードは意味をなさない多くのエラーで失敗します。それらのいくつかをコメントに含めました。
正しいアプローチは何でしょうか?
私の目標は、ポインタを構造体の配列に割り当てることです。これにより、選択した配列をトラバースできます。
compiler-errors - MQL で前方宣言が期待どおりに機能しない
次の階層の 4 つの異なるファイルにまたがる 4 つのクラスがあります。
括弧内は、クラスがクラス変数として実装するクラス ポインタです。
したがって、Draw および Market クラスは Chart を拡張し、Chart は Terminal を拡張します。まだいくつかのクラス ポインターを定義したいのですが、Terminal クラスchart
自体が Chart クラスへのポインターを持っています。
ファイルは次のとおりです。
Terminal.mqh
Chart.mqh
注:インクルードDraw
とMarket
ファイルはChart
、これらのインクルードがロードされた時点で現在のクラスが定義されていることを確認するために、クラス定義の後、およびそれを使用している変数の宣言の直前に配置されます。
Draw.mqh
Market.mqh
インクルードのロード中にコンパイラ エラーが発生しないようにするために、前方宣言を行っていますが、コンパイルは失敗します。
エラーは次のとおりです (コンパイルしようとしているファイルによって異なります)。
Terminal.mqh
(3 エラー、0 警告)「ターミナル」 - 未定義の構造体 Chart.mqh 8 22
「チャート」 - 未定義の構造体 Draw.mqh 7 21
「チャート」 - 未定義の構造体 Market.mqh 8 23
Chart.mqh
(2 エラー、0 警告)「チャート」 - 未定義の構造体 Draw.mqh 7 21
「チャート」 - 未定義の構造体 Market.mqh 8 23
Draw.mqh
(1 エラー、0 警告)「チャート」 - 未定義の構造体 Market.mqh 8 23
Market.mqh
(1 エラー、0 警告)「チャート」 - 未定義の構造体 Draw.mqh 7 21
最新のビルド 1498 でテスト済み。
上記のエラーは、MQL4 および MQL5 コンパイラ ビルドの両方で同じです。
上記の問題の解決策はありますか?何か不足していますか?
明確にするために、私の目標は、各クラスを個別のファイルに保持することです。