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

 
Manov :

" 초기화되지 않은 변수 'local_low'를 사용할 수 있습니다" "

발행되는 경우

변수가 무엇이든 초기화되면 경고가 사라집니다. 그러나 이 코드에서 볼 수 있듯이 local_low 변수의 초기화 는 중복됩니다. 따라서 경고는 생활에 전혀 지장을 주지 않습니다.
 
Renat :

많은 소프트웨어 프로젝트를 출시한 소프트웨어 경영자의 관점에서 내 답변을 다시 읽으십시오.

그렇지 않으면 "모든 프로그래머" 수준에 머물면서 실수가 무엇인지 이해하지 못할 것입니다.

:) 나는 소프트웨어 회사의 장이 되지 않을 것이기 때문에 나는 영원히 "모든 프로그래머"(즉, 아마추어 프로그래머)의 수준에 머물 것입니다.

...아마추어 프로그래머는 오류에 대한 논리적 설명을 받지 못했기 때문에 자신의 코드에 오류가 전혀 없거나 오류가 너무 까다로워 아무도 설명할 수 없다는 결론에 도달합니다. 논리의 언어. 이에 대해 양측이 서로를 이해하고 문제가 해결되었다고 가정할 수 있습니다.

 
Yedelkin :
변수가 무엇이든 초기화되면 경고가 사라집니다. 그러나 이 코드에서 볼 수 있듯이 local_low 변수의 초기화는 중복됩니다. 따라서 경고는 생활에 전혀 지장을 주지 않습니다.
특정 코드 - 아마도 예, ... 하지만 컴파일러는 가능한 한 " 완벽 "해야 합니다.
 
그리고 모니터가 켜지고 프로그래머에게 다음과 같이 말했습니다. 조건 뒤에 초기화를 숨기지 마십시오. 루프 본문 뒤에 루프 변수를 사용하지 않는 것처럼, 0으로 나누기를 확인하고, 필요 이상으로 엔터티를 생성하지 않으며, if (a==true)를 작성하지 마십시오. ) ...
 
Manov :
... 컴파일러는 최대한 완벽 해야 합니다.
그래서 나는 그것에 대해 논쟁하지 않습니다. 유용한 경고. 그러한 경고가 많을수록 자신의 코드를 더 잘 이해할 수 있습니다.
 
Vigor :
... if (a==true) ... 쓰지 마세요.

그건 그렇고, 봄에 나는 훈련 전문가를 가지고 있었고 문헌을 읽은 후 if (a)와 같은 조건을 삽입했습니다. 그래서 전문가들은 이러한 조건을 if(a==true) 유형의 조건으로 변경한 후에야 작업을 시작했습니다. 이제는 이 버릇을 고치기가 어렵습니다.
 
Yedelkin :

그러나 9행의 interrupcion bool 변수를 사용하기 때문에 8행의 local_low 변수 초기화 직후 15행의 local_low 변수의 초기화가 보장 됩니다. 따라서 현재 "초기화되지 않은 변수 'local_low' 사용 가능"이라는 경고는 "보장됨"을 의미하는 것이 아니라 변수가 초기화되지 않은 통과 분기의 존재 가능성 만 의미합니다.
귀하의 예에서 Ac-k=0 이면 for 문 이 실행되지 않고 local_low가 초기화되지 않도록 보장됩니다. 아님?
Документация по MQL5: Основы языка / Операторы / Оператор цикла for
Документация по MQL5: Основы языка / Операторы / Оператор цикла for
  • www.mql5.com
Основы языка / Операторы / Оператор цикла for - Документация по MQL5
 

동일한 정류장으로 위치 수정 요청을 보내면 오류가 발생합니다. 그리고 동일한 매개변수로 보류 주문 수정 요청을 보내면 요청이 실행됩니다. 그것은 그렇게 생각하고 매개 변수에 변경 사항을 확인할 필요가 없습니까?

예를 들어 Expert Advisor에 오류가 있거나 작업 논리가 잘못된 경우 불필요한 요청으로 서버를 막는 이유는 무엇입니까?

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Valmars :
귀하의 예에서 Ac-k=0 이면 for 문 이 실행되지 않고 local_low가 초기화되지 않도록 보장됩니다. 아님?

맞아요. Ac-k<=1이면 for 문은 절대 실행되지 않아야 하며 local_low 변수는 초기화되지 않음이 보장됩니다. 그러나 bool-variable interrupcion은 false 값으로 유지되기 때문에(3행), 13행의 조건으로 인해 초기화되지 않은 local_low 변수는 계산에 절대 사용되지 않습니다 . 특히 15행의 local_low 변수가 있는 표현식은 평가되어서는 안 됩니다[물론 if 문이 도움말에 표시된 대로 정확하게 작동한다면 :)].

즉, local_low 변수가 초기화되지 않은 것으로 확인되면 계산에 사용되지 않아야 합니다(사용하지 않아야 함).

 

무효 그래프()
{
if(ObjectFind(0,"H")<0) ObjectCreate(0,"H", OBJ_HLINE ,0,0,h,0);
if(ObjectFind(0,"L")<0) ObjectCreate(0,"L",OBJ_HLINE,0,0,l,0);
ObjectSetDouble(0,"H",OBJPROP_PRICE,h);
ObjectSetDouble(0,"L",OBJPROP_PRICE,l);
문자열 bal = DoubleToString(AccountInfoDouble(ACCOUNT_BALANCE),2);
문자열 equ = DoubleToString(AccountInfoDouble(ACCOUNT_EQUITY),2);
문자열 스프레드 = DoubleToString(((Ask-Bid)/_Point),0);
문자열 공백 = " ";
문자열 정보= bal+space+equ+space+spread;
if (ObjectFind(0,"정보")<0) ObjectCreate(0,"정보",OBJ_LABEL,0,0,0,0);
ObjectSetInteger(0,"정보",OBJPROP_XDISTANCE,0);
ObjectSetInteger(0,"정보",OBJPROP_YDISTANCE,15);
ObjectSetString(0,"정보",OBJPROP_TEXT,정보);
ObjectSetInteger(0,"정보",OBJPROP_FONTSIZE,36);
ObjectSetInteger(0,"정보",OBJPROP_COLOR, 적갈색);
반품;
}

다음은 코드입니다. 이 기능은 각 틱에 균형, 자본 및 스프레드 값을 표시합니다. 그것은 단지 어떤 이유에서인지, 과거가 아닌 이전 틱에 대한 정보가 표시됩니다... 그 이유를 알아낼 수 있도록 도와주세요. MT 4에서는 유사한 코드가 새로운 틱의 도착과 함께 값을 변경하고, MT5에서는 새로운 틱의 도착과 함께 이전 틱에 대한 정보를 표시합니다.
사유: