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

 
x572intraday :

결과:

이상한 불특정 숫자는 무엇입니까? 도움말에서 찾지 못했고 Google에서 검색하지 않았습니다. EMPTY_VALUE 같지 않습니다.

일종의 쓰레기

설정 값

 int Arr[ 1 ]={ 0 };
 
Vitaly Muzichenko :

일종의 쓰레기

설정 값

예, 연습을 위한 것이 아니라 순전히 이론적 호기심에서 나온 것입니다. 또 다른 숫자는 쓰레기처럼 보였고(9xxx - 정확히 기억은 안남) 한 번만 나오고 더 이상 재생이 불가능했지만 위의 숫자는 일정하고 수시로 반복되었습니다. (흥미롭게도, 당신과 다른 사람들은 그것을 동일하게 가지고 있습니까?) 나는 그것을 병렬로, 중요한 것은 다른 프로그래머들이 고통스럽게 걸려 넘어지지 않는다는 것입니다.

 
x572intraday :

예, 연습을 위한 것이 아니라 순전히 이론적 호기심에서 나온 것입니다. 또 다른 숫자는 쓰레기처럼 보였고(9xxx - 정확히 기억은 안남) 한 번만 나오고 더 이상 재생이 불가능했지만 위의 숫자는 일정하고 수시로 반복되었습니다. (흥미롭게도, 당신과 다른 사람들은 그것을 동일하게 가지고 있습니까?) 나는 그것을 병렬로, 중요한 것은 다른 프로그래머들이 고통스럽게 걸려 넘어지지 않는다는 것입니다.

나는 "0"을 가지고 있으며 여러 번 확인했습니다.

 
Vitaly Muzichenko :

나는 "0"을 가지고 있으며 여러 번 확인했습니다.

흠... 한 상황이 다른 상황과 어떻게 관련되어 있는지 모르겠지만 다른 통화 쌍에 대한 지표로 시작했습니다. 숫자가 다릅니다( 각 틱 마다 동일한 숫자가 각 상품에 반복됨) 영. 기이한. 하지만 자체 번호로 초기화하지 않으면 정말 쓰레기처럼 보입니다.

 
x572intraday :

흠... 한 상황이 다른 상황과 어떻게 관련되어 있는지 모르겠지만 다른 통화 쌍에 대한 지표로 시작했습니다. 숫자가 다릅니다( 각 틱 마다 동일한 숫자가 각 상품에 반복됨) 영. 기이한. 하지만 자체 번호로 초기화하지 않으면 정말 쓰레기처럼 보입니다.

틱으로 코드를 삽입하여 다시 확인

MT4에서 지속적으로 0

mt5에서 예, 0은 매우 드물고 숫자는 511026368입니다.

 
x572intraday :

흠... 한 상황이 다른 상황과 어떻게 관련되어 있는지 모르겠지만 다른 통화 쌍에 대한 지표로 시작했습니다. 영. 기이한. 하지만 자체 번호로 초기화하지 않으면 정말 쓰레기처럼 보입니다.

배열(및 기타 모든 변수)은 생성될 때 메모리가 할당됩니다. 배열이 초기화되지 않은 경우 이 메모리에 과거 사용에서 남은 것은 쓰레기입니다.

프로그램에서 값을 변경하지 않으면 이 메모리에 아무 일도 일어나지 않고 가비지는 값을 유지합니다.

MT4에서 모든 변수와 배열은 강제로 0으로 초기화됩니다.

 

CExpert.TradeEventOrderTriggered()가 호출되지 않음

FORTS 시장과 작업할 때 BCS-Demo 서버, 보류 중인 주문이 트리거될 때 CExpert.TradeEventOrderTriggered() 호출의 불안정성이 발견되었습니다.
MQL5 표준 라이브러리CExpert::CheckTradeState 메소드 코드는 위치, 주문, 거래 및 내역에 대한 정보 획득의 가능한 비동기성을 고려하지 않습니다.

 1446://--- check triggering of a pending order
1447:   if (hist_ord_tot==m_hist_ord_tot+ 1 && ord_tot==m_ord_tot- 1 )
1448:     {
1449:       //--- triggering of a pending order
1450:       if (deal_tot==m_deal_tot+ 1 )

이력 데이터에 따라 코드를 실행하면 조건이 올바르게 처리됩니다. 실제 데이터로 작업할 때 위치, 거래, 주문 및 내역 변경에 대한 정보를 동시에 수신하지 못하는 상황이 있을 수 있으며, 또한 정보를 얻는 순서는 임의적입니다.

bool CExpert::CheckTradeState(void) 메서드 호출 로그입니다. CheckTradeState()에 대한 한 번의 호출은 " CheckTradeState: ....." 2줄에 해당합니다.

//Сработал отложенный ордер открытия позиции
CheckTradeState: hist_ord_tot = 613 ord_tot = 0 deal_tot = 544 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 613 m_ord_tot = 1 m_deal_tot = 543 m_pos_tot = 0
CheckTradeState: hist_ord_tot = 614 ord_tot = 1 deal_tot = 544 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 614 m_ord_tot = 1 m_deal_tot = 544 m_pos_tot = 1

//Сработал отложенный ордер открытия позиции 
CheckTradeState: hist_ord_tot = 615 ord_tot = 1 deal_tot = 546 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 615 m_ord_tot = 1 m_deal_tot = 545 m_pos_tot = 0
CheckTradeState: hist_ord_tot = 615 ord_tot = 0 deal_tot = 546 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 615 m_ord_tot = 1 m_deal_tot = 546 m_pos_tot = 1
CheckTradeState: hist_ord_tot = 616 ord_tot = 0 deal_tot = 546 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 616 m_ord_tot = 0 m_deal_tot = 546 m_pos_tot = 1

로그에서 다음을 볼 수 있습니다.
1. 미결 주문을 실행한 후 히스토리 길이가 거래, 주문 및 위치에 대한 정보보다 늦게 업데이트되어 코드의 첫 번째 조건을 충족할 수 없습니다.
2. 주문, 거래, 포지션의 수 변경에 대한 정보 수신의 비동기화가 가능하여 코드에서 두 번째 조건을 충족하는 것이 불가능합니다(첫 번째 문제를 어떤 식으로든 우회하고 첫 번째 if를 실행하는 경우). 아마도 이 비동기화는 주문이 2단계(부분: 1 lot + 1 lot)로 실행되었을 때 발생했을 것입니다. 하지만 이 경우 트랜잭션 수가 +2가 아닌 +1인 이유입니다.

나는이 코드로 그것을 망쳤다.

//--- establishment of the checkpoint history of the trade
   bool isSyncMode = MQLInfoInteger(MQL_TESTER) || MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_VISUAL_MODE);
   if(!isSyncMode)
      HistorySelect(m_beg_date,TimeCurrent());
   else
      HistoryPoint(true);
//---
   return(res);

블록의 의미: 비동기 모드에서 기록이 로드되지 않았을 때 가능한 절차의 끝에 도달한 경우 기록을 가져오지만 주문 수 등의 값을 기억하지 못합니다.

PS 표준 라이브러리의 이 부분은 개발이 덜 된 것 같습니다. 특히 3번 연속으로 작성되는 코드 조각은 부끄럽다.

 1458 : res=TradeEventOrderTriggered();
1459 : //--- establishment of the checkpoint history of the trade
1460 : HistoryPoint( true );
1461 : return (res);

문제가 발견되어 어딘가에서 수정되기를 바라는 마음으로 여기에 글을 씁니다.

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
시장에 있는 Expert Advisors의 EX5 파일 크기를 살펴보았습니다. 내가 본 모든 것은 200Kb 미만입니다. 무엇이 그것을 그렇게 작게 만드는가? 간단한 코드?
 
fxsaber :
시장에 있는 Expert Advisors의 EX5 파일 크기를 살펴보았습니다. 내가 본 모든 것은 200Kb 미만입니다. 무엇이 그것을 그렇게 작게 만드는가? 간단한 코드?

나는 작성자가 천재라고 생각합니다. 탑 셀러의 90%는 플랫폼에 대해 전혀 질문이 없습니다. 따라서 타고난 지식으로 코드를 작성합니다.)))


이것은 질문입니다:

데이터 리소스를 연결합니다.

 #resource "Common\\Files\\EURUSD_tick.bin" as const MqlTick HistoryData[]

오류가 발생합니다.

리소스 파일 'Common\Files\EURUSD_tick.bin'을 찾을 수 없습니다.

리소스 파일을 열 수 없습니다.....\\MQL5\Experts\Virtual\Common\Files\EURUSD_tick.bin' (3)

파일이 EA 폴더 또는 Files 폴더에 있으면 모든 것이 정상입니다.


Common 폴더에서 리소스를 연결할 수 없다는 것이 밝혀졌습니까? -또는 등록 방법이 필요하십니까?

 
Igor Makanu :

나는 작성자가 천재라고 생각합니다. 탑 셀러의 90%는 플랫폼에 대해 전혀 질문이 없습니다. 따라서 타고난 지식으로 코드를 작성합니다.)))

질문, 다른 계정.

Common 폴더에서 리소스를 연결하는 것은 불가능합니까? -또는 등록 방법이 필요하십니까?

몰라요.