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

 
Alexey Viktorov :

문서를 보았는지 아니면 내 게시물에서 기능에 대한 설명을 가져왔는지 궁금합니다.

나는 당신의 그래픽 개체가 유행하는 개체일 뿐이라고 생각합니다. 그렇다면 왜 접두사가 필요합니까? 결국 개체 유형별 삭제도 있습니다.

따라서 프로젝트에서 아무 것도 변경할 필요가 없었지만 단순히

)))))))))))))))

물론 나는 문서를 보았다. 그리고 네, 모든 것이 가능합니다! 하지만 나는 이것을했다. 그리고 무엇, 그것이 작동하지 않거나 어떤 식 으로든 방해합니까? ...

그리고 프로젝트 에서는 모든 것이 훨씬 더 복잡합니다. 위에서 얘기한...
 
Artyom Trishkin :

이것은 단지 특별한 경우입니다. 접두사는 일반적이고 보편적입니다. 모든 추세선을 제거하면 프로그램에 속하지 않는 개체에도 영향을 미칩니다.

동의한다. chart_id: 0(현재 차트). 따라서 이 차트에만 있습니다. 그리고 다른 프로그램이 있는 경우 각 개체 이름에 ID를 추가하고 ObjectsDeleteAll 을 호출할 수 있습니다.     적절한 접두사를 사용하면 함수가 혼동하지 않습니다. 그렇기 때문에 위의 글에서 내 객체 이름이 복잡하고 이 기능을 사용하기 전에 생각해야 한다고 말한 이유입니다. 그러나 Alexei는 나와 그의 친구에게 기분이 상했습니다 ... 헛된 것입니다!

 
Mihail Matkovskij :

왜요? chart_id: 0(현재 차트). 따라서 이 차트에서만. 그리고 다른 프로그램이 있다면 ID 같은 것이 있습니다. 각 개체 이름에 추가되면 ObjectsDeleteAll 함수는 아무 것도 혼동하지 않습니다. 그래서 위의 글에서 객체에 이름을 붙이는 것이 어렵다고 말했고 이 기능을 사용하기 전에 생각을 해야 했습니다. 그러나 Alexei는 나와 그의 친구에게 기분이 상했습니다 ... 헛된!

답장하기 전에 두뇌를 사용하십시오 :)

개체 이름에 새겨진 ID는 프로그램 개체가 삭제되는 식별에 의해 특정 접두사입니다.

이제 Alexey에 대한 내 대답을 작성한 코드와 그의 코드가 식별자가 입력되지 않은 필요한 개체만 삭제하는 방법과 프로그램에 속하지 않는 "외부" 개체를 남겨두는 방법을 살펴보십시오. 도표?

내 대답은 Alexey의 다음 메시지와 함께 이 코드에 대한 Alexey의 답변이었습니다.

따라서 프로젝트에서 아무 것도 변경할 필요가 없었습니다.

 ObjectsDeleteAll ( 0 , 0 , OBJ_TREND );
)))))))))))))))
 
Artyom Trishkin :

답장하기 전에 두뇌를 사용하십시오 :)

개체 이름에 새겨진 ID는 프로그램 개체가 삭제되는 식별에 의해 특정 접두사입니다.

이제 Alexey에 대한 내 대답을 작성한 코드와 그의 코드가 식별자가 입력되지 않은 필요한 개체만 삭제하는 방법과 프로그램에 속하지 않는 "외부" 개체를 남겨두는 방법을 살펴보십시오. 도표?

내 대답은 Alexey의 다음 메시지와 함께 이 코드에 대한 Alexey의 답변이었습니다.

수정됨. 당신은 올바르게 대답했습니다. 나는 이것을 조금 엉망으로 만들었다. 나는 다른 말을 하고 싶었다.

 
Mihail Matkovskij :

그러나 Alexey는 나에게 화를 냈습니다 ...

기다리지 마십시오 ... 나는 정의를 위해서만입니다. 당신의 결점을 드러낼 필요는 없지만 나를 포함한 모든 사람이 터미널 버그에 대해 가지고 있습니다.

한 가지 신선한 예가 있습니다. 얼마 전에 저는 그러한 로션을 즐겁게 사용하고 변수를 마우스 오른쪽 버튼으로 클릭하고 "정의로 이동"을 클릭하고 바로 그 변수로 돌아가기 위해 "뒤로" 쥐의 키를 눌렀습니다. 하지만 오늘 나는 그것이 작동을 멈춘 것을 알았다. 원인??? 어제 2530으로 업데이트 하고.. 개발자들과도 욕설로 얘기했는데 갑자기 쥐도 바꿔야 한다는 생각이 들더군요. ME 2474를 열었는데 웁스 ........................... 거기에서 작동하지 않습니다. 그리고 내가 개발자에 대해 생각한 모든 것을 작성하기 위해 SMS가 즉시 마음에 떠오른다면? 어떻게 생겼을까?

이것은 버그에 대해 작성하기 전에 코드의 결함을 찾아 서두를 필요가 없다는 사실입니다.

 
Alexey Viktorov :

기다리지 마십시오 ... 나는 정의를 위해서만입니다. 당신의 결점을 드러낼 필요는 없지만, 저를 포함해 모든 사람이 터미널 버그에 대해 가지고 있습니다.

그리고 누가 전시하고 있습니까? https://www.mql5.com/en/forum/1111/page2795#comment_17290368 . 이번에 는 잘 읽어보셨으면 하는 바램이..얼마나 되새겨야 드디어 이해 가 되시고 여기에 엉뚱한 글을 쓰지 않으시렵니까?!

 
Mihail Matkovskij :

누가 전시하고 있습니까? https://www.mql5.com/en/forum/1111/page2795#comment_17290368 . 이번에 는 잘 읽어보셨으면 하는 바램이..얼마나 되새겨야 드디어 이해 가 되시고 여기에 엉뚱한 글을 쓰지 않으시렵니까?!

나는 정의를 위해 모두입니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

오류, 버그, 질문

Mihail Matkovskij , 2020.07.11 14:47

이 버그가 발생하는 소스를 만들었습니다.
 //+------------------------------------------------------------------+
//|                                           DeleteChartObjects.mq5 |
//|                                      Copyright 2020, © Cyberdev. |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, © Cyberdev."
#property version    "1.00"
#property indicator_chart_window

#property indicator_plots 0

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

#include <ChartObjects\ChartObjectsLines.mqh>
#include <Arrays\ArrayObj.mqh>

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//--- input parameters
input int       nBars = 100000 ;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int customN_Bars = 0 ;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CArrayObj listOfTrendLines;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit () {
//--- indicator buffers mapping
   int totalBars = iBars ( NULL , PERIOD_CURRENT );
  customN_Bars = (nBars < totalBars) ? nBars : totalBars;
//---
   return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[]
) {
  CChartObjectTrend * trend;
   int delta = rates_total - customN_Bars;
   int shift;
   int i;
   for (i = 0 ; i < customN_Bars; i++) {
    shift = delta + customN_Bars - i - 1 ;
    trend = new CChartObjectTrend();
     if (trend.Create( 0 , "trend" +( string )i, 0 , time[shift], low[shift], time[shift], high[shift]))
      listOfTrendLines.Add(trend);
  }
   return (rates_total);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason) {
  
  CChartObjectTrend * trend;
  
   int i = listOfTrendLines.Total() - 1 ;
   for (; i >= 0 ; i--) {
    trend = dynamic_cast <CChartObjectTrend *> (listOfTrendLines.At(i));
    
     if ( CheckPointer (trend) == POINTER_INVALID )
       continue ;
    
     delete trend;
  }
}
//+------------------------------------------------------------------+

버그를 시연하기 위한 조치입니다.

1. 차트에 지표를 놓습니다.

2. 차트에서 지표를 제거합니다.

3. Ctrl+B를 누른 다음 창에서 "모두 나열" 버튼을 누르고 삭제되지 않은 개체를 봅니다.

사물

100,000개 중 294개 남았습니다.

입력 매개변수 nBars의 값을 줄이면 버그가 나타나지 않습니다.


 
Alexey Viktorov :

나는 정의를 위해 모두입니다.



그래서 그 메시지에서 그것이 어떤 종류의 버그인지, 내 프로그램이나 터미널 버그인지는 말하지 않았습니다. 나는 그것이 터미널 버그라고 생각했다. 그러나 Rashid Umarov 는 나에게 모든 것을 설명했고 나는 그를 이해했습니다. 제 생각에는 모든 것이 매우 명확합니다. 터미널 버그가 없었습니다. 내 가정이 틀렸습니다. 당신은 일종의 광적인 열정으로 나를 따르고 있습니다. 이유를 물었더니 이렇게 말했습니다.

그것은 오랫동안 침묵했을 것이고 나는 계속하지 않을 것입니다.

여기에 이유가 있습니다 ...

헛소리 그만 하세요! 어른(희망)...

 
Mihail Matkovskij :

그래서 그 메시지에서 그것이 어떤 종류의 버그인지, 내 프로그램이나 터미널 버그인지는 말하지 않았습니다. 나는 그것이 터미널 버그라고 생각했다. 그러나 Rashid Umarov 는 나에게 모든 것을 설명했고 나는 그를 이해했습니다. 제 생각에는 모든 것이 매우 명확합니다. 터미널 버그가 없었습니다. 내 가정이 틀렸습니다. 당신은 일종의 광적인 열정으로 나를 따르고 있습니다. 이유를 물었더니 이렇게 말했습니다.

여기에 이유가 있습니다 ...

헛소리 그만 하세요! 어른(희망)...

확인. 공중제비로 신발을 갈아신었습니다. 터미널의 버그로 발행되고 ........... 모두 아시다시피 라이브입니다.

 
스토리지 연결

https://storage.mql5.io 는 로그인할 수 없습니다.