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

 
x572intraday # :
아시는 분 계시면 알려주세요. CodeBase 에 기존 코드의 새 버전을 업로드하면 이전 유권자의 재투표 금지가 재설정되고 새 버전에 대해 재투표할 수 있습니까? 나 자신도 이것을 강력히 의심하지만, 그러한 기회가 있었다면 새로운 등급 대신 이전 등급을 재설정하는 것이 공정할 것입니다. 새 버전은 유권자를 더 많이 만족시킬 수 있으며 이전 코드에 대한 이전 등급은 더 이상 유효하지 않습니다. (하지만 기능의 성장과 함께 코드도 함께 커짐에 따라 새로운 오류와 결함이 있을 수 있고, 훨씬 더 어처구니가 없습니다. 무슨 일이든지 일어날 수 있습니다... 그리고 새로운 추정치는 더 낮아질 수 있지만 저에게는 적합합니다. .)

예, ... 코드의 낮은 등급을 위해 머리를 찢지 마십시오. 어떤 사람이 귀하의 코드에 1점을 주었다고 해서 코드가 그런 것은 아닙니다. 글쎄요, 적어도 100번은 다시 실행하세요... 그리고 이 코드는 100번 모두 그런 식으로 평가될 것입니다. 이해하기가 그렇게 어려운가요?

 
Alexey Viktorov # :

예, ... 코드의 낮은 등급을 위해 머리를 찢지 마십시오. 어떤 사람이 귀하의 코드에 1점을 주었다고 해서 코드가 그런 것은 아닙니다. 글쎄요, 적어도 100번은 다시 실행하세요... 그리고 이 코드는 100번 모두 그런 식으로 평가될 것입니다. 이해하기가 그렇게 어렵습니까?

아마도 당신의 이력서는 투표 분야의 실제 상황을 반영하고 있으며 이것은 슬프다. 그러나 나는 나 자신에 대해 슬퍼하지 않습니다. 당신은 차와 함께이 가상 스타를 마시고 지갑에 넣을 수 없습니다. 나는 새로운 사용자에게 제품을 제시하는 개념에 실망하고 걱정합니다. 신뢰할 수 있는 등급/등급이 없는 경우 사용자는 "등급별 정렬"을 통해 원하는 제품을 효율적으로 검색할 수 없습니다. 등급 시스템은 더미이며 이름 / 설명으로 원하는 제품을 검색하고 어리석은 별 수를 신뢰하지 않는 것으로 나타났습니다. 그렇지 않으면 그들은 표면에 떠 있는 모든 것을 잡을 것입니다. 나는 단지 그것을 더 사려깊게 바꾸는 것을 제안했다. 그러나 아무도 그런 현실에 맞서 싸우지 않는다면 나는 손을 씻습니다.

 
x572intraday # :

아마도 당신의 이력서는 투표 분야의 실제 상황을 반영하고 있으며 이것은 슬프다. 그러나 나는 나 자신에 대해 슬퍼하지 않습니다. 당신은 차와 함께이 가상 스타를 마시고 지갑에 넣을 수 없습니다. 나는 새로운 사용자에게 제품을 제시하는 개념에 실망하고 걱정합니다. 신뢰할 수 있는 등급/등급이 없는 경우 사용자는 "등급별 정렬"을 통해 원하는 제품을 효율적으로 검색할 수 없습니다. 등급 시스템은 더미이며 이름 / 설명으로 원하는 제품을 검색하고 어리석은 별 수를 신뢰하지 않는 것으로 나타났습니다. 그렇지 않으면 그들은 표면에 떠 있는 모든 것을 잡을 것입니다. 나는 단지 그것을 더 사려깊게 바꾸는 것을 제안했다. 그러나 아무도 그런 현실에 맞서 싸우지 않는다면 나는 손을 씻습니다.

자, 이제 코드를 살펴보겠습니다.

   int calculated= iBars ( _Symbol ,PArray[ 0 ]);

   if (calculated<= 0 )
       return ( 0 );

   if (! GlobalVariableGet ( _Symbol + ": PSR_bars_calculated" ) || calculated!= GlobalVariableGet ( _Symbol + ": PSR_bars_calculated" ) ||
      calculated> GlobalVariableGet ( _Symbol + ": PSR_bars_calculated" )+ 1 )
   {
       if (! GlobalVariableGet ( _Symbol + ": PSR_SingleActuation" ) || ( GlobalVariableGet ( _Symbol + ": PSR_SingleActuation" ) &&
         calculated!= GlobalVariableGet ( _Symbol + ": PSR_bars_calculated" )))
      {
         for ( int p= 0 ; p< ArraySize (PArray); p++)
         {

각 틱에서 전역 변수에 대한 액세스가 트리거되며 한 번에 최대 4개의 요청이 발생합니다.

따라서 개인용 컴퓨터에서 그러한 코드를 사용하는 것은 불가능합니다. 다른 사람의 컴퓨터에서는 사용할 수 있습니다.

루프에서 하나의 루프를 반복할 때 ArraySize를 3번 호출해야 하고 그 중 두 개가 있습니다. 이것은 프로세서에 추가 부하이며, 이렇게 하는 것도 바람직하지 않으며 코드 성능이 떨어집니다.

DeInite에서는 개체가 이상한 방식으로 삭제되므로 걱정할 것은 없지만 초보자에게 나쁜 예는 정상적으로 수행되면 개체를 생성할 때 접두사를 입력하고 불필요한 재계산 없이 삭제합니다.

나는 당신의 코드에 2점을 줍니다.

표시기의 작동을 위해 - 나는 그것을 시작하지 않았다.

객관적으로?

 
Vitaly Muzichenko # :

자, 이제 코드를 살펴보겠습니다.

각 틱에서 전역 변수에 대한 액세스가 트리거되며 한 번에 최대 4개의 요청이 발생합니다.

따라서 개인용 컴퓨터에서 그러한 코드를 사용하는 것은 불가능합니다. 다른 사람의 컴퓨터에서는 사용할 수 있습니다.

루프에서 하나의 루프를 반복할 때 ArraySize를 3번 호출해야 하고 그 중 두 개가 있습니다. 이것은 프로세서에 추가 부하이며, 이렇게 하는 것도 바람직하지 않으며 코드 성능이 떨어집니다.

DeInite에서는 개체가 이상한 방식으로 삭제되므로 걱정할 것은 없지만 초보자에게 나쁜 예는 정상적으로 수행되면 개체를 생성할 때 접두사를 입력하고 불필요한 재계산 없이 삭제합니다.

나는 당신의 코드에 2점을 줍니다.

표시기의 작동을 위해 - 나는 그것을 시작하지 않았다.

객관적으로?

1. 각 틱에서 정확히 GP에 대한 호출이 있으므로 각 틱에서 뿐만 아니라 각 재초기화(예: TF를 통한 전환)에서 OnCalculate() 의 모든 주요 코드와 더 무거운 코드가 실행되지 않고 표시기가 더 빠르게 작동합니다. 새 데이터 계산 - 새로운 하단 막대 D1 의 출현으로만 , 이는 각 틱보다 훨씬 더 드뭅니다.

2. 나는 신중하고 철저하게 코드를 작업했지만 if() 에서 일부 확인되지 않은 중복 비교 작업을 남겨두었습니다.

3. IMPOSSIBLE에 대해 - 크게 과장되었습니다. 다운로드하여 직접 볼 수 있습니다. 표시기가 날아갑니다.

4. 나는 GP가 철도에 버려진다는 것을 몰랐고 실행 중인 MT5 세션 내에서 액세스할 때마다 GP를 읽습니다. 나는 여전히 터미널이 시작될 때 HDD에서 RAM으로 한 번 읽혀지고 이미 거기에 살고 표시기가 HDD가 아닌 RAM에서 그들을 호출한다고 생각합니다.

5. ArraySize() 가 비싼 함수라고 생각하지 않습니다. 그리고 비싸다면 이 특정 코드에서는 눈에 띄지 않을 것입니다. 이 기능이 자주 발견되고 표시기 자체가 훨씬 더 복잡하고 리소스 집약적인 첫 번째 표시기에서 이와 관련하여 최적화할 것입니다.

6. OnDeinit() 에서 다음을 사용합니다.

 ObjectsDeleteAll ( 0 , StringSubstr ( EnumToString (PArray[p]), 7 )+ " " +line_types[lt]+ " l" , 0 ,- 1 );

여기서 정확히 접두사 "l"에 의한 삭제가 있습니다(객체를 생성할 때 " l abel " 및 "line"이라는 이름이 사용되었습니다.

7. 이제 코드를 다운로드하고 이해한 사용자가 수행해야 할 작업을 수행했습니다. 결함을 발견했습니다. 이것은 MQL 학습의 일부이기도 합니다.

8. 요약하자면: 1.) 이 특정 지표의 비이상적인 코드의 허용 가능성에 대한 나의 주요 주장은 단순성, 간결함, 그리고 그 속도 없이도... 더하기 생각한 것의 이상적인 작업입니다. 2.) 비이상적인 코드에 대한 나의 두 번째 주요 주장은 속도와 다용성(다른 사람의 원본에 대한 논의 참조) 면에서 나쁜 유사품도 없고 원본과 비교하여 개선된 부분이 있다는 것입니다. 그건 그렇고, 초점이 좁고 같은 유형의 반복 블록이 많다는 점에서 조밀한 사이클로 접히지 않습니다.

9. 7.에도 불구하고 다른 사람의 코드를 제대로 이해하지 못했습니다. 2점은 너무 낮습니다. 소프트웨어 제품을 코드로 평가하는 것은 아직 권장하지 않습니다. 객관성에 대해서는 아무 말도 하지 않겠습니다. 원칙적으로 한 사용자에게 객관성을 기대하는 것은 불가능하기 때문입니다. 객관적인 평가(등급)는 여러 정상 사용자들의 평가를 합산한 형태로만 가능하며 반드시 높을 필요는 없다.

 
x572intraday # :

1. 각 틱에서 정확히 GP에 대한 호출이 있으므로 각 틱에서 뿐만 아니라 각 재초기화(예: TF를 통한 전환)에서 OnCalculate() 의 모든 주요 코드와 더 무거운 코드가 실행되지 않고 표시기가 더 빠르게 작동합니다. 새 데이터 계산 - 새로운 하단 막대 D1 의 출현으로만 , 이는 각 틱보다 훨씬 더 드뭅니다.

2. 나는 신중하고 철저하게 코드를 작업했지만 if() 에서 일부 확인되지 않은 중복 비교 작업을 남겨두었습니다.

3. IMPOSSIBLE에 대해 - 크게 과장되었습니다. 표시기가 날아가는지 다운로드하여 직접 확인할 수 있습니다.

4. 나는 GP가 철도에 버려진다는 것을 몰랐고 실행 중인 MT5 세션 내에서 액세스할 때마다 GP를 읽습니다. 나는 여전히 터미널이 시작될 때 HDD에서 RAM으로 한 번 읽혀지고 이미 거기에 살고 표시기가 HDD가 아닌 RAM에서 그들을 호출한다고 생각합니다.

5. ArraySize() 가 비싼 기능이라고 생각하지 않습니다. 그리고 비싸다면 이 특정 코드에서는 눈에 띄지 않을 것입니다. 이 기능이 자주 발견되고 표시기 자체가 훨씬 더 복잡하고 리소스 집약적인 첫 번째 표시기에서 이와 관련하여 최적화할 것입니다.

6. OnDeinit() 에서 다음을 사용합니다.

여기서 정확히 접두사 "l"에 의한 삭제가 있습니다(객체를 생성할 때 " l abel " 및 "line"이라는 이름이 사용되었습니다.

7. 이제 코드를 다운로드하고 이해한 사용자가 수행해야 할 작업을 수행했습니다. 결함을 발견했습니다. 이것은 MQL 학습의 일부이기도 합니다.

8. 요약하자면: 1.) 이 특정 지표의 비이상적인 코드의 허용 가능성에 대한 나의 주요 주장은 단순성, 간결함, 그리고 그 속도 없이도... 더하기 생각한 것의 이상적인 작업입니다. 2.) 비이상적인 코드에 대한 나의 두 번째 주요 주장은 속도와 다양성(다른 사람의 원본에 대한 논의 참조) 면에서 아날로그가 부족하고 원본에 비해 개선 사항이 있다는 것입니다. 그건 그렇고, 좁게 초점을 맞추고 유사하게 반복되는 많은 수의 블록 측면에서 조밀한 사이클로 접히지 않습니다.

9. 7.에도 불구하고 다른 사람의 코드를 제대로 이해하지 못했습니다. 2점은 너무 낮습니다. 소프트웨어 제품을 코드로 평가하는 것은 아직 권장하지 않습니다. 객관성에 대해서는 아무 말도 하지 않겠습니다. 원칙적으로 한 사용자에게 객관성을 기대하는 것은 불가능하기 때문입니다. 객관적인 평가(등급)는 여러 정상 사용자들의 평가를 합산한 형태로만 가능하며 반드시 높을 필요는 없다.

접두사로 삭제하는 것은 다음과 같습니다. ObjectsDeleteAll(0,"pref_"); // " pref_l abel " 및 " pref_line "

적어도 OnCalculate의 첫 번째 줄에 추가하여 호출이 지금과 같이 모든 눈금이 아니라 새 막대에 있도록 합니다.

 
Vitaly Muzichenko # :

접두사로 삭제하는 것은 다음과 같습니다. ObjectsDeleteAll(0,"pref_"); // " pref_l abel " 및 " pref_line "

적어도 OnCalculate의 첫 번째 줄에 추가하여 호출이 지금과 같이 모든 눈금이 아니라 새 막대에 있도록 합니다.

그건 그렇고, 단락 7과 관련하여.: MQL5 문서에서도 몇 년 동안 수정되지 않은 오류가 발생했습니다.

 
Vitaly Muzichenko # :

접두사로 삭제하는 것은 다음과 같습니다. ObjectsDeleteAll(0,"pref_"); // " pref_l abel " 및 " pref_line "

접두사의 시작이 {D1} , {W1} 또는 {MN1}과 같이 동적이기 때문에 제안한 대로 삭제할 수 있는 합당한 가능성은 없으며 "l. ..". 동적 접두어와 정적 접두어를 바꿔서 옵션에 따라 안전하게 삭제할 수 있지만, 이는 정보를 " R1"으로 인식하는 것이 불편하기 때문에 무리   {D1} ", 하지만 더 편리하게는 "{D1} R1". 이 모든 것을 오래전에 생각했고 내가 한 것처럼 정확히 했습니다.

 
x572intraday # :

접두사의 시작이 {D1} , {W1} 또는 {MN1}과 같이 동적이기 때문에 제안한 대로 삭제할 수 있는 합당한 가능성은 없으며 "l. ..". 동적 접두어와 정적 접두어를 바꿔서 옵션에 따라 안전하게 삭제할 수 있지만, 이는 정보를 " R1"으로 인식하는 것이 불편하기 때문에 무리   {D1} ", 하지만 더 편리하게는 "{D1} R1". 이 모든 것을 오래전에 생각했고 내가 한 것처럼 정확히 했습니다.

DrawTheLine( "pref" +line_types[lt], St
 
Vitaly Muzichenko # :

그래도 원칙적으로는 가능합니다. 위에서 나는 이 시점에서 다음과 같이 생각하면서 유명하게 설명했습니다.

 ObjectSetString ( 0 ,tf+ " " +LineType+ " label" , OBJPROP_TEXT , "{" +tf+ "}   " +LineType );

물건의 이름이 아닙니다. 결국 차트에서 읽는 것은 레이블에 대해 OBJPROP_TEXT 를 사용하여 설정한 것과 정확히 일치하지만 개체 이름은 숨겨져 있고 다른 사람이 거의 읽지 않기 때문에 가독성이 떨어지는 서명을 할 수 있습니다.

반면에 "객체 목록"(Ctrl + b)에서는 사람이 읽을 수 있는 객체 이름을 보는 것이 바람직하므로 내 버전이 여전히 선호됩니다. 또한 개체 이름이 너무 길어서 추가 "pref_"가 완전히 유효하지 않은 경우가 있습니다.
 
x572intraday # :

그래도 원칙적으로는 가능합니다. 위에서 나는 이 시점에서 다음과 같이 생각하면서 유명하게 설명했습니다.

물건의 이름이 아닙니다. 결국 차트에서 읽는 것은 레이블에 대해 OBJPROP_TEXT 를 사용하여 설정한 것과 정확히 일치하지만 개체 이름은 숨겨져 있고 다른 사람이 거의 읽지 않기 때문에 가독성이 떨어지는 서명을 할 수 있습니다.

반면에 "객체 목록"(Ctrl + b)에서는 사람이 읽을 수 있는 객체 이름을 보는 것이 바람직하므로 내 버전이 여전히 선호됩니다. 또한 개체 이름이 너무 길어서 추가 "pref_"가 완전히 유효하지 않은 경우가 있습니다.

누군가가 여전히 차트에 그래픽 개체가 있는 프로그램이 있는 경우 유형은 접두사 "l" < 여기서 정확히 접두사 "l"로 삭제됩니다(객체를 생성할 때 이름 " l abel" 및 " l ine"이 사용되었습니다 >

타사 프로그램에서 "l"로 시작하는 모든 개체를 종료합니다. 정말 좋은 해결책이 아닙니다.