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

 
EVGENII SHELIPOV #:

Makarさん、この関数がコードのどの位置から参照されるのか、説明していただけますか?

注文が1件以上ある場合

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
   {
//---
   if(CountTrade()>1) TrailingGroupOrder();
   }
 
MakarFX #:

すみません、4人分書いてしまいました...。

5でチェックイン!効いてますね。

ありがとうございます。私のバージョンが動作しないのは非常に不思議です。脳が壊れました))

 
Andrey Sokolov #:

ありがとうございます。私のオプションが機能しないのは非常に不思議です。

変じゃないんだ...。

パスは書いていませんので、あなたのコードです。

   string src_path; 
   string dst_path; 
   StringConcatenate(src_path,"","//",name_file); 
   StringConcatenate(dst_path,name_folder,"//",name_file); 
   ResetLastError();
   if(FileMove(src_path,0,dst_path,0)){

また、"src_path" と "dst_path" は何に相当するのでしょうか?

 
MakarFX #:

注文が1件以上ある場合

No Makar, it doesn't work

 
MakarFX #:

変じゃないんです...。

パスは書いていませんので、あなたのコードです。

また、"src_path "と "dst_path "は何に相当するのでしょうか?

次の2行に書かれています。ヘルプから引用しました。https://www.mql5.com/ru/docs/files/filemove

これはポイントではありません。このコードはmt4で動作し、私はmt5で最初のスクリーンショットを動かしました。

 
EVGENII SHELIPOV #:

No Makar, it doesn't work

そんなはずはない...プライベートメッセージですべてのコードを教えてください。
 
MakarFX #:
まさか...。全コードを受信トレイで教えてください。

をお送りしました。

 
EVGENII SHELIPOV #:

をお送りしました。

返信
 
MakarFX #:
リプライド

マカー ありがとうございます。

 
MakarFX #:
リプライド

Good day Makar !!!

アドバイスに従い、void OnTick()関数にTrailingGroupOrder()関数を付けて、グループオーダーのトレールを修正するコマンドを送信できる場所を見つけたのですが、なんとグループオーダーのトレールが動き出しました。しかし、喜びは長くは続かなかった。よく見ると、minチケットのある注文だけトリルされている。

//+----------------------------------------------------------------------------+
//| Трейлинг стоп групповых ордеров                                            |
//+----------------------------------------------------------------------------+
void TrailingGroupOrder()
{
    for(int i = OrdersTotal()-1; i>=0; i--)
    {
     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
       {
       if(OrderType() == OP_BUY && Bid - GetAveragePrice() > TrailingStopGroupOrder*Point)
        {
        if(Bid - GetAveragePrice() > TrailingStopGroupOrder*Point || OrderStopLoss() == 0)
         {
         if(OrderStopLoss() < Bid - (TrailingStep + TrailingStopGroupOrder )*Point || OrderStopLoss() == 0)
          {
          if(!OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid - TrailingStopGroupOrder*Point, Digits), tp, 0))
                    Print("Ошибка модификации групповых ордеров на покупку!");
          }
         }
        }
        if(OrderType() == OP_SELL && GetAveragePrice() - Ask > TrailingStopGroupOrder*Point)
         {
         if(GetAveragePrice() - Ask > TrailingStopGroupOrder*Point || OrderStopLoss() == 0)
           {
            if(OrderStopLoss() > Ask + (TrailingStep + TrailingStopGroupOrder)*Point || OrderStopLoss() == 0)
              {
              if(!OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask + TrailingStopGroupOrder*Point, Digits), tp, 0))
                    Print("Ошибка модификации групповых ордеров на продажу!");
              }
           }
         }
      } 
    }
}

一度に全部ではなく、最初の(最小の)注文の修正に問題がある可能性が非常に高いと推測されます。

グリッド内のすべての注文を一度に変更するにはどうしたらいいか、マカーがアドバイスしてくれました。