ライブラリ: MT4Orders - ページ 45

 
fxsaber:

すべてのフレーズを考えなければなりません。


上の文章で「価格がオープンポジションの テイクアウトに達した。MT5は成行注文を形成しました。

それに対して私はこう答えました:

fxsaber:

MT5は常に成行注文の形で[クライアント]にテイクアウトを表示します。

これを比較するには?


fxsaber:

サードパーティ

だから。なぜそれを接続しないのですか?


fxsaber:

だから、リミッターは非常に短い有効期限で送信されます。

これが私の質問とどう関係があるのでしょうか?

エントリーとエグジットはどう違うのですか?なぜ相場はエグジットに有利で、リミットはエントリーに有利なのですか?

 
Andrey Khatimlianskii:

すべてのフレーズを考えなければならない。

残念ながら、これはコミュニケーション形式のコストです。


MT5は常にマーケットプレイスの形でテイクアウトを表示します。それらがマーケットであるかリミッターであるかは、実際にはサードパーティのゲートウェイの実装に依存します。この場合、これらの市場はリミッターとして送信されます。

MT5 はデータベースとしてのみ機能します。

 
fxsaber:

MT5 は常にマーケットプレイスの形でテイカーを表示します。それらがマーケットであるかリミッターであるかは、実際にはサードパーティのゲートウェイの実装に依存します。この場合、これらのマーケットはリミッターとして送信されます。

TP執行の表示方法について話しているのですか?

それなら、元の投稿の意味がわかります)

 
fxsaber :

私は自己教育のための指標変換の機能を開発している。さらに3つの指標を紹介しよう。

いつものように - 元のMT4のコードは触れませんでした。

ソースは明らかに著者が自分のコードでStringConcatenateを使用しているかを示しています。これは単なるバカです!

こんにちは...


MT5へのコンバートはどうでしたか?

 

私はネッティング口座を持っている。マーケットプレイスでポジションを建てたり閉じたりしています。ポジションを決済するとき、OrderSendは0を返します。これはエラーではありませんが、成功でもありません。

OrderSendの以下のコードを見てください。

    return((arrow_color == INT_MAX) ? (MT4ORDERS::NewOrderCheck() ? 0 : -1) :
           ((((int)arrow_color != INT_MIN) || MT4ORDERS::NewOrderCheck()) &&
            MT4ORDERS::OrderSend(MT4ORDERS::LastTradeRequest, MT4ORDERS::LastTradeResult) ?
            (MT4ORDERS::IsHedging ? (long)MT4ORDERS::LastTradeResult.order : // PositionID == Result.order - MT5-ヘッジ機能
             ((MT4ORDERS::LastTradeRequest.action == TRADE_ACTION_DEAL) ?
              (MT4ORDERS::IsTester ? (::PositionSelect(MT4ORDERS::LastTradeRequest.symbol) ? PositionGetInteger(POSITION_TICKET) : 0) :
                                      // MT4ORDERS::OrderSendのHistoryDealSelect
                                      ::HistoryDealGetInteger(MT4ORDERS::LastTradeResult.deal, DEAL_POSITION_ID)) :
              (long)MT4ORDERS::LastTradeResult.order)) : -1));

MT4ORDERS::OrderSendはtrueを返します。 MT4ORDERS::LastTradeRequest.action==TRADE_ACTION_DEALも trueです。 MT4ORDERS::IsTesterもtrueです。しかし、PositionSelect(MT4ORDERS::LastTradeRequest.symbol) は false を返します。どうやら、これはポジションがクローズされているためです。これはバグなのでしょうか、それとも機能なのでしょうか?それとも、私はまた、この lib が完全にサポートしていない領域に入ってしまったのでしょうか?

 
traveller00:

私はネッティング口座を持っている。マーケットプレイスでポジションを建てたり閉じたりしています。これはエラーではありませんが、成功でもありません。

ポジションの決済は、多くの場合OrderCloseで行われます。MT4Style-OrderSend はオープンポジションのチケットを返すため、OrderSend 経由でポジションをクローズした場合、0 を返すのは論理的です。なぜなら、MT4Style-OrderSend は未決済のポジションのチケットを返すからです。エラーは -1 の場合です。


OrderSendを使用して部分的にクローズまたはターンオーバーした場合、変更されたポジションのチケットが返される(はず)です。ゼロ - 返すべきチケットがない場合。

 

部分的な注文執行を頭の中で設定しようとしているのですが、まだ完全に理解できていません。また、デモ口座ではほとんど出来高が吐き出され、実験的に確認することができません。

2つの状況があります:私は純粋なMT4を「指値注文の部分執行」 オプションで使用しており、MT4OrdersライブラリでMT5を使用しています。指値注文が発注され、部分的に執行される。

1.MT4 の場合、私の理解では、2 つの注文があります: 1 つは指値注文ではなく既に約定した部分約定分、もう 1 つは指値注文として残りの約定分です。注文は独立しており、2番目の注文は基本的にブローカーによって発注されます。残りの数量が満たされた後、注文は2つになり、両方が約定します。私はこれを正しく理解していますか?MT4のAPIのスキームを見ても、これしか思い浮かばないので、FOKなどの注文の種類を指定するだけでなく、部分約定に関する作業も見当たりません。

2.MT5 では、注文は 1 のままで、指値注文のままですが、ORDER_VOLUME_INITIAL とORDER_VOLUME_CURRENT にボリュームが分割されます。MT4Orders は ORDER_VOLUME_CURRENT を返し、2 つ目のボリュームを取得するには MT5 ネイティブ API を使用する必要があります。残りの数量が満たされると、注文は 1 のままとなり、Limit から Executed に移動し、価格は平均に再計算されます。正しく理解していますか?

 
traveller00:

部分的な注文執行を頭の中で設定しようとしているのですが、まだ完全に理解できていません。また、デモ口座はほとんど出来高を吐き出してしまい、実験的に確認することができません。

2つの状況があります:私は純粋なMT4を「指値注文の部分執行」 オプションで使用しており、MT4OrdersライブラリでMT5を使用しています。指値注文が発注され、部分的に執行される。

1.MT4 の場合、私の理解では、2 つの注文があります: 1 つは指値注文ではなく既に約定した部分約定分、もう 1 つは指値注文として残りの約定分です。注文は独立しており、2番目の注文は基本的にブローカーによって発注されます。残りの数量が満たされた後、注文は2つになり、両方が約定します。私はこれを正しく理解していますか?MT4のAPIのスキームを見ても、これしか思い浮かばないので、FOKなどの注文の種類を指定するだけでなく、部分約定に関する作業も見当たりません。

正しい。

2.MT5 では、注文は指値注文のまま 1 のままですが、ORDER_VOLUME_INITIAL とORDER_VOLUME_CURRENT にボリュームが分割されます。MT4Orders は ORDER_VOLUME_CURRENT を返し、2 つ目のボリュームを取得するには MT5 ネイティブ API を使用する必要があります。残りの数量が満たされると、注文は 1 のままとなり、Limit から Executed に移動し、価格は平均に再計算されます。これを正しく理解していますか?

同じDEAL_ORDERを持つ多くの取引が生成されます。注文は変更(建値)または削除することもできます。つまり、注文のステータスは CANCELED (取消) であっても、複数の取引が生成されます。そのため、スリッページの値を知ることができない場合があります。


私はそれを知らない。MOEX-デモループでは、デモリミッターを通して価格に影響を与えることが可能なのかもしれない。スプレッドの内側にBuyLimitを置き、すぐに小さなSELL-marketsをいくつか作る。


ORDER_VOLUME_INITIAL - この情報が役に立つシナリオは見当たりませんでした。


未決済のポジションがない場合 (ヘッジには不要)、部分約定は MT5 ポジションと MT5 注文を同じチケットで作成します。さらに、同じ PositionID で取引が作成されます。そのため、SELECT_BY_TICKET モードでは、MT4 と異なり、最初に見る場所 (履歴またはライブのもの) - MODE_HISTORY/MODE_TRADES - を優先させることができます。それに伴い、チケットによる選択は一義的ではありません。


そのため、SELECT_BY_POSを使用することをお勧めします。

 
fxsaber:

ORDER_VOLUME_INITIAL - この情報が役に立つシナリオは見当たりませんでした。

私はこの情報をORDER_VOLUME_CURRENTと組み合わせて 使用し、どれだけの量が注がれ、どれだけの量がまだリミッターに残っているかを判断しています。主に、プロセスを明確にするための私自身の統計のためです。


詳しい説明をありがとう。すべて正しく想像していたということなので、実行しています。ただひとつ考慮していなかったのは、MT5での部分約定は新しい成行注文を作成するということです。

 
fxsaber:

ポジションの決済は、ほとんどの場合、OrderCloseによって行われる。

しかしこの場合、リミッターを通すことは不可能です。それともどうにかして可能なのでしょうか?