どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 617

 

いろいろなオプションを試した。結果は同じです。どうしてそんなことになるのか、理解できません。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)です。
}

 
一番不可解なのは、この特殊な部分で起こるのであって、他の部分では普通なんです。
 
DiPach:

リアル口座やデモ口座でしかコードを使用しないのであれば、こちらの方が便利です。 しかし、ストラテジーテスターでは、使用時に問題が発生する場合が あります。


例えば、どんな?私はどこにも問題が ないのに、あなたが「あるかもしれない」理由。
 

理解できない部分がある。

double Delta =  NormalizeDouble(MathAbs(Bid-PriceOld),Digits);

プリンターで5e-005.0みたいなガラクタが出るんです。

PriceOld値

PriceOld   = NormalizeDouble(Bid,Digits); 
全部足すと、引き算でこうなるのはなぜ?
 
001:
一番混乱するのは、この特殊な部分で起こるのであって、他の部分では普通なのです。 。
iLowest()の ヘルプをよく読んでください。検索する項目数は?そして、それはあなたの中で何に相当するのでしょう。
 
001:

さまざまなバリエーションを試した結果は同じです。どうしてそうなるのか、まったくもって不明である。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

コード

static int    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];

2.NumberLastBar_begは昨日のバーの数で、この値は検索 するバーの数と置き換えることができます。

3.コードを貼り付けたら、テキスト入力ウィンドウのツールバーにある「SRC」ボタンを探してください。

 
AlexeyVik:

例えば、どのようなものですか?私はどこも問題 ないのですが、あなたが「問題かもしれない」と思うのはなぜでしょう。

ちょっと物思いにふけっています。既存のインジケータのコードを、はっきり見えるところに並べたくない(テスター用の別条件を適用しない場合)。考えるだけでなく、何を基準に処方するかは、明確にするために別にしています。

しかし、あなたが主張するならば - もちろん、私は最も可能性が高いですし、そこに別の何かを処方するために、彼が持っている複雑な "詰め物 "を置き換えることができますについて考え始めるでしょう。
 
EAで1つ以上のタイマーを使用することはできますか?EventSetTimer(5)です。
 
pu6ka:
iLowest()のヘルプをよく読んでください。検索する要素の数は?そして、それは何に相当するのでしょうか?

なぜか範囲だと思っていたのですが、要素数なんですね!ありがとうございます。
 
AlexeyVik:

これらの行に注目してください。

このラインは入れ替えた方が良い。

2.NumberLastBar_begは昨日の最初のバーの数で、検索 したいバーの数の代わりにこの値を入れる。


i変数は、ここでは純粋にPrintの 制御のためのものです。バーを調整するときにミスをした。ご指摘ありがとうございます。