표시기 기타 질문 - 페이지 12

 

그 print 문이 무언가를 생성하지 않아야 할 이유가 없습니다.

지표를 새 차트에 추가하면 기간을 변경할 필요 없이 인쇄됩니까?

그렇다면 이미 차트에 표시가 있고 변경 사항을 볼 것으로 예상하여 다시 컴파일하는 문제일 수 있습니다.

 
honest_knave :

그 print 문이 무언가를 생성하지 않아야 할 이유가 없습니다.

지표를 새 차트에 추가하면 기간을 변경할 필요 없이 인쇄됩니까?

그렇다면 이미 차트에 표시가 있고 변경 사항을 볼 것으로 예상하여 다시 컴파일하는 문제일 수 있습니다.


신속한 의견 감사합니다. 감사합니다.

응! Load Template 또는 Add Indicator 중 하나의 메시지를 아래에 인쇄합니다.

 20 ...   ... EURUSD,M1: This Year1900

그러나 그 코드는 "2017"을 줄 수 있다는 것을 알고 있습니다.

//--- 2번째 수정

다시 컴파일하면 올바른 결과가 표시됩니다.

하지만 인디케이터를 추가하고 템플릿을 로드하려고 할 때 다시 컴파일하는 MetaEditor를 열 수 없습니다... 무슨 말인지 이해하시길 바랍니다.

 
Max Enrik :


신속한 의견 감사합니다. 감사합니다.

응! Load Template 또는 Add Indicator 중 하나의 메시지를 아래에 인쇄합니다.

그러나 그 코드는 "2017"을 줄 수 있다는 것을 알고 있습니다.

//--- 2번째 수정

다시 컴파일하면 올바른 결과가 표시됩니다.

하지만 인디케이터를 추가하고 템플릿을 로드하려고 할 때 다시 컴파일하는 MetaEditor를 열 수 없습니다... 무슨 말인지 이해하시길 바랍니다.


"잘못된" 연도를 제공하는 이유는 브로커에 연결하기 전에 OnInit()이 실행 중이기 때문일 수 있습니다.

Year()는 서버 시간 을 기준으로 합니다... 연결이 되지 않으면 연도를 알 수 없습니다.

다음과 비교하십시오.

 TimeYear ( TimeLocal ())
 
honest_knave :


"잘못된" 연도를 제공하는 이유는 브로커에 연결하기 전에 OnInit()가 실행 중이기 때문일 수 있습니다.

Year()는 서버 시간을 기준으로 합니다... 연결이 되지 않으면 연도를 알 수 없습니다.

다음과 비교하십시오.


OnInit() 및 OnCalculate(...)에는 다른 코드 스타일이 필요하다는 것을 알고 있습니다...
지표를 다시 작성해 보겠습니다.
(나는 포기할 가능성이 있다)

귀하의 의견에 감사드립니다.

 

먼저 모든 표시기 개체를 삭제한 다음 다시 작성하는 코드를 작성할 수 있다고 생각합니다.
아래 코드와 같이 시도했습니다. 그러나 나는 그 방법이 의심스럽다.

Q: 이 방법으로 표시기의 모든 개체를 삭제할 수 있습니까?

어떤 조언이라도 감사하겠습니다.

 int OnInit ()
 {
   ObjectsDeleteAll ( 0 , prefix );
  
   // then all my indicator code here...
 }
 
Max Enrik :

먼저 모든 표시기 개체를 삭제한 다음 다시 작성하는 코드를 작성할 수 있다고 생각합니다.
아래 코드와 같이 시도했습니다. 그러나 나는 그 방법이 의심스럽다.

Q: 이 방법으로 표시기의 모든 개체를 삭제할 수 있습니까?

어떤 조언이라도 감사하겠습니다.


현재 차트에서 '접두사'로 시작하는 모든 개체를 삭제하는 올바른 방법입니다.
 
honest_knave :

현재 차트에서 '접두사'로 시작하는 모든 개체를 삭제하는 올바른 방법입니다.

시원한! 답장을 보내 주셔서 감사합니다.
이제 다음 날 지표가 어떻게 작동하는지 확인하기만 하면 됩니다.

(ps 나는 Tester로 내 지표를 테스트하는 것을 좋아하지 않습니다)

 

(한 번 내가 말했다)

몇 가지 지표에 대해 아래 메서드 코드를 사용합니다. 해당 지표에는 문제가 없지만 지표는 올바른 값에 대해서만 업데이트되는 플랫폼을 다시 시작해야 하는 MT4 플랫폼을 시작할 때만 문제가 있습니다. 나는 하루에 한 번만 그 문제에 직면합니다.

Q: 코드의 아래 부분이 올바른 값을 업데이트할 수 없는 문제를 일으킬 수 있습니까?

미리 감사드립니다.

 int OnInit ()
{
     //---
     datetime a = iTime ( Symbol (), 0 , 0 );
     int       b = iBarShift ( Symbol (), 0 , a );
     datetime c = iOpen ( Symbol (), 0 , b );
     //---
     return ( 0 );
}
 

OnInit()의 코드는 한 번만 실행됩니다.

터미널을 다시 시작하면 브로커에 연결하기 전에 OnInit()가 완료될 수 있습니다.

브로커에 연결하지 않으면 시간이 잘못될 것입니다.

코드를 OnInit() 밖으로 옮기거나 최소한 IsConnected()를 확인 하는 것이 좋습니다.

 
honest_knave :

코드를 OnInit() 밖으로 옮기거나 최소한 IsConnected()를 확인하는 것이 좋습니다.

이 IsConnected()를 사용하지 마십시오. 이에 대해 조사하겠습니다.

정말 감사합니다.

사유: