포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 617

 

다른 옵션을 시도했습니다. 결과는 동일합니다. 이것이 어떻게 완전히 이해할 수 없습니다. 어떤 시점에서 iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end); 갑자기 더 넓은 범위의 막대를 계산하기 시작합니다. 누가 이해했는지 말해줘, 그는 머리 전체를 부러뜨렸다. 고맙습니다.


4:08:36 시간+i최저 테스트 시작

14:08:36 2004.09.29 00:00 시간+i최저 EURUSD,H1: NumberLastBar_beg= 24 NumberLastBar_end= 0
14:08:36 2004.09.29 00:00 시간+i최저 EURUSD,H1: i=18
14:08:36 2004.09.29 00:00 시간+i최저 EURUSD,H1: time_check_low_day=06:00
14:08:39 2004.09.29 01:00 시간+i최저 EURUSD,H1: NumberLastBar_beg= 25 NumberLastBar_end= 1
14:08:39 2004.09.29 01:00 시간+i최저 EURUSD,H1: i=19
14:08:39 2004.09.29 01:00 시간+i최저 EURUSD,H1: time_check_low_day=06:00
14:08:39 2004.09.29 02:00 시간+i최저 EURUSD,H1: NumberLastBar_beg= 26 NumberLastBar_end= 2
14:08:39 2004.09.29 02:00 시간+i최저 EURUSD,H1: i=20
14:08:39 2004.09.29 02:00 시간+i최저 EURUSD,H1: time_check_low_day=06:00
14:08:40 2004.09.29 03:00 시간+i최저 EURUSD,H1: NumberLastBar_beg= 27 NumberLastBar_end= 3
14:08:40 2004.09.29 03:00 시간+i최저 EURUSD,H1: i=21
14:08:40 2004.09.29 03:00 시간+i최저 EURUSD,H1: time_check_low_day=06:00
14:08:41 2004.09.29 04:00 시간+i최저 EURUSD,H1: NumberLastBar_beg= 28 NumberLastBar_end= 4
14:08:41 2004.09.29 04:00 시간+i최저 EURUSD,H1: i=31

14:08:41 2004.09.29 04:00 시간+i최저 EURUSD,H1: time_check_low_day=21:00

코드:


정적 정수 PrevTime=0;
//+----------------------------------------------- --------------------+
//| |
//+----------------------------------------------- --------------------+
정수 시작()
{
if(시간[0]<=이전시간) return(0);
PrevTime=시간[0];
///////////////
// CheckForLongetivityClose_Sell();
double pBid=NormalizeDouble(입찰가,자리수),Low_Now=낮음[1];
/////////////
정수 n_beg=1; // 오늘의 인덱스, 이 경우 1 - 어제
datetime DayTime_beg=iTime(NULL,PERIOD_D1,n_beg); // "n"일의 시작(초)
int NumberLastBar_beg=iBarShift(NULL,0,DayTime_beg);

정수 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=시간[iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end)];
int i=iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end);
인쇄("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");


리턴(0);
}

 
가장 이해할 수 없는 것은 이것이 역사의 이 부분에서 정확히 발생하고 다른 부분에서는 정상이라는 것입니다.
 
DiPach :

코드가 실생활이나 데모 계정에서만 사용된다면 귀하와 유사한 옵션이 더 편리합니다. 그러나 전략 테스터를 사용할 때 문제가 발생할 수 있습니다.


예를 들어 무엇? 왜 나에게는 아무 문제 도 일으키지 않지만 당신에게는 "발생할 수 있습니다".
 

이해가 안되는 부분이 있습니다

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

여기 인쇄물에서 5e-005.0과 같은 쓰레기로 밝혀졌습니다.

가격이전 값

PriceOld   = NormalizeDouble (Bid, Digits ); 
다 더하는 것이 정상인데 빼면 왜 그럴까?
 
001 :
가장 이해할 수 없는 것은 이것이 역사의 이 부분에서 정확히 발생하고 다른 부분에서는 정상이라는 것입니다.
iLowest() 도움말을 주의 깊게 읽으십시오. 검색할 요소의 수는 무엇이어야 합니까? 그리고 당신은 무엇을 가지고 있습니다.
 
001 :

다른 옵션을 시도했습니다. 결과는 동일합니다. 이것이 어떻게 완전히 이해할 수 없습니다. 어떤 시점에서 iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end); 갑자기 더 넓은 범위의 막대를 계산하기 시작합니다. 누가 이해했는지 말해줘, 그는 머리 전체를 부러뜨렸다. 고맙습니다.


4:08:36 시간+i최저 테스트 시작

14:08:36 2004.09.29 00:00 시간+i최저 EURUSD,H1: NumberLastBar_beg= 24 NumberLastBar_end= 0
14:08:36 2004.09.29 00:00 시간+i최저 EURUSD,H1: i=18
14:08:36 2004.09.29 00:00 시간+i최저 EURUSD,H1: time_check_low_day=06:00
14:08:39 2004.09.29 01:00 시간+i최저 EURUSD,H1: NumberLastBar_beg= 25 NumberLastBar_end= 1
14:08:39 2004.09.29 01:00 시간+i최저 EURUSD,H1: i=19
14:08:39 2004.09.29 01:00 시간+i최저 EURUSD,H1: time_check_low_day=06:00
14:08:39 2004.09.29 02:00 시간+i최저 EURUSD,H1: NumberLastBar_beg= 26 NumberLastBar_end= 2
14:08:39 2004.09.29 02:00 시간+i최저 EURUSD,H1: i=20
14:08:39 2004.09.29 02:00 시간+i최저 EURUSD,H1: time_check_low_day=06:00
14:08:40 2004.09.29 03:00 시간+i최저 EURUSD,H1: NumberLastBar_beg= 27 NumberLastBar_end= 3
14:08:40 2004.09.29 03:00 시간+i최저 EURUSD,H1: i=21
14:08:40 2004.09.29 03:00 시간+i최저 EURUSD,H1: time_check_low_day=06:00
14:08:41 2004.09.29 04:00 시간+i최저 EURUSD,H1: NumberLastBar_beg= 28 NumberLastBar_end= 4
14:08:41 2004.09.29 04:00 시간+i최저 EURUSD,H1: i=31

14:08:41 2004.09.29 04:00 시간+i최저 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 два

1. 이 줄을 바꾸는 것이 좋습니다.

 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개 이상의 타이머를 사용할 수 있습니까? 이벤트 세트 타이머 (5);
 
pu6ka :
iLowest() 도움말을 주의 깊게 읽으십시오. 검색할 요소의 수는 무엇이어야 합니까? 그리고 당신은 무엇을 가지고 있습니다.

어째서인지 범위가 있고 이것이 요소의 수라고 생각했습니다. 감사합니다!
 
AlexeyVik :

이 라인에주의하십시오

1. 이 줄을 바꾸는 것이 좋습니다.

2. NumberLastBar_beg는 어제 첫 번째 막대의 번호이며 , 검색을 수행해야 하는 막대의 수 대신 이 값을 설정합니다.


1. 여기에서 변수 i는 순전히 제어용, 인쇄용 입니다. 그리고 막대를 교체하면서 나는 엉망이 되었습니다. 팁 고마워!
사유: