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

 
Igor Makanu:

はできません。

iBars()を使って利用可能な履歴を確認します。

SZZ: 私が間違っていなければ、テスターでは、Expert Advisorを起動したときに1000本のバーが利用可能で、その後、新しいデータが生成されるにつれてバーの数が増えていきます。テスターは、対応するすべてのTFの履歴をモデル化します。すなわち、H1でテストを実行し、テスト中にTF M1のデータにアクセスした場合、開始時にH1の1000バー分利用可能となり、したがって60 * 1000 = 60,000 バー M1です。

このような記事をもっと読む必要がありますhttps://www.mql5.com/ru/articles/1511

どうすればいいのか、考えがある。

EAを立ち上げて1ヶ月間取引しないようにすることができます。

で、翌月には取引が開始されるだけです。

履歴を蓄積し、分散係数を算出してから取引します。


メソッドはいかがですか?



でも、「最初の月は取引されなかった」と記録するにはどうしたらいいのでしょう...。

いろいろな期間でテストしてみる

いつも手作業で日付を修正するのは嫌ですからね。

手作業で日付を訂正し続けるのは嫌だ。

 
multiplicator:

やり方がわかった。

EAを起動させて、1ヶ月間取引しないようにすればいい。

これはあなたの問題に必要なものですが、もう一度、iBars()を使用 すると、テスターでEAが利用できる履歴の量を知ることができます。

 

multiplicator:
счётчик, что ли включить, дней...

イゴール・マカヌ

しかし、もう一度iBars()を使えば、テスターでEAが利用できる履歴の量を知ることができます。

その通り!

iBars() が> 30 000になったとき - 分散を計算してからEAを取引 させる。

返信してくれた皆さん、ありがとうございます。

 

こんにちは!経験の浅いビギナートレーダーの ためのヘルプです。EAを持っているが、ストップロスがない!?EAにストップロスを追加できる人(可能なら無料で!)。

 
Tem4ik:

こんにちは!経験の浅いビギナートレーダーの ためのヘルプです。EAを持っているが、ストップロスがない!?EAにストップロスを追加できる人(可能なら無料で!)。


ここにコードを投稿してください(デコンパイルされていない場合)、多分誰かが助けてくれるでしょう。

 
#define  list "Cryptocurrency Market\\List.csv"

enum FILE_LOCATION
{
   LOCATE_TERMINAL = 0,
   LOCATE_COMMON = FILE_COMMON,
};

void GetLocalSource(FILE_LOCATION &dir)
{
   GetLocalList(FileOpenEx(list, FILE_WRITE|FILE_READ|FILE_CSV|dir));
}

int FileOpenEx(const string fname, int flags, int delimeter =';', uint codepage = CP_ACP)
{
   bool ex;
   if(flags > 4095)
      ex = FileIsExist(fname, FILE_COMMON);
   else
      ex = FileIsExist(fname);
   if(!ex) return -1;
   return FileOpen(fname, flags, delimeter, codepage);
}

bool GetLocalList(const int handle)
{
   if(handle == INVALID_HANDLE) {Print("Handle err: ", handle, " | ", GetLastError()); return false;}
...
}

私はFileIsExistを介して ファイルを見つけることができません、関数はそれを見ようとしません。私はすでにこのファイルを一般ディレクトリとターミナルディレクトリの両方にシャッフルしました - 結果は変わりません

2019.01.06 16:11:14.957 CoinMarketCap EURUSD,日足:ハンドルエラー:-1|5020

List.csv を書き出す関数は,同じリストマクロの代入で List.csv を開きます.

エラーは何ですか?

 
Ilya Prozumentov:

私はFileIsExistを介してファイルを見つけることができません、関数はそれを見ようとしません。私はすでにこのファイルを一般ディレクトリとターミナルディレクトリの両方にシャッフルしました - 結果は変わりません

2019.01.06 16:11:14.957 CoinMarketCap EURUSD,日足:ハンドルエラー:-1|5020

List.csv を書き出す関数は,同じリストマクロの代入で List.csv を開きます.

エラーは何ですか?

Try this#define list "Files³³Cryptocurrency Market³³List.csv"

ファイルはFilesフォルダーにあるはずです

 
Vladimir Pastushak:

Try this#define list "Files³³Cryptocurrency Market³³List.csv"

ファイルはFilesフォルダーにあるはずです

うまくいかなかった。


P.S 既存のファイル名の最後にスペースがある問題を発見しました。

 

こんにちは。

週の始まりと終わりの日付(日付形式)を決定する方法を教えてください。オシレーターは週の終わりでゼロになり、新しい週の始まりでゼロからカウントを開始する必要があります。今のところ、日ごとにゼロにする方法は分かっているのですが、週ごとにゼロにする方法が全く分かりません。こうして毎日リセットしています。

void Calculate(int i)
  {
   double summ;
   datetime startTime  = StringToTime(TimeToString(Time[i],TIME_DATE)+" "+StartTime); // StartTime=00:10
   datetime endTime    = StringToTime(TimeToString(Time[i],TIME_DATE)+" "+EndTime);   // EndTime=23.50
   datetime currentTime= StringToTime(TimeToString(Time[i],TIME_DATE)+" "+TimeToString(Time[i],TIME_MINUTES));
//Print("Start = ",TimeToString(startTime,3));
//Print("End = ",TimeToString(endTime,3));
   if(CheckTimer(i,startTime,endTime,currentTime,0))
     {
      summ = MainBuffer[i+1];
      summ+= InfluenceBuffer[i];
      MainBuffer[i]=summ; 
     }
   else
     {
      summ=0.0;
      MainBuffer[i]=summ;
      }
  }

感謝

 
Gerkl:

週の始まりと終わりの日付(日付形式)を決定する方法を教えてください。

//1. для времени datetime t
if(TimeDayOfWeek(t))==1) // Понедельник
if(TimeDayOfWeek(t))==5) // Пятница

//2. для текущего времени
if(DayOfWeek() = 1) // Понедельник
if(DayOfWeek() = 5) // Пятница

ほとんどの場合、バリアント№1が必要で、その後、バーを検索する計算サイクルのインジケータで、次の構造を使用します。

if(TimeDayOfWeek(Time[i]))==1) // Понедельник
if(TimeDayOfWeek(Time[i]))==5) // Пятница
という条件を確認した後、Time[i]に正しい時刻が入っていることを確認します。