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

 
Anton Zverev :

iCustom+IndicatorRelease. 갑자기 복잡한 엔티티를 생성하는 것은 목발 솔루션이 아닐 수 있습니다. 취향은 논할 수 없었다. 문제는 에이전트 집합에 대한 이러한 목발이 자원을 헛되이 소비하는 정도입니다.

글쎄, 거의 모든 것이 상위 5 위 안에 쿨합니다. 최고 속도. 그리고 여기, 실례합니다, 당신이 기대하지 않는 일종의 완전한 털이 있습니다.

지표를 출시하는 이유는 무엇입니까?

각 새 틱에 대해 테스트된 EA에 차트 이벤트를 보내도록 합니다.

후속 릴리스에서 각 틱에 표시기를 만드는 것은 리소스 낭비가 발생하는 곳입니다.

 
Anton Zverev :

Vasily는 FORTS(테스터가 아님)에서 메커니즘이 구독 및 BookEvent를 통해 작동한다고 언급했습니다. 따라서 일반적으로 모든 차트에 대한 고문의 바인딩을 제거합니다.

BookEvent는 아직 테스터에서 구현되지 않았습니다.
 
Slawa :

지표를 출시하는 이유는 무엇입니까?

각 새 틱에 대해 테스트된 EA에 차트 이벤트를 보내도록 합니다.

후속 릴리스에서 각 틱에 표시기를 만드는 것은 리소스 낭비가 발생하는 곳입니다.

제가 표현을 잘 못해서 이해를 못하시네요. 자세한 내용은 여기 https://www.mql5.com/en/code/280

그리고 이 솔루션은 그러한 간단한 것을 구현하기 위해 얼마나 많은 리소스를 소비합니까?

Мультивалютный обработчик событий OnTick(string symbol)
Мультивалютный обработчик событий OnTick(string symbol)
  • 투표: 27
  • 2011.02.01
  • Konstantin Gruzdev
  • www.mql5.com
Упрощенная реализация полноценного мультивалютного режима в MetaTrader 5. Нет необходимости вникать в то, как это работает. Минимум простых настроек. Максимум удобства для пользователей. Работает в тестере.
 
Slawa :
BookEvent는 아직 테스터에서 구현되지 않았습니다.
테스터에 있지 않더라도 Forex를 쟁기질하지 않는다면 테스터에서 그에게 무슨 의미가 있습니까? Vasily는 제 생각에 위에서 합리적인 제안을 했습니다.
 
Slawa :

그리고주기는 1 초가 아니라 1 시간 미만으로 구성됩니다. 필수 확인 IsStopped()

그건 그렇고, 수면이 필요합니다. 그렇지 않으면 테스터를 끊으십시오. 글쎄, 시스템의 리소스는 어드바이저의 정상 작동 중에 소모됩니다.

버전을 테스트하지도 마세요.

 2016.04 . 26 19 : 39 : 05      Core 1    2016.04 . 25 00 : 16 : 48    infinite Sleep loop detected while testing
2016.04 . 26 19 : 39 : 05      Core 1   EURUSD : 2016.04 . 25 00 : 00 - 2016.04 . 26 00 : 00    1439 minute bars absent in total while real ticks present
2016.04 . 26 19 : 39 : 05      Core 1   EURUSD : real ticks begin from 2016.01 . 04 00 : 00 : 00
2016.04 . 26 19 : 39 : 05      Core 1     SleepPause= 10
2016.04 . 26 19 : 39 : 05      Core 1     TimerInterval= 1000

코드

 sinput uint TimerInterval = 1000 ; // Через сколько секунд вызывать OnTimer
sinput uint SleepPause = 10 ;       // На сколько милисекунд делать Sleep
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnInit ()
  {
   EventSetTimer (TimerInterval);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer ()
  {
   const uint Amount=TimerInterval* 1000 /SleepPause;

   for ( uint i= 0 ;(i<Amount) && (! IsStopped ()); i++)
       Sleep (SleepPause);
  }
//+------------------------------------------------------------------+
 
Anton Zverev :

버전을 테스트하지도 마세요.

코드

그리고 여기서 무엇을 테스트하고 있습니까?
 
Slawa :
그리고 여기서 무엇을 테스트하고 있습니까?
테스터에서 해당 코드를 실행합니다. 테스트 하는 동안 무한 슬립 루프가 감지 되었다는 메시지와 함께 중단되었습니다.
 
Anton Zverev :
테스터에서 해당 코드를 실행합니다. 테스트 하는 동안 무한 슬립 루프가 감지 되었다는 메시지와 함께 중단되었습니다.

여러 번 이미 "문서 읽기"라고 말했습니다.

"모든 문서를 읽었습니다. 여러 번"이라고 대답하지 않았습니까?

근데 이거 읽어 보셨어요 ? 없는듯...

Sleep() 함수의 실행 결과 테스터의 현재 시간이 테스트 기간의 끝을 넘어서면 "무한 루프 in Sleep" 오류가 수신됩니다. 이러한 오류가 수신되면 테스트 결과를 버리지 않고 모든 계산(트랜잭션 횟수, 인출 등)을 전체 수행하고 이 테스트 결과를 단말기로 전송합니다.

 
Slawa :

근데 이거 읽어 보셨어요 ?

아주 꼼꼼히 읽었습니다. 사실 OnTimer에서 Sleep을 사용 하면 테스트 간격을 넘어서는 시점을 판별하는 것이 불가능합니다. IsStopped(문서 읽기 때문에 즉시 코드에 등록됨)는 종료 시 작동하지 않습니다. 누구의 캔트?
 
Slawa :

그리고 OnTimer의 주기에서 틱을 건너뛰는 것과 관련하여 재현 가능한 증거가 필요합니다. 당신은 그들을 가지고 있습니까?

당신 은 문서에서 그것에 대해 썼습니다 !

테스터에서 Sleep() 호출은 테스트 프로세스를 지연시키지 않습니다. Sleep()이 호출되면 생성된 틱이 지정된 지연 시간 내에 "재생" 되며 그 결과 보류 중인 주문, 중지 등이 트리거될 수 있습니다. Sleep()을 호출한 후 테스터에서 시뮬레이션된 시간은 Sleep 함수의 매개변수에 지정된 간격만큼 증가합니다.

따라서 이러한 각 틱에서 고문을 호출하는 것은 작동하지 않습니다. 증거가 인정됩니까?