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

 
Vitya :
PositionTotal()이 필요할 수 있습니까?

그리고 현재 주문이 얼마나 많은 OrdersTotal() 에 물어보면 그 위치는 무엇과 관련이 있는지,

이 정보를 OnTrade()에서 무엇을 요청합니까? 주문이 존재하는 순간은 어떤 식으로든 건너뛸 수 없습니다.

하지만 사실 이 순간이 어딘지 모르게 지나치며, 아직 주문이 없거나 더 이상 주문이 없을 때 요청이 전달된다는 것이 밝혀졌습니다.

그러나 OnTrade()에 있는 순간은 어떤 식으로든 포착되지 않거나 OrdersTotal()의 변종으로 뻔뻔스럽게 거짓말을 합니다.

 

코드의 비뚤어짐에 대한 불만이 없도록 여기에 MetaQuote 코드가 있습니다. 여기에 스크립트를 어드바이저로 수정한 내용이 포함되어 있습니다.

OnTrade() 함수가 추가 되었고 스크립트 코드가 OnInit()으로 이동되었습니다.

주문이 있다는 메시지가 표시된 인쇄본은 단 한 장도 없습니다.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 

MetaTrader 5의 거래 이벤트 기사에서만 이에 대한 답변을 드릴 수 있습니다.

Заключение

MetaTrader 5 거래 및 분석 플랫폼의 모든 작업은 비동기식으로 수행되며 거래 계정의 모든 변경 사항에 대한 메시지는 서로 독립적으로 전송됩니다. 따라서 "한 번의 요청 - 한 번의 거래 이벤트" 규칙에 따라 단일 이벤트를 추적하려고 해서는 안 됩니다. Trade 이벤트가 도착했을 때 정확히 무엇이 변경되었는지 확인해야 하는 경우 OnTrade 핸들러가 호출될 때마다 모든 거래, 포지션 및 주문을 분석하고 표시되기 전의 상태와 비교해야 합니다.
즉, 잡으려는 주문은 이미 HistoryOrdersTotal 을 사용하여 검색되어야 합니다.
 
Rosh :

MetaTrader 5의 거래 이벤트 기사에서만 이에 대한 답변을 드릴 수 있습니다.

즉, 잡으려는 주문은 이미 HistoryOrdersTotal 을 사용하여 검색되어야 합니다.

실제로이 기사와 안내. 나는 질문에 대한 답의 맨 아래에 도달하고 싶습니다. 거래 이벤트가 주문이 접수되었지만 아직 실행되지 않은 순간을 어떻게 놓치나요?

거래 이벤트는 다음과 같은 경우 서버에서 생성됩니다.

  • 활성 주문 변경,
  • 위치 변경,
  • 거래의 변화
  • 거래 내역의 변경.

나는 OrderTotal()이 버그가 있다고 생각합니다. 하지만 이 기능으로 증명할 수는 없습니다.

선택 사항으로 OrderTotal()이 내가 생각하는 곳이 아닌(즉, 서버가 아닌) 데이터를 가져간다는 것을 거부하지는 않습니다.

 
Urain :

실제로이 기사와 안내. 나는 질문에 대한 답의 맨 아래에 도달하고 싶습니다. 거래 이벤트가 주문이 접수되었지만 아직 실행되지 않은 순간을 어떻게 놓치나요?

Trade 이벤트가 도착할 때쯤이면 주문이 이미 이루어지고 이미 실행된 것뿐입니다. 따라서 그는 활동적인 사람들이 아니며 이미 역사에 들어갔습니다.
 
Rosh :
Trade 이벤트가 도착할 때쯤이면 주문이 이미 이루어지고 이미 실행된 것뿐입니다. 따라서 그는 활동적인 사람들이 아니며 이미 역사에 들어갔습니다.

예, 예, 내 생각이 이 답변 주위를 떠돌고 있습니다.

나는 이렇게 대답할 것이다. 주문하는 순간 서버는 "trades" 이벤트를 생성하여 터미널로 보내고, 터미널이 그것을 수신하면 코드 에서 주문 수에 대한 요청이 이루어지지만, 이 요청이 서버에 도착할 때까지 서버는 이미 이 주문을 실행한 것입니다.

나는 다른 설명이 없습니다.

 
Urain :

거래 이벤트는 다음과 같은 경우 서버에서 생성됩니다.

  • 활성 주문 변경,
  • 위치 변경,
  • 거래의 변화
  • 거래 내역의 변경.

나는 OrderTotal()이 버그가 있다고 생각합니다. 하지만 이 기능으로 증명할 수는 없습니다.

활성 보류 주문과 활성 주문 목록에 포지션을 여는 주문을 모두 포함한다는 것을 올바르게 이해했습니까?

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
papaklass :

이것은 무엇을 의미 하는가?

"프로그램이 종료된 후 사용된 메모리의 일부가 해제되지 않았습니다."와 같은 것입니다. 특히 프로그램이 new 연산자를 사용하여 동적 개체를 생성했지만 이후 에 delete 연산자 를 사용하여 삭제하지 않는 경우 유사한 메시지가 발생합니다.
 
papaklass :
... 이 메시지는 "전문가" 탭에 나타납니다. 이것은 오류가 아니라 경고입니다. 무엇에 대한 경고?

글쎄, 나는 "실수"에 대해 말하는 것이 아니다. 경고가 있게 하십시오. 나는 이미 예를 들어 내 버전을 표현했습니다. 여기에서 다른 토론을 참조하십시오(문자열 누출에 대해 - 페이지 끝까지 읽으십시오): https://www.mql5.com/ru/forum/1111/page345#comment_54616

상황에 대한 세부 정보와 함께 SD에 문의해야 할 수도 있습니다.

 

"오해"를 찾았습니다.

컴파일러가 두 번째 변수 b 의 정의를 좋아하지 않는 이유는 무엇입니까?

그리고 일반적으로 그러한 상황을 해결하는 방법은 무엇입니까?

 #property script_show_inputs

// m[a].Column[b]
input int A= 11 ;
input int B= 3 ;

#define a A
//#define b B // тут раскоментировать
#define b 3    // тут закоментировать

// размер одного элемента 4 байта
struct ArrWe
{
   float Column [b];
};

void OnStart ()
{
  ArrWe m[ 11 ]; // тут вместо "11" хочу использовать " a "
  Print ( "Размер структуры ArrWe " , sizeof (ArrWe));
   Print ( "Количество элементов 1-го измерения " , sizeof (m)/ sizeof (ArrWe));
   Print ( "Количество элементов 2-го измерения " , sizeof (ArrWe)/ 4 );   
   Print ( "Размер массива из 11 ArrWe " , sizeof (m));
}