記事"MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第27部): 取引リクエストの使用 - 指値注文"についてのディスカッション

 

新しい記事 MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第27部): 取引リクエストの使用 - 指値注文 はパブリッシュされました:

この記事では、取引リクエストの開発を継続し、指値注文の発注を実装し、検出された取引クラス使用の欠点を排除します。

前の記事では、保留中取引リクエストの実装を開始し、サーバにリクエストを送信した後に取引クラスでエラーが受信された場合にポジションを開くための最初の保留中リクエストを作成しました。本稿では、保留中リクエストの開発を再開し、指値注文の設定中にエラーが発生した場合の保留中リクエストの作成を実装します。

取引クラスのテスト中に、いくつかの欠点が見つかりました。特に、クラスコンストラクタで銘柄の取引オブジェクトを初期化するときに、ハードセットのデフォルト値が設定されていました。これらの値のすべてが銘柄仕様でサポートされているわけではありません。これにより、指値注文をしようとしたときに、サーバで「サポートされていない注文有効期限タイプ」エラーが発生しました。このエラーはどこでも修正されず、最終的に指値注文をすることができなくなっていました。デフォルト値で取引リクエストを送信することによって、サポートされていないデータも取引リクエストに送信されていました。この問題を解決するには、取引リクエストで適切な銘柄仕様に対応する正しいデータを直接指定する必要がありました。

これには、銘柄仕様の知識とともに、ライブラリ自体による値の自動修正ではなくプログラムコードで正確な値を手動入力することが必要でした。物事を簡素化するために、取引クラスの処理ロジックを少し変更します。すべての銘柄取引オブジェクトは、EAのOnInit()ハンドラで正しい値を自動選択することにより初期化されます。注文と有効期限タイプに対してはデフォルトで-1の値が取引クラスの取引メソッドに渡され、事前設定された正しいデフォルト値を使用するべきことを示します。プログラムから別の値が渡された場合、その値が代わりに適用されます。無効な値は、取引クラスでエラーを処理するときに修正されます。

作者: Artyom Trishkin