이 기능의 문제점을 설명해 주시겠습니까? - 페이지 4

 
Alexey Viktorov :

블라디미르인데 테스터에서 문제가 안나오는데.. 그런 고민은 어디서 나오나요??? 아니면 테스터에 Expert Advisor가 한 명뿐이기 때문에?

나는 또한 SD에서 유일한 변경 사항은 두 번째 고문이 다른 쌍에 넣는 것이라고 제안했습니다.

테스터에서는 전체 거래 환경을 미리 준비합니다. 모든 것이 접시에 있습니다. 걱정 마. 실생활에서는 다릅니다. 비표준 행동(다른 시간대 및/또는 다른 기호로 작업)을 사용하면 거래 환경의 관련성을 스스로 관리해야 합니다.
 
Karputov Vladimir :
한 터미널(M15 기간에는 Expert Advisors가 있었음)에서는 하나의 기호에서 작동하지 않았습니다. 문제는 다른 사람의 시간대를 사용할 때 모든 기록을 "풀업"해야 한다는 것 입니다. 시간 . CopyTime()을 통해 하는 것이 좋다고 생각합니다.
그리고 CopyRates() 가 이 히스토리를 가져옵니다??? 결국, 시간은 구조에 존재합니다 ...
 
Karputov Vladimir :

그것은 실수가 아니다. 당신은 다른 사람의 시간 프레임에 작업하고 있습니다. 이 경우 다른 사람의 시간대에 대한 데이터가 최신인지 확인해야 합니다.

개인적으로 대안이 보이지 않습니다.

사실이 아니며 SERIES_LASTBAR_DATE 가 어떻게 작동하는지 알 수 없습니다. 마지막 막대의 시간은 지정된 기호의 TimeCurrent()를 사용하여 계산할 수 있으므로 아무 것도 업데이트할 필요가 없을 수도 있습니다. 개발자에게 물어보십시오.

그러나 두 개의 변수가 true에 할당되면 함께(&&를 검사할 때) 이러한 변수도 true를 제공한다는 분명한 사실입니다.

 

다른 도구/TF의 캐시가 사라지는 문제가 실제로 존재합니다.

또한 오류를 확인하고 루프에서 로드를 기다리는 것이 항상 도움이 되는 것은 아닙니다. 우리는 서비스 데스크에서 이야기했지만 MQ에서 진행 상황은 없었고 단 하나의 힌트만 있었습니다.

Support Team   2016.02.29 11:45

의심되는 것은 기록 데이터가 시간 초과에 의해 언로드된다는 것입니다.

2가지 솔루션이 있습니다.

1. 3분에 한 번 이상 데이터에 액세스

2. 데이터에 매우 간단한 지표를 첨부합니다. 예를 들어 볼륨. 계산이 없으며 하나의 버퍼만 사용됩니다. 표시기가 있으면 액세스 빈도에 관계없이 메모리에 기록 캐시가 유지됩니다.

두 번째 팁이 작동하지 않고 표시기가 항상 호출되지만 어느 시점에서 캐시가 떨어져 데이터를 가져올 수 없게됩니다.

Andrey Khatimlianskii 2016.03.18 13:41

나는 그러한 목발로 문제를 해결했습니다. 150초마다 관련된 모든 기기/TF에 대해 다음 코드를 호출합니다.

 bool CheckTimeSeries( string symbol, ENUM_TIMEFRAMES period )
{
   double array[];
    if ( CopyClose ( symbol, period, 1 , 1 , array ) <= 0 )
   {
                 int err = GetLastError ();
                 Print ( " * Can't refresh timeseries (" , symbol, ", " , period, ")! ERROR #" , err, "!!!" );
                 return ( false );
   }
   return ( true );
}

충분히 빠르게 작동하며 이 업데이트 후에 오류 4806이 사라진 것 같습니다.

 

또 다른 오해에 대한 의견을 부탁드립니다.

Bars

해당 기간 기호에 대한 기록의 막대 수를 반환합니다. 기능에는 2가지 옵션이 있습니다.


두 번째 옵션만 관심이 있습니다.

주어진 간격의 막대 수 요청
 int    Bars (
   string            symbol_name,     // имя символа
   ENUM_TIMEFRAMES   timeframe,       // период
   datetime          start_time,       // с какой даты
   datetime          stop_time         // по какую дату
   );

조언자 텍스트

/*******************Expert initialization function*******************/
int OnInit ()
{
   return ( INIT_SUCCEEDED );
} /*******************************************************************/

/************************Expert tick function************************/
void OnTick ()
{
   datetime dtarr[], date = D'2016.06.22' ;
   ArraySetAsSeries (dtarr, true );
   CopyTime ( _Symbol , PERIOD_D1 , 0 , 5 , dtarr);
   Print (dtarr[ 0 ]);
   Print ( " " , Bars ( _Symbol , PERIOD_D1 , date, dtarr[ 0 ]));
   Print ( " " , Bars ( _Symbol , PERIOD_D1 , date+ 1 , dtarr[ 0 ]));
   
} /*******************************************************************/

/******************Expert deinitialization function******************/
void OnDeinit ( const int reason)
{
} /*******************************************************************/

나는 시간 00:00:00이 시간 00:00:01과 정확히 같은 다음 날에 속한다는 것을 이해합니다.

하지만... 제안된 지문은 이에 동의하지 않습니다.

 2016.06 . 24 22 : 18 : 56.450 TestTime (EURUSD,M15)     2
2016.06 . 24 22 : 18 : 56.450 TestTime (EURUSD,M15)     3
2016.06 . 24 22 : 18 : 56.450 TestTime (EURUSD,M15)   2016.06 . 24 00 : 00 : 00

2016.06.22 00:00:00 ~ 2016.06.24 00:00:00 3개의 일일 바, 2016.06.22 00:00:01 ~ 2016.06.24 00:0TWO...00 사이에만

아니면 제가 뭔가 착각하고 있는건가요???

파일:
TestTime.mq5  2 kb
 

그리고 현재 막대의 시간에 1초를 더하면

   Print ( " " , Bars ( _Symbol , PERIOD_D1 , date, dtarr[ 0 ]+ 1 ));
   Print ( " " , Bars ( _Symbol , PERIOD_D1 , date+ 1 , dtarr[ 0 ]+ 1 ));

그러면 이렇게 됩니다

 2016.06 . 24 22 : 26 : 48.602 TestTime (EURUSD,M15)     3
2016.06 . 24 22 : 26 : 48.602 TestTime (EURUSD,M15)     4
2016.06 . 24 22 : 26 : 48.602 TestTime (EURUSD,M15)   2016.06 . 24 00 : 00 : 00

시간이 2016.06.24 00:00:01 다음바에 속하는거같은데???

 
막대 수가 결정되는 간격에는 상한 시간이 포함되지 않습니다.
 
Dmitry Fedoseev :
막대 수가 결정되는 간격에는 상한 시간이 포함되지 않습니다.

드미트리, 이상하지 않아? 새 막대가 나타났지만 아직 계산하지 않습니다.

들어봐, 이것이 이 동작의 이유가 아닌가? SeriesInfoInteger(_Symbol, PERIOD_D1, SERIES_LASTBAR_DATE ); ? 새 막대가 나타나고 눈금이 있고 코드가 실행되고 있지만 시간은 아직 고려되지 않았습니다???

 

글쎄, 어린 양은 날아갔습니다 ... 그리고 완전히 무시했습니다 ...

Vladimir, 당신은 적어도 이 질문에 대답할 수 있습니까 ???

Alexey Viktorov :
그리고 CopyRates()가 이 히스토리를 가져옵니다??? 결국, 시간은 구조에 존재합니다 ...
 
Alexey Viktorov :

글쎄, 어린 양은 날아갔습니다 ... 그리고 완전히 무시했습니다 ...

Vladimir, 당신은 적어도 이 질문에 대답할 수 있습니까 ???

서비스 데스크에서 조언한 것보다 더 나은 음성 - 그곳에서 계속 의사 소통을 했습니까?
사유: