初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1489

 
Maksim Burov Commentを 含めると、ビジュアルテスターの動作が遅くなるのはなぜですか? これを修正するにはどのようなオプションがありますか? 最適化のスピードに影響しますか?

kanvas を使用する必要はありません。

ビジュアライゼーションでコメントがテスターの速度を低下させないためには、コメントが 30 ミリ秒を超える頻度で呼び出されないようにする必要があります。

例えばこんな感じです:

   static uint lastCalc= 0 ;
   uint cur= GetTickCount();
   if (cur-lastCalc> 30 ) {
      Comment("blablabla");
      lastCalc=cur; 
   }
あるいは、値をスキップしないことが重要であれば、Commentの代わりにPrintを使う。

どのような値の出力でも、より見やすくすることが重要であれば、kanvas を使用する方がよいでしょう。

https://www.mql5.com/ru/forum/277867/page8#comment_19186284
 
Maksim Burov コメントは 最適化のスピードには影響しません。
 
Maksim Burov #:

情報は定期的に変わります。
例えば、始値が最も低いポジションを見たい。
プリントに全部書いてもいいんだけど、見づらいし、見逃すこともある。それで、どこに間違いがあるのかすぐにわかります。

情報はティックごとに変更されないのですか?Nikolayはまた、単純にいくつかのタイムアウト後に出力することができますので、この出力の頻度を減らすことを提案した。
 


さて、もう一つ仕事があります。


注文(ポジション)がクローズした時刻をチェックするために追加しました。
すべてMQL4で書かれており、現在MQL5で書き直しているため、このチェックをどのように正しく適切に行うかという問題が生じました。

簡単に言えば、MQL5でどのようにコードを書き直すかということです。)

double CalculateProfitHistory() 
{
   double profit = 0;
   int  i, ototal = OrdersHistoryTotal();

   for(i = ototal-1; i >=0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
      {
         if(OrderSymbol() == Symbol() && OrderCloseTime() > 0)
         {
            if(OrderType() == OP_BUY || OrderType() == OP_SELL)
            {
               if(OrderMagicNumber() == Magic )
               {
                  if (LockTicket !=0)
                  {
                     if (OrderTicket() >= LockTicket)
                     {
                        profit += OrderProfit()+OrderCommission()+OrderSwap();
                     }                  
                  }
               }
            }
         }
      }
   }
   return(profit);
}
 
Maksim Burov #:


さて、また新たな挑戦だ。


注文(ポジション)がクローズした時刻をチェックするために追加しました。
すべてMQL4で書かれており、現在MQL5で書き直しているため、このチェックをどのように正しく適切に行うかという問題が生じました。

簡単に言えば、MQL5でどのようにコードを書き直すかということである。)

// сначала выбираем нужный интервал
HistorySelect(TimeStart,TimeCurrent()+10);

// перебираем ордера в интервале
for(i=HistoryOrdersTotal()-1;i>=0;i--)
         {
          ord=HistoryOrderGetTicket(i);

         // далее получаем (или сразу сравниваем) любые свойства ордера, типа
          o_sym=HistoryOrderGetString(ord, ORDER_SYMBOL);
          o_magic=HistoryOrderGetInteger(ord, ORDER_MAGIC);
          ...
         }

こんな感じだ。

 
Maksim Burov #:


さて、また新たな挑戦だ。


注文(ポジション)がクローズした時刻をチェックするために追加しました。
すべてMQL4で書かれており、現在MQL5で書き直しているため、このチェックをどのように正しく適切に行うかという問題が生じました。

簡単に言えば、MQL5でどのようにコードを書き直すかということである。)

検索されるのは注文(前の記事)ではなく、取引なので、次の コードを使うのが最も便利である。

HistoryPosition - неопубликованный функционал MQL5-языка.
HistoryPosition - неопубликованный функционал MQL5-языка.
  • 2023.11.22
  • www.mql5.com
HistoryPositionsTotal Возвращает количество всех закрытых позиций в истории. HistorySelect() не влияет на результат данной функции. int HistoryPositionsTotal(); Возвращаемое значение Значение типа
 
JRandomTrader #:

そんな感じだ。

失敗した( 私のコードの根拠をもう少し詳しく教えてください。

 
Maksim Burov #:

失敗しました(私のコードに基づいてもう少し詳しく説明してもらえますか?

おそらく、 Aleksandr Slavskiiの 変種を見たほうがいいでしょう。私はMQL4を使ったことがありませんし、ヘッジも使ったことがありません。

あるいは、ここと、念のためにここに 注目してください。

 
JRandomTrader #:

おそらく、 Aleksandr Slavskiiの 変種を見た方がいいだろう。私はMQL4を扱ったことがないし、ヘッジも扱ったことがない。

ーMQL4をー

これ以上ありません。ーこれらはー これらはー これらはー

ー注文をー取引ー。ー利益・手数料・スワップはー注文ではなくーではなくー。ー

 
こんにちは、VPSに 問題があります。MT4がオフの時、携帯に通知が来ません。どなたか、何が問題なのかアドバイスを いただけませんか?ありがとうございます。
理由: