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

 

SD에 답장을 할 수 없습니다. 잠시 생각하고 포기한다

 
fxsaber :

SD에 답장을 보낼 수 없습니다. 잠시 생각하고 포기한다

이것은 새로운 종류의 목욕입니다)))
 
stringo :

예, 시간순으로 정렬됩니다. 시작 항목은 이진 검색으로 검색됩니다.

느린 이진 검색을 얻습니다.
 #include <MT4Orders.mqh>

// Metaquotes-Demo, Netting, RTS-6.17, 2017.04.06 - 2017.04.07, на основе реальных тиков, начальный баланс 10000000 RUR
void OnTick ()
{  
   static bool Error = false ;  
   static int Type = OP_BUY ;
  
   if (Error)
     return ;
  
   MqlTick Tick;    

   if ( OrderSelect ( 0 , SELECT_BY_POS ) && ( OrderType () <= OP_SELL ))
  {
     const datetime PosTime = ( datetime ):: PositionGetInteger ( POSITION_TIME );      
     HistorySelect (PosTime, PosTime);

     OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 0 );   
  }
   else if (( OrdersTotal () == 0 ) && SymbolInfoTick ( _Symbol , Tick) && (Tick.bid != 0 ) && (Tick.ask != 0 ))
  {
    Error = ( OrderSend ( _Symbol , Type + OP_BUYLIMIT , 1 , (Type == OP_BUY ) ? Tick.ask : Tick.bid, 0 , 0 , 0 , "" , 0 , 0 , INT_MAX ) == - 1 );        
    
     if (!Error)
    {
       OrderSend ( _Symbol , Type + OP_BUYLIMIT , 1 , (Type == OP_BUY ) ? Tick.ask : Tick.bid, 0 , 0 , 0 );
      
      Type = OP_SELL - Type;
    }    
  }
}

분홍색 선이 없으면 빠르게 작동합니다. 그들과 함께 - 매우 천천히 (몇 배 정도). 각 HistorySelect(PosTime, PosTime)는 기록에서 수십 개 이하의 레코드를 선택합니다. 그렇다면 모든 컴퓨팅 리소스 는 무엇에 소비됩니까? 매 틱마다 이 수십 개의 레코드를 복사하는 것이 정말입니까?

 

그리고 또 테스터와 실시간으로 같은 Expert Advisor의 작업이 불일치하는 문제에 직면했습니다. 처음에는 지표가 복잡하기 때문이라고 생각했습니다. 그런 다음 내장 밴드를 연결했습니다. 같은 물건.

작업 방식은 간단합니다.

OnInit - 표시기 핸들 가져오기

OnTick - 분석(지표 버퍼에 복사) 및 거래

OnDeinit - 핸들을 놓습니다.

확인하기 위해 다음을 수행했습니다. 계획에 따라 실시간으로 알고리즘을 변경했습니다.

OnTick - 지표 핸들, 분석(지표 버퍼에 복사) 및 거래를 가져 오고 핸들을 놓습니다 .

그리고 기적에 대해! 모든 것이 테스터와 일치하기 시작했습니다!

그게 다야? 벌레? 또는 다른 것.....

 
Alexey Kravchenko :

그게 다야? 벌레? 또는 다른 것.....


다중 통화 표시기?
 
Sergey Dzyublik :

다중 통화 표시기?
표준 대역 표시기 . 다중 통화 전문가 고문.
 
아마도 비교되는 옵션 중 하나에서 다른 통화 쌍의 데이터가 업데이트되지 않을 수 있습니다.
이 때문에 다른 결과가 얻어집니다.
 
Sergey Dzyublik :
아마도 비교되는 옵션 중 하나에서 다른 통화 쌍의 데이터가 업데이트되지 않을 수 있습니다.
이 때문에 다른 결과가 얻어집니다.

그렇다면 터미널 자체가 이 업데이트를 올바르게 수행해야 합니까 ?

나는 작업하는 모든 악기에 대해 OnInit에서 핸들을 수신하고 필요한 모든 시간 프레임을 동기화합니다. 새로운 바가 형성될 때만 처리합니다. 그리고 나는 일반적으로 "왼쪽"도구에서 고문을 실행합니다 :-)

요점은 이것이 아니라 트리거링 측면에서 실시간과 불일치가 없어야한다는 사실입니다.

그리고 모든 것이 정상적으로 작동하려면 매번 표시기 핸들을 받아야 하는 경우 이미 문제가 되지 않습니다....

 
Alexey Kravchenko :

그렇다면 터미널 자체가 이 업데이트를 올바르게 수행해야 합니까 ?
그리고 모든 것이 정상적으로 작동하려면 매번 표시기 핸들을 받아야 하는 경우 이미 문제가 되지 않습니다....


이 스레드의 답변, 특히 개발자의 답변을 보면 유용할 수 있습니다.
https://www.mql5.com/ru/forum/190003

 

주님! 글을 다 써서 죄송합니다. 그러나 최대한 빨리 도움이 필요합니다.

터미널 오류가 발생하여 사용자 지정 표시기 및 조언자 연결이 중지되었습니다.

이렇게 로그

2017.04.20 18:18:59.764 커스텀 인디케이터 AD(@Si,H1) 로드 실패

이것은 초기 설치를 업데이트한 후 나타나는 예제 폴더의 사용자 지정 표시기입니다.

사용자 지정 및 표시기 및 조언자인 다른 모든 것 - 로드가 중지되었습니다. 갑자기! (그 전에는 일하고 테스트하고 거래했습니다)

나는 다른 누군가가 비슷한 것을 경험했다고 확신합니다.

대책이 있습니까?

같은 주제로:

2017.04.20 18:48:00.931 전문가 ExpertMACD(@Si,H1) 로드 실패

2017.04.20 18:48:42.786 전문가 ChartInChart(@Si,H1) 로드 실패


느낌) 길을 찾지 못하는 ...

내가 무엇을 놓치고 있습니까?

플랫폼을 변경했습니다. AppsData/.../Terminal의 폴더를 다시 설치하기 전에 덮어썼습니다. 동일한 축(W2008RC2)을 사용하는 다른 컴퓨터에서는 모든 것이 작동합니다.

덕분에 빌드 확인했습니다.

귀하의 답변과 조언을 기다리겠습니다. 무엇을 할 것인가.

2017.04.21 10:53:54.329 단말기 MetaTrader 5 x64 빌드 1583 시작(MetaQuotes Software Corp.)

2017.04.21 10:53:54.329 단말기 Windows Server 2008 R2 Enterprise(x64 기반 PC), IE 08.00, UAC, Intel Core i5

2017.04.21 10:53:54.329 단말기 C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

2017.04.21 10:55:07.320 전문가 MACD 샘플(EURUSD,H1) 로드 실패

2017.04.21 10:55:45.669 커스텀 인디케이터 AMA(EURUSD,H1) 로드 실패