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

 
Alexey Viktorov:
現在時刻の 17:08は33を示しています。つまり、時刻が01:00のバーナンバーは32になります。
datetime t=StringToTime("01:00");

これは正しい解答ではありません。もし 00:00 にテストを始めると、このバリエーションは 0 本のバーを与え、最も近い 01:00 の時間までに 46 本の M30 のバーがあるはずです。

 
Nauris Zukas:

判断を誤る。00.00にテストを開始した場合、このバリエーションは0本のバーを生成し、最も近い01.00時間までに46本のM30バーがあるはずです。

考え方を教えたので、分単位の00:59に最も近い01:00の棒を作る方法を知っておいてください。難しいことは何もありません。

 
Alexey Viktorov:

思考の方向性を示したのであって、分単位の00:59に最も近い01:00のバーをどう作るかは、あなた次第です。難しいことは何もありません。

いずれにしても、ループを使って一番近い時間を探すしかないでしょう。

 
Alexey Viktorov:
唯一の問題は、指定した時間以下のバーが1本あると、得られた値が何に相当するかなど、不要なものでメモリセルを埋めることがないことです。ただ、毎回チェックしています。


サイクルのないバーの指定時間に最も近いものを見つける方法がわからない。もし、複雑なことがなければ、機能を教えてください。

 

専門家の皆様、mt-4でテスト結果を ファイルにプルする方法を教えてください。

を、ここに記載されているような更なる処理のために https://www.mql5.com/ru/articles/1467?

Автоматическая оптимизация торгового робота в процессе реальной торговли
Автоматическая оптимизация торгового робота в процессе реальной торговли
  • 2007.04.16
  • Igor Malcev
  • www.mql5.com
В статье описана и представлена библиотека функций, позволяющая проводить оптимизацию входных параметров советника, запуская оптимизацию непосредственно из советника.
 
Nauris Zukas:


サイクルのないバーの指定時間に最も近いものを見つける方法がわからない。もし、複雑なことがなければ、機能を教えてください。

......ただ、言葉がない......。

探している時間より少ないなら、探している時間を24時間分引かなければならないと推測するのは難しい。

 string st = "1:00";// можно и так писать "01:00"
 datetime t = StringToTime(st);

 if(TimeCurrent() < t)
  {
   MqlDateTime mqlDateTime; 
   TimeToStruct(t, mqlDateTime);
   mqlDateTime.day -= 1;
   t = StructToTime(mqlDateTime);
  }
 int b = Bars(_Symbol, PERIOD_M30, t, TimeCurrent());

出力を考慮せずに作られ、実行エラーの可能性をチェックする。他の実行方法もあり得るので、サンプルコードは書かないようにしています。今日はこの方法でやることにしましたが、明日はもっと便利な別のバリエーションが見つかるかもしれません。

 
Alexey Viktorov:

探している時間より少ないなら、探している時間を24時間分引かなければならないと推測するのは難しい。

そのため、推測するのは難しい。

アレクセイ・ヴィクトロフ

土日を考慮せず、実行ミスの可能性をチェックしながら作成。

最後にエラーを出さずに望ましい結果を得るには、どれだけ難しいコードを書かなければならないか!コードには土日祝日があります。ヒントと例をありがとう、私は新しいことを学びました、それはどこかで役に立つでしょう、しかし、今のところ私は私のバージョンが最も簡単で信頼できることを参照してください。

 
Nauris Zukas:

それだけに当てるのは難しいですね。

最終的にエラーなく望む結果を得るために、どれだけ複雑なコードを書かなければならないか!?週末や祝祭日など、市場が開く時間が異なる場合があります。ヒントと例をありがとう、私は新しい何かを学んだ、それは間違いなく役に立つだろうが、今のところ私は私のバージョンは、最も簡単で信頼性が高いことを参照してください。

なぜダメなのか?そしてその選択肢には、生きる権利がある。そして、それすらも興味深く感じました。いくつかの修正で、指定した時間、期間のバー番号を返す関数ができました。

int findBar(string strTime, ENUM_TIMEFRAMES period = PERIOD_CURRENT)
 {
  MqlDateTime mqlTime, mqlFindTime;
  TimeToStruct(StringToTime(strTime), mqlFindTime);
  datetime arrTime[];
  int copy = PeriodSeconds(PERIOD_D1)/PeriodSeconds(period);
  CopyTime(_Symbol, period, 0, copy, arrTime);
  ArraySetAsSeries(arrTime, true);
   for(int i = 0; i < copy; i++)
    {
     TimeToStruct(arrTime[i], mqlTime);
      if(mqlTime.hour == mqlFindTime.hour && mqlTime.min <= mqlFindTime.min)
      return(i);
    }
  return(-1);
}/********************************************************************/

.

 
Alexey Viktorov:

なぜダメなのか?そしてその選択肢には、生きる権利がある。そして、それすらも興味深く感じました。一部の修正により、この関数は指定された時刻と期間のバー番号を返します。

.

ありがとうございました。
メモリーセルという言葉がありましたが、私の知識ではまだまだです。私が理解する限り、Expert Advisorのテスト速度に影響するのでしょうか?何らかの方法で測定しているのか、それともテストのスピードで判断しているのか。

 
Nauris Zukas:

ありがとうございました。
メモリーセル」とのことですが、今のところ私の知識は限られています。私が理解する限り、Expert Advisorのテスト速度に影響するのでしょうか?何らかの方法で測定しているのか、それともテストのスピードで判断しているのか。

自分のメモリーチップの話です。:)))

このような些細なことは、コードを書くときに簡単に再確認し、明確にし、必要に応じて実行し、また忘れることができるのです。