staticint PrevTime=0;
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+int start()
{
if(Time[0]<=PrevTime) return(0);
PrevTime=Time[0];
//////////////// CheckForLongetivityClose_Sell();double pBid=NormalizeDouble(Bid,Digits),Low_Now=Low[1];
////////////int n_beg=1; // индекс дня, в данном случае 1 - вчерашний деньdatetime DayTime_beg=iTime(NULL,PERIOD_D1,n_beg); // Начало дня "n" в секундахint NumberLastBar_beg=iBarShift(NULL,0,DayTime_beg);
int n_end=0; // индекс дня, в данном случае 1 - вчерашний деньdatetime DayTime_end=iTime(NULL,PERIOD_D1,n_end); // Начало дня "n" в секундахint NumberLastBar_end=iBarShift(NULL,0,DayTime_end);
Print(" NumberLastBar_beg= ",NumberLastBar_beg," NumberLastBar_end= ",NumberLastBar_end);
//---------------------------------------------------------------------datetime Time_Check_Low_Day=Time[iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end)];
int i=iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end);
Print(" i=",i);
string time_check_low_day=TimeToStr(Time_Check_Low_Day,TIME_MINUTES);
/////////////Print(" time_check_low_day=",time_check_low_day);
datetime time_check_verify=StrToTime("H_check_beg:M_check_beg");
return(0);
}
このセリフに注目してみてください。
datetime Time_Check_Low_Day=Time[iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end)];//iLowest раз
int i=iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end); //iLowest два
このラインは入れ替える必要があります。
int i=iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end); // исправлять не стал
datetime Time_Check_Low_Day=Time[i];
いろいろなオプションを試した。結果は同じです。どうしてそんなことになるのか、理解できません。iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end); がある瞬間、突然より大きなバー範囲の計算を開始します。わかる方アドバイスお願いします、頭が壊れそうです。ありがとうございます。
4:08:36 Time+iLowestテスト開始14:08:36 2004.09.29 00:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 24 NumberLastBar_end= 0
14:08:36 2004.09.29 00:00 Time+iLowest EURUSD,H1: i=18
14:08:36 2004.09.29 00:00 Time+iLowest EURUSD,H1: time_check_low_day=06:00
14:08:39 2004.09.29 01:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 25 NumberLastBar_end= 1
14:08:39 2004.09.29 01:00 Time+iLowest EURUSD,H1: i=19
14:08:39 2004.09.29 01:00 Time+iLowest EURUSD,H1: time_check_low_day=06:00
14:08:39 2004.09.29 02:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 26 NumberLastBar_end= 2
14:08:39 2004.09.29 02:00 Time+iLowest EURUSD,H1: i=20
14:08:39 2004.09.29 02:00 Time+iLowest EURUSD,H1: time_check_low_day=06:00
14:08:40 2004.09.29 03:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 27 NumberLastBar_end= 3
14:08:40 2004.09.29 03:00 Time+iLowest EURUSD,H1: i=21
14:08:40 2004.09.29 03:00 Time+iLowest EURUSD,H1: time_check_low_day=06:00
14:08:41 2004.09.29 04:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 28 NumberLastBar_end= 4
14:08:41 2004.09.29 04:00 Time+iLowest EURUSD,H1: i=31
14:08:41 2004.09.29 04:00 Time+iLowest EURUSD,H1: time_check_low_day=21:00
コード
静的 int PrevTime=0;
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
int start()
{
if(Time[0]<=PrevTime) return(0);
PrevTime=Time[0]です。
//////////////
// CheckForLongTimeClose_Sell();
double pBid=NormalizeDouble(Bid,Digits),Low_Now=Low[1];
////////////
int n_beg=1;// その日のインデックス,この場合は1が昨日の日
datetime DayTime_beg=iTime(NULL,PERIOD_D1,n_beg); // 一日の始まり "n" を秒数で表したもの
intLastBar_beg=iBarShift(NULL,0,DayTime_beg);
int n_end=0;// その日のインデックス,この場合は1が昨日の日
datetime DayTime_end=iTime(NULL,PERIOD_D1,n_end); // 一日の始まり "n" を秒数で表す。
int NumberLastBar_end=iBarShift(NULL,0,DayTime_end);
Print(" NumberLastBar_beg= ",NumberLastBar_beg," NumberLastBar_end= ",NumberLastBar_end).Print(" NumberLastBar_beg= ",NumberLastBar_end= ",NumberLastBar_end);
//---------------------------------------------------------------------
datetime Time_Check_Low_Day=Time[iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end)] とする。
int=iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end);
Print(" i=",i);
string time_check_low_day=TimeToStr(Time_Check_Low_Day,TIME_MINUTES);
/////////////
Print(" time_check_low_day=",time_check_low_day;)
datetime time_check_verify=StrToTime("H_check_beg:M_check_beg");
return(0)です。
}
リアル口座やデモ口座でしかコードを使用しないのであれば、こちらの方が便利です。 しかし、ストラテジーテスターでは、使用時に問題が発生する場合が あります。
例えば、どんな?私はどこにも問題が ないのに、あなたが「あるかもしれない」理由。
理解できない部分がある。
プリンターで5e-005.0みたいなガラクタが出るんです。
PriceOld値
全部足すと、引き算でこうなるのはなぜ?一番混乱するのは、この特殊な部分で起こるのであって、他の部分では普通なのです。 。
さまざまなバリエーションを試した結果は同じです。どうしてそうなるのか、まったくもって不明である。iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end); がある瞬間、突然より大きなバー範囲の計算を開始します。わかる方アドバイスお願いします、頭が壊れそうです。ありがとうございます。
4:08:36 Time+iLowestテスト開始14:08:36 2004.09.29 00:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 24 NumberLastBar_end= 0
14:08:36 2004.09.29 00:00 Time+iLowest EURUSD,H1: i=18
14:08:36 2004.09.29 00:00 Time+iLowest EURUSD,H1: time_check_low_day=06:00
14:08:39 2004.09.29 01:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 25 NumberLastBar_end= 1
14:08:39 2004.09.29 01:00 Time+iLowest EURUSD,H1: i=19
14:08:39 2004.09.29 01:00 Time+iLowest EURUSD,H1: time_check_low_day=06:00
14:08:39 2004.09.29 02:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 26 NumberLastBar_end= 2
14:08:39 2004.09.29 02:00 Time+iLowest EURUSD,H1: i=20
14:08:39 2004.09.29 02:00 Time+iLowest EURUSD,H1: time_check_low_day=06:00
14:08:40 2004.09.29 03:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 27 NumberLastBar_end= 3
14:08:40 2004.09.29 03:00 Time+iLowest EURUSD,H1: i=21
14:08:40 2004.09.29 03:00 Time+iLowest EURUSD,H1: time_check_low_day=06:00
14:08:41 2004.09.29 04:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 28 NumberLastBar_end= 4
14:08:41 2004.09.29 04:00 Time+iLowest EURUSD,H1: i=31
14:08:41 2004.09.29 04:00 Time+iLowest EURUSD,H1: time_check_low_day=21:00
コード
このセリフに注目してみてください。
このラインは入れ替える必要があります。
int i=iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end); // исправлять не стал datetime Time_Check_Low_Day=Time[i];
2.NumberLastBar_begは昨日のバーの数で、この値は検索 するバーの数と置き換えることができます。
3.コードを貼り付けたら、テキスト入力ウィンドウのツールバーにある「SRC」ボタンを探してください。
例えば、どのようなものですか?私はどこも問題 ないのですが、あなたが「問題かもしれない」と思うのはなぜでしょう。
ちょっと物思いにふけっています。既存のインジケータのコードを、はっきり見えるところに並べたくない(テスター用の別条件を適用しない場合)。考えるだけでなく、何を基準に処方するかは、明確にするために別にしています。
しかし、あなたが主張するならば - もちろん、私は最も可能性が高いですし、そこに別の何かを処方するために、彼が持っている複雑な "詰め物 "を置き換えることができますについて考え始めるでしょう。iLowest()のヘルプをよく読んでください。検索する要素の数は?そして、それは何に相当するのでしょうか?
これらの行に注目してください。
このラインは入れ替えた方が良い。
2.NumberLastBar_begは昨日の最初のバーの数で、検索 したいバーの数の代わりにこの値を入れる。
i変数は、ここでは純粋にPrintの 制御のためのものです。バーを調整するときにミスをした。ご指摘ありがとうございます。