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

 

저널에서

 2016.09 . 12 22 : 20 : 37.728 Books   invalid book item[RTS- 9.16 ,buy, 99040.00000 ,- 4 ]
BCS-MetaTrader5, 실제, 1415. 데모에서 실제 계정으로 전환할 때 발생했습니다. 어드바이저와 지표가 출시되지 않았습니다. 유리창이 열려 있었다.
 
fxsaber :

저널에서

BCS-MetaTrader5, 실제, 1415. 데모에서 실제 계정으로 전환할 때 발생했습니다. 어드바이저와 지표가 출시되지 않았습니다. 유리창이 열려 있었다.

이 버그에 대해 썼습니다

https://www.mql5.com/ru/forum/95131

invalid book transaction
invalid book transaction
  • 리뷰: 2
  • www.mql5.com
Раньше не было, появилось сегодня (реал). Что это...
 
prostotrader :
그리고 주제 제목 아래에 있는 별표는 무엇입니까? 그리고 더 많은 리뷰.
 
fxsaber :
그리고 주제 제목 아래에 있는 별표는 무엇입니까? 그리고 더 많은 리뷰.
그나저나 이 스타들이 어디서 보고 토픽을 올릴까 한참을 고민하다가
 

현재 있는 함수가 호출 된 디버그 모드를 어떻게 알 수 있습니까?

대략적으로 말하자면, 함수/메서드 호출의 중첩 트리에 액세스하고 싶습니다. 가능합니까?

 
fxsaber :
현재 있는 함수가 호출 된 디버그 모드를 어떻게 알 수 있습니까?

"Step in step" 모드에서 "Debug" 탭을 하나씩 살펴봅니다.

단계

 
Karputov Vladimir :

"Step in step" 모드에서 "Debug" 탭을 하나씩 살펴봅니다.

고맙습니다. 표시기가 처음에 OnCalculate 를 두 번 호출하는 이유를 이해할 수 없습니다. 어떤 경우에 그러한 반응이 나타나는지 알아내는 것이 바람직할 것입니다. 디버깅할 때 불행히도 이벤트는 표시되지 않습니다.
 
fxsaber :
고맙습니다. 표시기가 처음에 OnCalculate를 두 번 호출하는 이유를 이해할 수 없습니다. 어떤 경우에 그러한 반응이 나타나는지 알아내는 것이 바람직할 것입니다. 디버깅할 때 불행히도 이벤트는 표시되지 않습니다.

끌어오기 위해 두 번, 때로는 한 번 또는 세 번 발생합니다. 다음 코드를 Oncalculate() 에 넣습니다.

 //+------------------------------------------------------------------+
//|  Accelerator/Decelerator Oscillator                              |
//+------------------------------------------------------------------+
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[])
  {
   Print ( __FUNCTION__ , ", rates_total " ,rates_total, ", prev_calculated " ,prev_calculated);

히스토리가 스왑될 때 명확해질 것입니다(히스토리가 스왑될 때 prev_calculated==0).

 
Karputov Vladimir :

끌어오기 위해 두 번, 때로는 한 번 또는 세 번 발생합니다. 다음 코드를 Oncalculate()에 넣습니다.

히스토리가 스왑될 때 명확해질 것입니다(히스토리가 스왑될 때 prev_calculated==0).

아니요, 현재 견적이 서 있을 때 RTS를 실행하고 있습니다. 한 번 호출되고 디버거가 거짓말을하여 2임을 보여줍니다. 재생할 코드(틱이 없는 기호에서 실행)

 #property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots    1

int Func(){ return ( 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[] )
{
//  return(0); // если расскоментировать и здесь поставить точку останова, то отладчик отработает, как надо
   return (Func()); // здесь поставить точку останова (F9)
}

F5 키를 누르면 중단점 에 적중이 발생합니다. 그리고 두 번째로 F5를 누른 후 - 유사하게. 이렇게 해서는 안 되지만 확인을 위해 코드에 있는 줄의 주석 처리를 제거하고 시도해 볼 수 있습니다.

 
fxsaber :

아니요, 견적이 서 있을 때 지금 RTS를 실행하고 있습니다. 한 번 호출되는 것을 알았지 만 디버거가 거짓말을하고 두 번임을 보여줍니다. 재생할 코드(틱이 없는 기호에서 실행)

F5 키를 누르면 중단점이 적중됩니다. 그리고 두 번째로 F5를 누른 후 - 유사하게. 이렇게 해서는 안 되지만 확인을 위해 코드에 있는 줄의 주석 처리를 제거하고 시도해 볼 수 있습니다.

따옴표가 켜져 있는지 여부는 중요하지 않습니다. 표시기에서 prev_calculate==0 조건을 제어해야 합니다. 이것은 히스토리의 스와핑이고 두 번째 포인트는 변경된 막대를 다시 계산하는 스페어 모드, 즉, 실제로 Rates_total -prev_calculate+1입니다.