찻주전자의 질문 - 페이지 63

 
masharov :

Expert Advisor는 다른 시간대의 지표를 사용합니다. Advisor의 테스트에서 표시기의 잘못된 데이터가 나타납니다.

고문 자체는 M5에서 작동하고 표시기는 H4에서 작동합니다. 동일한 시간 프레임(M5)에 호출된 표시기는 올바른 값을 반환합니다.

반환된 값은 지표 값과 유사하지만 가격 차트 창에 지표가 중첩될 때 보이는 실제 값과 다릅니다.

문제가 무엇입니까?

표시기 호출 코드의 예:

가능한 이유:

- 표시기에서 처음 14개 막대의 규칙은 준수되지 않습니다. https://www.mql5.com/ru/articles/15

- 현재 시간 프레임과 사전 설정된 시간 프레임 사이의 상관 관계가 관찰되지 않습니다(예: 다른 시간 프레임에 원하는 극한값이 있는 막대의 일련 번호가 사전 지정된 것과 다를 가능성이 큽니다. 따라서 높음, 낮음 등의 값은 완전히 다릅니다) -이 모든 것은 지표의 특정 구현에 달려 있습니다. 다른 기간의 비율을 통해 공식에 따라 정확히 무엇과 연관되고 다시 계산되어야하는지 명확하게 이해해야합니다.

- 이전 표시기 값이 이전 틱의 버퍼에 남아 있을 수 있으며 빈 값으로 버퍼를 다시 초기화해야 할 수 있습니다. ArrayInitialize (배열, EMPTY_VALUE ).

Индикатор от индикатора в MQL5
Индикатор от индикатора в MQL5
  • 2010.02.08
  • MetaQuotes Software Corp.
  • www.mql5.com
При написании индикатора, который использует краткую форму вызова функции OnCalculate(), можно упустить то обстоятельство, что индикатор может рассчитываться не только на ценовых данных, но и на данных другого индикатора (встроенного или пользовательского - не имеет значения). Вы хотите улучшить индикатор, чтобы он правильно считался не только на ценовых данных, но и значениях другого индикатора? В этой статье мы по шагам пройдем все необходимые этапы такой модификации и выведем дополнительные полезные правила для правильного написания индикатора.
 
x100intraday :

가능한 이유:

- 표시기에서 처음 14개 막대의 규칙은 준수되지 않습니다. https://www.mql5.com/ru/articles/15

- 현재 시간 프레임과 사전 설정된 시간 프레임 사이의 상관 관계가 관찰되지 않습니다(예: 다른 시간 프레임에 필요한 극한값이 있는 막대의 일련 번호는 사전 지정된 것과 다를 가능성이 큽니다. , 결과적으로 높음, 낮음 등의 값이 완전히 다릅니다) -이 모든 것은 지표의 특정 구현에 달려 있습니다.

- 이전 틱의 이전 값이 표시기에 남아 있을 수 있으며 빈 값으로 버퍼를 다시 초기화해야 할 수 있습니다. ArrayInitialize (배열, EMPTY_VALUE ).

1. 가격 차트에서 모든 막대에 지표가 그려집니다.

2. 분석했다. 여기에서 모든 것이 정상입니다.

3. 도움이 되지 않았다

 

도움말에 따르면 다음 형식으로 날짜/시간을 나타낼 수 있습니다.

D'12:00:00'

날짜/시간 유형의 변수에 값을 할당합니다.

 datetime start = D'12:00:00'

컴파일하면 경고가 표시됩니다.

왜요?

 
Urain :
날짜가 지정되지 않았기 때문에 시간 12시 00분 00초만 표시됩니다. 날짜는 콜론이 아닌 점으로 기록됩니다.

도움말은 다음과 같이 말합니다.

날짜(년, 월, 일) 또는 시간(시, 분, 초) 또는 모두를 생략할 수 있습니다. 값의 범위는 1970년 1월 1일부터 3000년 12월 31일까지입니다.

예:

D'2004.01.01 00:00' // 새해
D'1980.07.19 12:30:27'
D'19.07.1980 12:30:27'
D'19.07.1980 12' // D'1980.07.19 12:00:00'과 동일
D'01.01.2004' // D'01.01.2004 00:00:00'과 동일
D'12:30:27' // D'[컴파일 날짜] 12:30:27'과 동일
D'' //D'[컴파일 날짜] 00:00:00'과 동일

...

아니면 내가 오해하고 있습니까?

 
masharov :

고문 자체는 M5에서 작동하고 표시기는 H4에서 작동합니다. 동일한 시간 프레임(M5)에 호출된 표시기는 올바른 값을 반환합니다.

나는 계속해서 두 번째 요점을 주장한다.

동일한 TF에서 올바른 값이 반환된다고 직접 작성합니다. 물론 다른 값에서는 현재 TF에 대해 예상한 것보다 많은 값이 반환됩니다.

마샤로프 :

반환된 값은 지표 값과 유사하지만 가격 차트 창에 지표가 중첩될 때 보이는 실제 값과 다릅니다.

비슷한 값은 아마도 천장에서 나온 것이 아니라 M5와 같지 않은 TF 중 하나에서 나온 것입니다. 현재 시간 프레임이 H4이면 값이 H4에서 나올 가능성이 높지만 M5에서 값이 예상됩니다. 코드를 M5에서 H4로 다시 날카롭게 하면 아마도 H4에 있을 때 H4에 대해 올바른 올바른 값을 잡을 수 있을 것입니다(다른 TF의 경우 올바르지 않게 보일 것입니다).

표시기가 하나 또는 다른 특정 TF에 따라 올바른 값을 반환할 수 있지만 예를 들어 M5에서 H4에서 수행 중인 작업을 표시할 수 없는 경우 함께 작업할 때 반환된 값에서 무엇을 기대할 수 있습니까? 전문가 고문이 잘못된 또는 TF에 매달려 있습니까?

 
tol64 :

도움말은 다음과 같이 말합니다.

날짜(년, 월, 일) 또는 시간(시, 분, 초) 또는 모두를 생략할 수 있습니다. 값의 범위는 1970년 1월 1일부터 3000년 12월 31일까지입니다.

예:

D'2004.01.01 00:00' // 새해
D'1980.07.19 12:30:27'
D'19.07.1980 12:30:27'
D'19.07.1980 12' // D'1980.07.19 12:00:00'과 동일
D'01.01.2004' // D'01.01.2004 00:00:00'과 동일
D'12:30:27' // D'[컴파일 날짜] 12:30:27'과 동일
D'' //D'[컴파일 날짜] 00:00:00'과 동일

...

아니면 내가 오해하고 있습니까?

예, 예, 모든 것을 올바르게 이해했습니다. 나는 서두르는 것에주의를 기울이지 않았습니다.

원래 그랬던 것 같은데 취소되고 증명서가 수정되지 않았습니다.

어쨌든 질문은 남아 있습니다. 이것이 도움말이 부정확하거나 버그입니까?

 

Urain :

...

어쨌든 질문은 남아 있습니다. 이것이 도움말이 부정확하거나 버그입니까?

스크립트 예:

 void Set_Start_And_End_TradeSession()
{
 datetime start = D'00:45:00' ;
 datetime array[];
 int s = 0 , e = 0 , i = 0 ;
 long chart_ID = ChartID ();
 long count_bars = Bars ( Symbol (), 0 );
 
 CopyTime ( Symbol (), 0 , 0 ,( int )count_bars,array);
 
 ArraySetAsSeries (array, true );
 
 for (s = 0 ; s < count_bars; s++)
   {
     ObjectCreate (chart_ID, "start_date" , OBJ_VLINE , 0 ,array[s], 0 ); ChartRedraw ();
     Sleep ( 50 );
     if (array[s]==start) { Comment ( "Ok!!!" ); break ; }
     if (i==1441) { Comment ( "Error!!!" ); break ; }
    i++;
   }
}
그것이 작동하는 방식입니다. 컴파일 후 경고가 표시되는 것이 마음에 들지 않습니다.)) 개발자 중 한 명이 댓글을 달 것입니다.
 
Urain :

어쨌든 질문은 남아 있습니다. 이것이 도움말이 부정확하거나 버그입니까?

컴파일러 경고 는 오류가 있음을 의미하지 않습니다. 인쇄용으로 보내기: 모든 것이 디렉토리에 따라 반영됩니다.
 
masharov :

Expert Advisor는 다른 시간대의 지표를 사용합니다. Advisor의 테스트에서 표시기의 잘못된 데이터가 나타납니다.

고문 자체는 M5에서 작동하고 표시기는 H4에서 작동합니다. 동일한 시간 프레임(M5)에 호출된 표시기는 올바른 값을 반환합니다.

반환된 값은 지표 값과 유사하지만 가격 차트 창에 지표가 중첩될 때 보이는 실제 값과 다릅니다.

문제가 무엇입니까?

표시기 호출 코드의 예:

AS_SERIES 플래그는 다차원 배열 및 정적 배열에 대해 설정할 수 없습니다.

노력하다

 void OnNewBar() // моя функция
{
 double wave[];
 ArraySetAsSeries (wave, true );
 CopyBuffer (W_handle, 0 ,( int ) 0 , 2 ,wave);
 if (wave[ 1 ] > 0 ) Buy(); 
}

또는 그런 것

 void OnNewBar() // моя функция
{
 double wave[ 1 ];
 if ( CopyBuffer (W_handle, 0 ,( int ) 1 , 1 ,wave)< 1 ) return ;
 if (wave[ 0 ] > 0 ) Buy(); 
}
 
  string Symb= "EURUSD" ;
  for (i= 0 ;i< OrdersTotal ()+ PositionsTotal ();i++)
     {
      if (Symb== PositionGetSymbol (i)) Orders_Total++;
     }
     Alert (Orders_Total);
실제로 하나의 위치와 하나의 주문이 있는데 경고가 Orders_Total=1 을 제공하는 이유를 알려주십시오. 이론적으로 1이 아닌 2를 제공해야 합니다.