"ダミー "からの質問 - ページ 166

 
Alphazavr:

コードのどこがおかしいのか。失敗したキャンセル注文#0 0.00をマーケットで買う [無効なリクエスト]」というエラーが出続けるのはなぜですか?

ポジション選択は どこにあるのか?

注文とトレードはどう関係があるのですか?

ポジションを閉じようとしているのか?


と、order_remove_mql_trade_requestの 名前は悪い夢です。

 
sergeev:

ポジション選択は どこですか?

注文とトレードはどう関係するのですか?

ところで、何をしようとしているのか、ポジションを閉じるのか?


と、order_remove_mql_trade_requestという 名前は、悪い夢です。

そうですね、明確にする必要がありますね。

このコードの目的は、もしオープンポジションがあれば、そのポジションと同じ方向のリミットオーダーをすべてキャンセルすることです。

例えば、オープンポジションのBAY.であれば、買い指値などの注文を全てキャンセルします。

ポジションを選択するのを忘れていました =)。まあエラーはそれによるものではないのですが(チェック済み)。

 
Alphazavr:

コードのどこがおかしいのか。なぜ「failed cancel order #0 buy 0.00 at market [Invalid request]」というエラーが出続けるのでしょうか?


   MqlTradeRequest order_remove_mql_trade_request = {0};
   order_remove_mql_trade_request.action = TRADE_ACTION_REMOVE;

   i = OrdersTotal();
   if(i > 0){
      if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY){
         for(i2 = 0;i2 <= i;i2++){
            ul = OrderGetTicket(i2);
            OrderSelect(ul);
            if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_BUY_LIMIT){
               order_remove_mql_trade_request.order = ul;
               OrderSend(order_remove_mql_trade_request,mql_trade_result);}}}
      if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL){
         for(i2 = 0;i2 <= i;i2++){
            ul = OrderGetTicket(i2);
            OrderSelect(ul);
            if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_SELL_LIMIT){
               order_remove_mql_trade_request.order = ul;
               OrderSend(order_remove_mql_trade_request,mql_trade_result);}}}}


は、これらのイコールを削除します。
 
sergeev:
は、これらの等号を削除してください。
もうやったよ、うまくいかないんだ。どこがエラーなのかわからない。また、なぜこれらのエラーはBAY LIMIT注文でのみ発生し、Sell Limitではエラーが発生しないのかが理解できません。
 
Alphazavr:
もうやったよ、うまくいかないんだ。
年長者を騙すのは良くない。
 
sergeev:
年長者を騙すのは良くない。

ごまかしはよくない、そんなことはしない。


このコードですべてを再確認したところです。

   i = OrdersTotal();
   if(i > 0){
      PositionSelect(_Symbol);
      if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY){
         for(i2 = 0;i2 < i;i2++){
            ul = OrderGetTicket(i2);
            OrderSelect(ul);
            if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_BUY_LIMIT){
               order_remove_mql_trade_request.order = ul;
               OrderSend(order_remove_mql_trade_request,mql_trade_result);}}}
      if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL){
         for(i2 = 0;i2 < i;i2++){
            ul = OrderGetTicket(i2);
            OrderSelect(ul);
            if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_SELL_LIMIT){
               order_remove_mql_trade_request.order = ul;
               OrderSend(order_remove_mql_trade_request,mql_trade_result);}}}}


結果は同じです。上記のようなエラーがしばしば発生します。

 
Alphazavr:

結果は同じですが、よくエラーが発生します。

"よくあること "は、空虚な言葉です。

2+2がよく4になると思っているのか?

送信の解析と返されたエラーの解析を怠らないでください。

何を削除しようとしているのか確認してください。

決算時の受注はあるのでしょうか?

すでに削除されている注文を削除しようとしているのではないでしょうか。


第三に、あなたは、すべての注文を閉じることができると思うように注文を閉じることを誰が教えたのですか? あなたは、あなたが閉じるたびに、OrdersTotalが1減少すると思う。 そして、あなたはまだあなたが勝つまでi2++を打つ、一次iまで。

OrderGetTicketや OrderSelectがエラーを返すかどうかをわざわざ確認する必要はないでしょう

悪い、とても悪い。

人工衛星が軌道から外れるのは、このようなペンのせいなのです。

 
sergeev:

"よくあること "は、空虚な言葉です。

2+2がよく4になると思っているのか?

送信解析とリターンエラーの解析を怠らないでください。

削除しようとしているものを確認してください。

閉店間際の注文はありますか?

すでに削除されている注文を削除しようとしているのではないでしょうか。


第三に、誰がそのような方法で注文を閉じることを教えたのですか? あなたはすべての注文を通したと思っていますが、そうではありません。あなたが閉じるたびに、OrdersTotalは1ずつ減少し、あなたはまだ勝つまでi2++を、主要なiまで打ちます。

OrderGetTicketやOrderSelectがエラーを返すかどうかをわざわざ確認する必要はないでしょう

これはまずい、とてもまずい。

人工衛星が軌道から外れるのは、このようなペンのせいなのです。

そうでなければ、bylimitsだけでなく、selllimitsでもテストにエラーが出るはずだと思ったからです。助けようとしてくれたこと、導いてくれたことに感謝します。

 

皆さん、ごきげんよう。

これはキーストロークをエミュレートするウィンドウズ関数のプロトタイプである。

VOID WINAPI keybd_event(__in  BYTE bVk,               // Тип BYTE, занимает 1 байт
                        __in  BYTE bScan,             // Тип BYTE, занимает 1 байт
                        __in  DWORD dwFlags,
                        __in  ULONG_PTR dwExtraInfo
);

この関数はMT4ではバイトではなくintで呼ばれていることです。こんな感じです。

void keybd_event(int bVk,                 // Тип int, занимает 4 байта
                 int bScan,               // Тип int, занимает 4 байта
                 int dwFlags,
                 int dwExtraInfo);
何が問題なのか?4バイト以上転送しているか?ハードウェアによるのでしょうか?
 
220Volt:

皆さん、ごきげんよう。

これはキーストロークをエミュレートするウィンドウズ関数のプロトタイプである。

この関数はMT4ではバイトではなくintで呼ばれていることです。こんな感じです。

何が問題なのか?4バイト以上転送しているか?ハードウェアによるのでしょうか?

関数にパラメータを 渡す場合、最小量子化は32ビット整数とする。つまり、あなたの場合のbVkとbScanは、関数に渡される前にint型に変換されます。

だから、上にあげた関数のプロトタイプは互いに矛盾しないのです

Документация по MQL5: Основы языка / Функции / Передача параметров
Документация по MQL5: Основы языка / Функции / Передача параметров
  • www.mql5.com
Основы языка / Функции / Передача параметров - Документация по MQL5