오류, 버그, 질문 - 페이지 3078

 
fxsaber # :

시각화 도우미가 항상 거래 환경과 동기화되는 것은 아닙니다. 저것들. 오래된 정보가 표시될 수 있습니다. 현재 것은 항상 EA에 있습니다.

이것은 Expert Advisor가 한 가지를 말하고 Visualizer가 다른 것을 말할 때 매우 일반적인 질문입니다.

확인. 이해 감사합니다. 원칙적으로 어드바이저는 논리적으로 계속 작업하며 실제로는 시각적으로만 주문이 실행되며 이는 나중에 볼 수 있습니다.

 
Igor Petrov # :

확인. 이해 감사합니다. 원칙적으로 어드바이저는 논리적으로 계속 작업하며 실제로는 시각적으로만 주문이 실행되며 이는 나중에 볼 수 있습니다.

동기화된 상황을 적시에 보려면 테스터가 중지된 후 다음 틱을 기다려야 합니다.

예를 들어, 흥미로운 순간이 있기 5초 전으로 빠르게 되감고 다음 틱마다 일시중지 및 F12 앞으로 이동할 수 있습니다. 이 모든 틱은 올바르게 렌더링됩니다.


동기화되지 않은 것은 주석에 현재 틱 시간(밀리초 단위)을 출력하고 Visualizer의 Market Watch가 표시하는 것과 비교하여 식별할 수 있습니다. 불일치가 있는 경우 - 동기화되지 않습니다.


ZY 디버거에 의해 중지되었을 때(또는 일시 중지가 눌렸을 때) 시각화 도우미의 동기화는 물론 오래전에 수행했어야 합니다.

 
Igor Makanu # :

BarsCalculated() https://www.mql5.com/ru/docs/series/barscalculated

그것은 무엇을 반환합니까? - OnCalculate()에서 계산이 종료된 후 return(rates_total)에서 표시기가 반환된 숫자입니까?

확인됨, 예 BarsCalculated()는 return(rate_total)입니다.

인도 A:

int OnCalculate...
{
   static int cnt = 0 ;
   cnt++;
   Print ( "cnt = " , cnt);
   return (cnt);
}

산업 B:

 int OnInit ()
{
   handle = iCustom ( NULL , PERIOD_M1 , "tst_code\\A");
   return ( INIT_SUCCEEDED );
}
int OnCalculate...
{
   double tmp[];
   int bc = BarsCalculated (handle);
   if (bc == - 1 ) return (rates_total);
   int copy = CopyBuffer (handle, 0 , 0 , 1 , tmp);
   Print (" BarsCalculated = ", bc);
   return (rates_total);
}

H1에 표시기 B 실행, 로그:

2021.09.02 16:11:44.872 A (EURUSD,M1) cnt=1

2021.09.02 16:11:44.873 A (EURUSD,M1) cnt = 2

2021.09.02 16:11:44.998 A (EURUSD,M1) cnt=3

2021.09.02 16:11:44.998 B (EURUSD,H1) BarsCalculated = 3

2021.09.02 16:11:46.617 A (EURUSD,M1) cnt=4

2021.09.02 16:11:46.617 B (EURUSD,H1) BarsCalculated = 4

2021.09.02 16:11:46.663 A (EURUSD,M1) cnt=5

2021.09.02 16:11:46.663 B (EURUSD,H1) BarsCalculated = 5

2021.09.02 16:11:46.671 A (EURUSD,M1) cnt = 6

2021.09.02 16:11:46.671 B (EURUSD,H1) BarsCalculated = 6

2021.09.02 16:11:46.684 A (EURUSD,M1) cnt=7

2021.09.02 16:11:46.685 B (EURUSD,H1) BarsCalculated = 7

2021.09.02 16:11:46.697 A (EURUSD,M1) cnt=8

2021.09.02 16:11:46.697 B (EURUSD,H1) BarsCalculated = 8

2021.09.02 16:11:47.008 A (EURUSD,M1) 센트 = 9

2021.09.02 16:11:47.008 B (EURUSD,H1) BarsCalculated = 9

2021.09.02 16:11:47.029 A (EURUSD,M1) cnt = 10

2021.09.02 16:11:47.029 B (EURUSD,H1) BarsCalculated = 10

2021.09.02 16:11:47.502 A (EURUSD,M1) cnt = 11

2021.09.02 16:11:47.502 B (EURUSD,H1) BarsCalculated = 11

2021.09.02 16:11:47.614 A (EURUSD,M1) cnt = 12

2021.09.02 16:11:47.614 B (EURUSD,H1) BarsCalculated = 12

2021.09.02 16:11:47.620 A (EURUSD,M1) cnt = 13

2021.09.02 16:11:47.620 B (EURUSD,H1) BarsCalculated = 13

2021.09.02 16:11:47.667 A (EURUSD,M1) cnt = 14

2021.09.02 16:11:47.667 B (EURUSD,H1) BarsCalculated = 14

2021.09.02 16:11:47.713 A (EURUSD,M1) cnt = 15

2021.09.02 16:11:47.713 B (EURUSD,H1) BarsCalculated = 15

2021.09.02 16:11:47.726 A (EURUSD,M1) cnt=16

2021.09.02 16:11:47.726 B (EURUSD,H1) BarsCalculated = 16

 

안녕하세요! 문제를 해결하기 위해 작동하지 않는 것이 있습니다.

처음 시작할 때 모든 막대를 처리해야 하며 처리 후에는 마지막 막대만 처리해야 합니다.

처음에는 0을 인쇄한 다음 각 새 막대의 마지막 막대만 인쇄하고 중간 막대는 인쇄하지 않습니다.

실수는 어디에 있습니까?

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {

       for ( int i = prev_calculated; i <= prev_calculated && i < rates_total && ! IsStopped (); i++)
        {
         Print (i);
        };
   return (rates_total);
  }
 
SEM # :

안녕하세요! 문제를 해결하기 위해 작동하지 않는 것이 있습니다.

처음 시작할 때 모든 막대를 처리해야 하며 처리 후에는 마지막 막대만 처리해야 합니다.

처음에는 0을 인쇄한 다음 각 새 막대의 마지막 막대만 인쇄하고 중간 막대는 인쇄하지 않습니다.

실수는 어디에 있습니까?

또는 i-- 또는 i는 식 1 루프에서 0임) 모든 것이 올바르게 인쇄됨)
이것은 첫 번째 실행을 위한 것입니다. 그런 다음 새로운 바를 잡는 고전에 따르면.
 
SEM # :

안녕하세요! 문제를 해결하기 위해 작동하지 않는 것이 있습니다.

처음 시작할 때 모든 막대를 처리해야 하며 처리 후에는 마지막 막대만 처리해야 합니다.

처음에는 0을 인쇄한 다음 각 새 막대의 마지막 막대만 인쇄하고 중간 막대는 인쇄하지 않습니다.

실수는 어디에 있습니까?


우선 다음과 같이 수정하려고 합니다.

       for ( int i = prev_calculated; i >= prev_calculated && i < rates_total && ! IsStopped (); i++)
        {
         Print (i);
        };
 

모두에게 좋은 하루. 이 문제에 직면한 사람이 있으면 알려주십시오. 오늘 모스크바 시간 10시까지 MT5에서는 모든 것이 정상이었습니다. 열린 주문, 중지 및 이익을 설정합니다.

모스크바 시간 10시 이후 주문을 열 때, 스탑 또는 이익을 넣을 때 배달이 대기열에서 대기하고 10분 이상 후에 배치됩니다. 그리고 그것은 여전히 있습니다.

 
Михаил Савченко # :

모두에게 좋은 하루. 이 문제에 직면한 사람이 있으면 알려주십시오. 오늘 모스크바 시간 10시까지 MT5에서는 모든 것이 정상이었습니다. 열린 주문, 중지 및 이익을 설정합니다.

10시 이후에는 주문 오픈, 스탑, 이익 시 배달이 대기열에 대기하고 10분 이상 후에는 배치됩니다. 그리고 그것은 여전히 있습니다.

수동 거래? 어떤 브로커?
 
mktr8591 # :
수동 거래? 어떤 브로커?
예, 시장에서 수동으로 이동합니다. 피남.
 
mktr8591 # :

우선 다음과 같이 수정하려고 합니다.

고맙습니다! 도움이 되었습니다.