MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1166

 

OrdersTotal()でシンボルによる注文選択を設定する方法を教えてください。

   int total=OrdersTotal();

   if(total==0&&Bid>=OrderBuy&&Bid<=OrderBuy+10*Point)
    {
     if(OrderSend(Symbol(),OP_BUY,Lot,Ask,5,0,0,NULL,0,0,clrNONE)){::Alert(" Order Open ");}
    }

今は、1つのペアでオープンオーダーがあると、他のペアでオープンしないんです。

 
MakarFX:

OrdersTotal()でシンボルによる注文選択を設定する方法を教えてください。

さて、あるペアでオープンオーダーがあった場合、他のペアでオープンすることはありません。

コドベースを見ると、すべてのEAに事例があります。

 
Vladimir Pastushak:

コドベースを見ると、すべてのアドバイザーに例があります。

私はプログラマーではありません(

私にはちょっと複雑なんです。

 
MakarFX:

私はプログラマーではありません(

私にはちょっと複雑なんです。

複雑なことではないんです。

基本的なEAを書くために、ここにすべての機能https://www.mql5.com/ru/forum/131859

OrdersTotal()はターミナルにある未決済注文の総数(0からの番号)で、それをOrderSelect()で一つずつ選択(ループ内を移動)して必要な注文を操作してください。

for (i=OrdersTotal()-1; i>=0; i--)
{
  if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
  {
   // проверим символ ордера, проверим магикномер ордера....
  }
}
Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
MakarFX:

OrdersTotal()でシンボルによる注文選択を設定する方法を教えてください。

今現在、あるペアでオープンオーダーがあった場合、他のペアではオープンされない。

定期的に自分の注文を随時確認(自分で数える)する必要がある。
私はすべてのEAで、重要なアクションの前に呼び出されるループ(巨大なメソッド)を持っています。

for(int pos=OrdersTotal()-1; pos>=0;pos--) {

        if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {

                selectFailed=true; /* не удалось "выбрать" ордер - статистика может быть неверной */
                continue;

        }

        if (OrderCloseTime()!=0) { /* ордер закрыт но ещё не удалён из списка*/ continue; }

        if (OrderMagicNumber()==0) { /* ордер выставлен юзером */ } continue;
        else if (OrderMagicNumber()!=_Magic) { /* ордер выставлен другим советником */ continue; }

        if (OrderSymbol()!=_Symbol) { /* ордер с правильным Magic но на другом символе */ continue; }

       /// обработка рабочих ордеров, с правильным Magic на символе советника (то есть наш ордер)

       /// проверяются несработки, считается кол-во, статистика, позиции и прочее 

}

シンボル上の注文をチェックするとハイライトさ れます

 
Maxim Kuznetsov:

必要に応じて、定期的に注文を確認する(セルフチェック)。
各EAにループ(巨大なメソッド)があり、重要なアクションの前に呼び出されるようになっています。

for(int pos=OrdersTotal()-1; pos>=0;pos--) {

        if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {

                selectFailed=true; /* не удалось "выбрать" ордер - статистика может быть неверной */
                continue;

        }

        if (OrderCloseTime()!=0) { /* ордер закрыт но ещё не удалён из списка*/ continue; }

        if (OrderMagicNumber()==0) { /* ордер выставлен юзером */ } continue;
        else if (OrderMagicNumber()!=_Magic) { /* ордер выставлен другим советником */ continue; }

        if (OrderSymbol()!=_Symbol) { /* ордер с правильным Magic но на другом символе */ continue; }

       /// обработка рабочих ордеров, с правильным Magic на символе советника (то есть наш ордер)

       /// проверяются несработки, считается кол-во, статистика, позиции и прочее 

}

シンボルがハイライト されている順番でチェックする

余談ですが、過去の注文の テロップが消えてしまうことがあるそうです。MT4での注文のティッカー(SELECT_BY_TICKET)とMT5でのディールやポジションのティッカーが変わる可能性があるかということです。

また、チケットのOrderSelect後にオーダーを変更することは可能ですか?例えば次の日。EAが無効になっていない。

保留中の注文が成行注文になった場合、その種類別に表示することができます。成行注文が終了した場合、注文終了時刻を調べ、0と等しくない OrderCloseTime()!=0

保留中の注文が有効期限内に終了した場合、注文チケットでどのように追跡するのでしょうか。

それと質問ですが、ライフタイムはマーケットオーダー(MT4)にもありますが、機能するのでしょうか?

 
MakarFX:

OrdersTotal()でシンボルによる注文選択を設定する方法を教えてください。

さて、あるペアでオープンオーダーがあった場合、他のペアでオープンすることはありません。

問題はすでに解決している。皆さん、ありがとうございました。

 
親愛なる皆様、こんにちは。何がおかしいのか理解できません。なぜAlert: time3-time1 =間違ったdatetimeなのでしょうか?
datetime time1 = iTime(NULL,0,1);
datetime time3 = iTime(NULL,0,3);
datetime delta3 = (time3-time1);  Alert("time3-time1 = ",delta3); 


 
novichok2018:
親愛なる皆様、こんにちは。Alert: time3-time1 = wrong datetimeと表示されるのですが、何がおかしいのでしょうか? 。


というのは、数字がマイナスだからです :-)

この論理では、時間1は時間3より常に多い。

 
Maxim Kuznetsov:

というのは、数字がマイナスだからです :-)

与えられたロジックでは、時間1は時間3よりも常に__多くなります。

ありがとうございます! 時々、脳がおかしくなるんです。