記事"MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第27部): 未決取引リクエスト - 特定の条件下でのポジションのオープン"についてのディスカッション

 

新しい記事 MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第27部): 未決取引リクエスト - 特定の条件下でのポジションのオープン はパブリッシュされました:

ユーザが保留中リクエストを使用して取引できるようにする機能の開発を継続します。本稿では、特定の条件下で指値注文を出す機能を実装します。

保留中リクエストオブジェクトは、すべてのアクティブ化条件を格納する配列を特徴としています。取引管理クラス(つまり、そのタイマー)により、指値取引リクエストのリストを常に表示できます。保留中取引リクエストをアクティブ化するとき(すべての事前定義されたアクティブ化条件が満たされている場合)、取引注文がサーバに送信されます。そのパラメータは、トリガーされた保留中リクエストに設定されます。

ポジションを開くには、指定した条件の発生を制御するだけです。それらが発生するとすぐに、ポジションを開くための取引注文がサーバに送信されます。
ただし、保留中リクエストオブジェクトを使用した指値注文の発行に関しては、ポジションが適切な現行価格に設定されるのに注文が価格から離れた場所に配置されるという1つの問題があります。
したがって、特定の条件下で保留中注文を処理するためには、保留中注文の距離も考慮する必要があります。これには質問が伴います。保留中リクエストを作成するとき、将来の指値注文の距離を指定するのですが、これをどの価格からの距離にするかということです。保留中リクエストの現行価格からでしょうか。それとも、リクエストオブジェクトがアクティブ化のために設定されたすべての条件を満たす場合の現在価格からでしょうか。結局のところ、すべての条件が満たされた時点で、価格は保留中リクエストが作成されたレベルから遠く離れている可能性がありますが、将来の価格を知ることができるのは、保留中リクエストの唯一のアクティブ化条件が指定された価格の値である場合のみです。その他の場合、注文を設定するために必要な将来の価格は不明です。

作者: Artyom Trishkin

削除済み  

自分のPCのIncludeにある以前のDoEasyディレクトリを削除し、この記事のMQL5.zipファイルをダウンロードしました。

TestDoEasyPart32.mq5をコンパイル中に61個のコンパイルエラーが出ました😱


CMessage::ToMail関数のMessage.mqhファイルの114行目の先頭に/がないのです。

スラッシュ文字を追加してコメント行を定義すると、コンパイルの問題はなくなりました。

また、DoEasy ディレクトリのファイルの読み取り専用フラグを変更して、変更を保存できるようにする必要がありました。

 
Laurent Soudron :

私のコンピュータのインクルード内の以前のDoEasyディレクトリを削除し、この記事のMQL5.zipファイルをダウンロードした。

TestDoEasyPart32.mq5をコンパイル中に61個のコンパイルエラーが発生しました😱


Message.mqhファイルのCMessage::ToMail関数の114行目の先頭に/がありません。

スラッシュ文字を追加してコメント行を定義すると、コンパイルの問題はなくなりました。

また、DoEasy ディレクトリのファイルの読み取り専用フラグを変更して、変更を保存できるようにする必要がありました。

この厄介なミスは、記事のテキストとコード中のコメントをロシア語から英語に翻訳するときに犯したものだ。

mql5.comリソースのロシア語部分の記事に添付されたソースコードでは、このようなエラーはありません:


ご配慮とご配慮に感謝いたします。

---------------------------------

ご清聴ありがとうございました。
mql5.comをご利用ください。

このサイトをご利用いただくと、より多くの情報を得ることができます。
 

こんにちは、

私のIC Marketsデモ口座(MT5)でOrder Type Filling Typeが間違っているというエラーが発生しました。

コードをデバッグしたところ、私の口座では初期化は ORDER_FILLING_IOC で問題ないようです。しかし、EAのengine.OpenBuy(lot,Symbol(),magic,stoploss,takeprofit);という行が呼び出され、ポジションをオープン(またはクローズ)しようとすると、フィリングタイプが適切に設定されません(下記参照)。

私はそれを動作させるために迅速な(そして汚い)解決策を作りました。添付した2つのファイルであなたのファイルとの差分を作成することで、変更を確認できます。私のコードを適切なコードに置き換えてください。


Trading.mqhの2646行目あたり:
私が変更したところ:
res=trade_obj.OpenPosition(type,this.m_request.volume,this.m_request.sl,this.m_request.tp,magic,comment,deviation,this.m_request.type_filling ); //type_fillingの代わりに


TradeObj.mqh

CTradeObj::ClosePosition:

this.m_request.type_filling=ORDER_FILLING_IOC を追加しました;

CTradeObj::SetOrder:
追加しました:
ENUM_ORDER_TYPE_FILLING order_type_filling=(ENUM_ORDER_TYPE_FILLING)::OrderGetInteger(ORDER_TYPE_FILLING);
this.m_request.type_filling= (type_filling==WRONG_VALUE ? order_type_filling : ORDER_FILLING_IOC);

ファイル:
TradeObj.mqh  253 kb
Trading.mqh  445 kb
 
marco :

こんにちは、

私のIC Marketsデモ口座(MT5)で、Order Type Filling Typeが間違っているというエラーが発生しました。

コードをデバッグしたところ、私の口座では初期化は ORDER_FILLING_IOC で問題ないようです。しかし、EAのengine.OpenBuy(lot,Symbol(),magic,stoploss,takeprofit);という行が呼び出され、ポジションをオープン(またはクローズ)しようとすると、フィリングタイプが正しく設定されません(下記参照)。

私はそれを動作させるために迅速な(そして汚い)解決策を作りました。添付した2つのファイルであなたのファイルとの差分を作成することで、変更を確認できます。私のコードを適切なコードに置き換えてください。


Trading.mqhの2646行目あたり:
私が変更したところ:
res=trade_obj.OpenPosition(type,this.m_request.volume,this.m_request.sl,this.m_request.tp,magic,comment,deviation,this.m_request.type_filling ); //type_fillingの代わりに


TradeObj.mqh

CTradeObj::ClosePosition:

this.m_request.type_filling=ORDER_FILLING_IOCを追加しました;

CTradeObj::SetOrder:
追加しました:
ENUM_ORDER_TYPE_FILLING order_type_filling=(ENUM_ORDER_TYPE_FILLING)::OrderGetInteger(ORDER_TYPE_FILLING);
this.m_request.type_filling= (type_filling==WRONG_VALUE ? order_type_filling : ORDER_FILLING_IOC);

ありがとう。以降の記事では、すでに修正済みです。

Спасибо.この問題はすでに修正されています。

 
Artyom Trishkin:

ありがとう。その後の記事で、これはすでに修正されている。

Спасибо.В последующих статьях это уже исправлено.

パート34のコードを試してみましたが、エラーはまだ続いています:


34のEAを43のDoEasyライブラリで使おうとしましたが、43のライブラリは34のEAと互換性がありません(engine.OnTimerメソッドの変更など)。

何が間違っているのでしょうか?)スパシーボ!

 
marco :

第34回のコードを試してみたが、エラーはまだ続いている:


34のEAを43のDoEasyライブラリで使おうとしましたが、この43のライブラリは34のEAと互換性がありません(engine.OnTimerメソッドの変更など)。

何が間違っているのでしょうか?)スパシーボ!

このエラーが出るために、具体的に何をしているのですか?どのEAを使っていますか?この記事のテストアドバイザーは変更されていますか?

どのEAを使っていますか?Какой используете советник?このような場合、どうすればよいのでしょうか?

 
Artyom Trishkin:

このエラーが発生するために、具体的に何をしていますか?どのEAを使っていますか?この記事のテストアドバイザーは変更されていますか?

どのEAを使っていますか?Какой используете советник?このような場合、どのようにすればよいのでしょうか?

P "や "T "が有効になっていない状態で "買い "や "売り "を押しています。

パート34の変更されていないEAを使用しました。

 
marco :

P "や "T "が作動していない状態で "買い "や "売り "を押す。

第34回のEAをそのまま使っています。

MetaQuotes-Demoにこのようなエラーはありますか?

 
Artyom Trishkin:

MetaQuotes-Demoにそのようなエラーはありますか?

MetaQuotes Demoではエラーはありません。面白いですね...
そして今は?

 
marco :

MetaQuotesデモではエラーなし。興味深い...
そして今は?

エラーを発見した取引サーバーに接続し、動作を修正する理由を見つける必要があります。

デモ口座を 登録するための詳細を教えてください。