포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 1044

 
LRA :

정수 플래그=FILE_WRITE+FILE_TXT+FILE_COMMON;

int 정보 = FileOpen(fName, 플래그);

FileWrite(정보, 할 일); 다른 단말에서 읽습니다. FileOpen 및 F1의 커서 - 도움말 보기

고마워, 내가 볼게요!
 

안녕하세요.

내 거래 이벤트 정의 라인( 새 양초 모양)에서 시계열 배열은 업데이트되지 않습니다. 더 정확하게는 새 양초가 나타날 때 값이 변경되지 않습니다. 그 이유는 무엇입니까?

 if (T[i]!=iTime( NULL ,TF[i], 1 ))

T[i]는 Expert Advisor가 시작될 때 처음으로 설정되고 새 양초가 열리면 값이 업데이트됩니다.

I 매개변수는 입력 매개변수를 기반으로 설정됩니다.

흥미롭게도 한 번에 여러 TF를 작업에 사용한 버전에서는 for 루프를 사용해야 했기 때문에 모든 것이 잘 작동했지만 충돌하고 업데이트되지 않았고 그게 다였습니다...(

 
Igemon :

안녕하세요.

내 거래 이벤트 정의 라인(새 양초 모양)에서 시계열 배열은 업데이트되지 않습니다. 더 정확하게는 새 양초가 나타날 때 값이 변경되지 않습니다. 그 이유는 무엇입니까?

T[i]는 Expert Advisor가 시작될 때 처음으로 설정되고 새 양초가 열리면 값이 업데이트됩니다.

I 매개변수는 입력 매개변수를 기반으로 설정됩니다.

흥미롭게도 한 번에 여러 개의 TF를 작업에 사용한 버전에서는 for 루프 를 사용해야 했기 때문에 모든 것이 잘 작동했지만 충돌하고 업데이트되지 않았고 그게 다였습니다... (

분명히 사이클에서 제대로 뽑히지 않았습니다 ...

다음은 새 막대를 정의하는 사용자 정의 함수입니다.

 bool NewBar( int tf, datetime &lastbar)
{
   datetime curbar = iTime( _Symbol , tf, 0 );
   if (lastbar != curbar)
    {
     lastbar = curbar;
     return ( true );
    }
   else return ( false );
} //******************************************************************|

들어오는 변수:

tf - 새 막대의 모양을 결정하기 위한 차트 기간 또는 기간 값.

lastbar - 마지막 촛불의 시간을 저장하기 위해 참조로 전달된 변수입니다.

void OnTick ()
{
// хотим определить наступление нового дня
 static datetime lastDay, lastHour;
 bool newDay, newHour;
 newDay = NewBar( PERIOD_D1 , lastDay);
 if (newDay)
 Print ( "наступил новый день" );
// и нового часа
 newHour = NewBar( PERIOD_H1 , lastHour);
 if (newHour)
 Print ( "наступил новый час" );
}
 
AlexeyVik :
 bool NewBar( int tf, datetime &lastbar)
{
   datetime curbar = iTime( _Symbol , tf, 0 );
   if (lastbar != curbar)
    {
     lastbar = curbar;
     return ( true );
    }
   else return ( false );
} //******************************************************************|

어드바이저의 첫 번째 전화에서 즉시 새로운 바에 대해 알려줍니다. OnInit()에 함수 호출 을 추가하여 수정

스크립트의 첫 번째 호출에서 즉시 새 막대를 보고한 다음 항상 false입니다. RefreshRates() 함수를 시작 부분에 추가하여 수정했습니다.

 
LRA :

어드바이저의 첫 번째 전화에서 즉시 새로운 바에 대해 알려줍니다. OnInit()에 함수 호출을 추가하여 수정

스크립트의 첫 번째 호출에서 즉시 새 막대를 보고한 다음 항상 false입니다. RefreshRates() 함수를 시작 부분에 추가하여 수정했습니다.

1. 처음으로 true를 호출할 때 이것은 정상입니다. 아직 막대가 없으면 나타난 막대는 이미 새 것입니다. 필요한 경우 전략에 필요한 경우 이러한 방식으로 새 막대 와 몇 개를 더 거부할 수도 있습니다. 덤으로, 두 가지를 더 제시합니다.

 static datetime lastDay = iTime( _Symbol , PERIOD_D1 , 0 );, lastHour = iTime( _Symbol , PERIOD_H1 , 0 );

또는

 if (lastbar != curbar && lastbar > 0 )

2. 스크립트에서 새 막대를 정의하는 이유는 무엇입니까? 이 어리석음은 어디까지인가?

 

그러나 여기에서는 웬일인지 작동하지 않습니다 ... (( 모든 것이 괜찮은 것 같습니다 (

 extern int TFrame= 1 ;

datetime T[ 6 ];
int TF[ 6 ]={ 1 , 5 , 15 , 30 , 60 , 240 };
int i=TFrame- 1 ;

int OnInit ()
   {
   T[ 0 ]=iTime( NULL , 1 , 1 );
   T[ 1 ]=iTime( NULL , 5 , 1 );
   T[ 2 ]=iTime( NULL , 15 , 1 );
   T[ 3 ]=iTime( NULL , 30 , 1 );
   T[ 4 ]=iTime( NULL , 60 , 1 );
   T[ 5 ]=iTime( NULL , 240 , 1 );
   for ( int q= 0 ;q<= 5 ;q++)
       Print (T[q]);
   return ( INIT_SUCCEEDED );
   }
 
void OnTick()
   {
   while(1==1)
      {
      if(T[i]!=iTime(NULL,TF[i],1))
 

Igemon :

 void OnTick ()
   {
   while ( 1 == 1 )
      {
       if (T[i]!=iTime( NULL ,TF[i], 1 ))
실례합니다, 헤게몬 님, 그런데 왜 이 무모한 짓을 하십니까? 어떤 사람이 당신에게 이것을 하라고 조언했습니까?
 
모두에게 좋은 하루. 누군가에게 말하십시오. 터미널이 다시 시작되거나 인터넷이 끊겼을 때 조언자의 정상적인 작동, 즉 지정된 알고리즘의 실행을 어떻게 보장할 수 있습니까?
 
artmedia70 :
실례합니다, 헤게몬 님, 그런데 왜 이 무모한 짓을 하십니까? 어떤 사람이 당신에게 이것을 하라고 조언했습니까?
뭐가 문제 야? 나는 모든 것이 괜찮기 때문에 나머지 코드를 삽입하지 않았습니다. 틱에 의존하지 않도록 주기가 필요합니다. 이벤트를 결정할 때 PC를 다시 시작하지 않으려면 100밀리초 동안 잠자는 것이 좋습니다.