[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 5. - 페이지 209

 
polycomp :
이것들은 함수이고 객체는 그래프에 그려지는 사각형입니다.

파일:
 
polycomp:


파일:
 
시간이 걸릴 것입니다.
 
polycomp :
재초기화 후 코드가 작동하는 방식의 차이에 대한 가능한 이유 중 하나는 MT4에서 정적 변수를 초기화하는 특성입니다. isNewBar() 함수에서 이러한 변수를 사용합니다. 초기 초기화 동안 BarTime = 0입니다. 그리고 후속 재초기화 동안 이 변수는 이전 값(0이 아님)을 포함합니다. 이 가정을 테스트하려면 BarTime 변수를 전역으로 만들고 코드를 테스트하십시오.
 
polycomp :
알슈 :

먼저 Print의 라이브러리 함수에서 무언가를 인쇄하여 호출되었는지 확인합니다.

그래픽 개체는 라이브러리 기능에서 생성됩니다. 표시기의 첫 번째 호출 후 개체가 생성되어 터미널 창에 표시됩니다.

객체 목록에서 다시 호출되면 표시되지 않습니다. 즉, 표시기가 다시 계산될 때 외부 기능이 어떤 이유로 쟁기질하지 않으며 터미널은 이에 대해 침묵합니다.

확인. 아마도 간접적 인 표시로 판단하지 않고 표시기 자체에 어리석게 인쇄하십시오. 인쇄 ( "이러한 기능 호출"); 우리는 그것이 호출되었는지 여부를 즉시 볼 것입니다.

덜 오만하면 실수를 더 빨리 찾을 수 있습니다)

 
polycomp :



일반적으로 문제는 기능에 있을 가능성이 가장 높습니다.

 bool isNewBar()
{
   static datetime BarTime;  
   bool res= false ;
    
   if (BarTime!=Time[ 0 ]) 
      {
         BarTime=Time[ 0 ];  
         res= true ;
      } 
   return (res);
}

요점은 재초기화 중에 정적이 재설정되지 않으므로 BarTime을 다시 시작할 때 항상 마지막 막대의 시간이 마지막으로 계산된다는 것입니다. isNewBar()는 새 촛불 이 도착할 때까지 거짓입니다. 라이브러리에서 mqh 포함기로 함수를 전송하고 초기화()에서 명시적으로 BarTime=0을 재설정하는 것이 좋습니다.

이것은 코드를 언뜻보기에 내가 직접 만든 것이므로 거짓말을 했다면 엄격하게 판단하지 마십시오.

 
polycomp :



우선 lib에서 이 줄을 제거하겠습니다.

 #property library

라이브러리를 사용하지 않고 포함 파일을 사용하기 때문에

 
alsu :

내가 기억하는 한 지연을 설정할 때 이 시간을 구체적으로 기억해야 합니다. 주문에 대한 주석에서 직접 기억할 수 있습니다(또는 마법에서 특별한 변태로).
정말 감사합니다.
 

질문 1.

그러한 아이디어를 코딩하는 방법.

보류 주문 을 하십시오. 하지만 보류 주문 설정 가격이 TF60 양초의 시작 가격과 일치하는 경우에만 시장 주문으로 전환되도록 하십시오.

질문 2.

그러한 아이디어를 코딩하는 방법.

보류 주문이 시장 주문으로 전환되면 10분 후입니다. 시장가 주문으로 전환된 이전 보류 주문에서와 같은 동일한 값으로 다른 보류 주문을 시작합니다: 개시 가격 , 중지 주문 , 거래량 .

고맙습니다.

 
alsu :

확인. 아마도 간접적 인 표시로 판단하지 않고 표시기 자체에 어리석게 인쇄하십시오. 인쇄 ( "이러한 기능 호출"); 우리는 그것이 호출되었는지 여부를 즉시 볼 것입니다.

덜 오만하면 실수를 더 빨리 찾을 수 있습니다)

알슈 :

일반적으로 문제는 기능에 있을 가능성이 가장 높습니다.

요점은 재초기화 중에 정적이 재설정되지 않으므로 BarTime을 다시 시작할 때 항상 마지막 막대의 시간이 마지막으로 계산된다는 것입니다. isNewBar()는 새 촛불이 도착할 때까지 거짓입니다. 라이브러리에서 mqh 포함기로 함수를 전송하고 초기화()에서 명시적으로 BarTime=0을 재설정하는 것이 좋습니다.

이것은 코드를 언뜻보기에 내가 직접 만든 것이므로 거짓말을 했다면 엄격하게 판단하지 마십시오.


정말 감사합니다!

라이브러리에서 isNewBar()를 제거하고 표시기 파일에 배치했습니다. 모든 것이 시계처럼 작동합니다!