OnTradeTransaction 기능에 대한 질문 - 페이지 6

 
Mikalas :

아니요, 트랜잭션은 손실되지 않으며 특정 순서로 오지 않을 수 있습니다.

TRADE_TRANSACTION_REQUEST만 항상 먼저 옵니다. 그렇지 않으면 주문 티켓을 받을 수 없습니다.

설명서를 주의 깊게 읽으십시오.

Michael, 죄송합니다. 그러나 당신은 마지막 게시물에만 답한 것 같았습니다. 그리고 그는이 페이지의 첫 번째 게시물에 설명된 모든 결과로 인해

그리고 귀하의 주소에 있는 문서를 읽으라는 권고를 듣는 것은 어쩐지 이상합니다. 읽고 또 읽고 또 읽고.

"주문 티켓"이 무엇을 의미하는지 설명해 주시겠습니까? 나는 문서에서 이것을 보지 못했다.

 
AlexeyVik :

Michael, 죄송합니다. 그러나 당신은 마지막 게시물에만 답한 것 같았습니다. 그리고 그는이 페이지의 첫 번째 게시물에 설명된 모든 결과로 인해

그리고 귀하의 주소에 있는 문서를 읽으라는 권고를 듣는 것은 어쩐지 이상합니다. 읽고 또 읽고 또 읽고.

"주문 티켓"이 무엇을 의미하는지 설명해 주시겠습니까? 나는 문서에서 이것을 보지 못했다.

티켓(ulong 티켓)은 주문에 할당되는 고유 번호입니다.

이 번호는 영장 기간과 역사에서 변경되지 않습니다.

티켓(tikcet)으로 주문에 대한 정보를 얻습니다.

 
Mikalas :

티켓(ulong 티켓)은 주문에 할당되는 고유 번호입니다.

이 번호는 영장 기간과 역사에서 변경되지 않습니다.

티켓(tikcet)으로 주문에 대한 정보를 얻습니다.

고마워 마이클. 일반적으로 주문 티켓을 티켓이라고 가정했습니다. 하지만 명확히 할 필요가 있었다.


그러나 여전히 티켓의 동작은 매우 이상합니다.

예: 테스터에서 실행의 티켓 및 볼륨.

매수 포지션이 0.1랏, 티켓 2가 열렸습니다. SellStop 0.78 티켓 3이 배치되었습니다.

SellStop이 활성화되면 위치 0.68이 유지되고 0.78의 볼륨과 음수 이익이 있는 주문 3이 기록에 들어갑니다.

동시에 티켓 4의 위치는 그대로 유지됩니다.

그리고 티켓 2의 위치 상실이 사라진 위치는 완전히 불분명합니다.


일반적으로 기록된 내용을 항상 믿을 수는 없습니다. 완전히 작성되지 않았기 때문입니다.

지연기가 활성화되면 티켓이 유지되지만 다른 위치가 닫히면 티켓에 새 티켓이 할당되는 것으로 나타났습니다.

 

위치와 지연자가 같은 방향에 있으면 티켓에서도 같은 일이 발생합니다. 티켓이 변경됩니다.


 
AlexeyVik :

분명히 이것은 거래 손실입니다 ... 그리고 무엇보다도 (문서에서 잘라내기)

Vasily, 이것은 테스터입니까 아니면 데모입니까? 테스터의 샘플이 있습니다. 테스터와 계정에서 트리거되는 OnTradeTransaction 간에 차이가 있는지 궁금합니다. 혹시나 해서 확인하겠습니다.

이것은 데모입니다. 테스터 의 이벤트 모델 과 실시간의 이벤트 모델이 다를 수 있습니다.

 

Forts의 MT5에 여러 봇이 있습니다. 하나의 악기에 여러 개를 포함합니다. 트랜잭션 기록을 통해 실행된 "로봇" 계약의 수를 확인하는 데 사용합니다. 원칙적으로 모든 것이 작동합니다. 이제 OnTradeTransaction 을 사용해 보기로 했습니다. 그것을 구현하는 방법에 대한 아이디어는 간단합니다. 거래가 발생하면 얼마나 많은 계약이 판매 또는 구매되었으며 어떤 봇이 거래를 성사시켰는지 확인합니다(거래 또는 매직 번호에 대한 특별 설명에 따라). 이 정보를 파일에 저장합니다. 그리고 질문은 이것입니다. OnTradeTransaction이 각 Expert Advisor에 있는 경우 어떻게 순차적으로 또는 어떻게든 병렬로 호출됩니까? 거래가 있었다고 가정해 보겠습니다. 많은 이벤트가 발생했으며 각 이벤트에 대해 OnTradeTransaction이 각 봇에서 순차적으로 호출됩니까? 즉, 내가 이해하는 한 모든 봇을 담당할 하나의 OnTradeTransaction 핸들러를 만드는 것이 더 쉽습니까? 나는 이미 많은 것을 프로그래밍했지만 프로그래머는 아닙니다. 코드가 좋지 않을 수 있지만, 나는 항상 그것이 제대로 작동하는지 확인합니다.

 
votor :

Forts의 MT5에 여러 봇이 있습니다. 하나의 악기에 여러 개를 포함합니다. 트랜잭션 기록을 통해 실행된 "로봇" 계약의 수를 확인하는 데 사용합니다. 원칙적으로 모든 것이 작동합니다. 이제 OnTradeTransaction 을 사용해 보기로 했습니다. 그것을 구현하는 방법에 대한 아이디어는 간단합니다. 거래가 발생하면 얼마나 많은 계약이 판매 또는 구매되었으며 어떤 봇이 거래를 성사시켰는지 확인합니다(거래 또는 매직 번호에 대한 특별 설명에 따라). 이 정보를 파일로. 그리고 질문은 이것입니다. OnTradeTransaction이 각 Expert Advisor에 있는 경우 어떻게 순차적으로 또는 어떻게든 병렬로 호출됩니까? 거래가 있었다고 가정해 보겠습니다. 많은 이벤트가 발생했으며 각 이벤트에 대해 OnTradeTransaction이 각 봇에서 순차적으로 호출됩니까? 즉, 내가 이해하는 한 모든 봇을 담당할 하나의 OnTradeTransaction 핸들러를 만드는 것이 더 쉽습니까? 나는 이미 많은 것을 프로그래밍했지만 프로그래머는 아닙니다. 코드가 좋지 않을 수 있지만, 나는 항상 그것이 제대로 작동하는지 확인합니다.

예, 각 Expert Advisor는 OnTradeTransaction을 실행합니다. 그것들은 심볼로 필터링되어야 하며, 하나의 심볼에 둘 이상의 어드바이저가 있으면 매직으로 필터링해야 합니다.

 

답변 해주셔서 감사합니다. 나는 이미 이것을 확인했고 모든 어드바이저에서 작동하는 것을 보았습니다. 질문은 다릅니다(어리석은 질문일 수 있음). 모든 어드바이저의 이러한 모든 OnTradeTransactions 는 먼저 한 어드바이저에서, 다음 어드바이저 등에서 순차적으로 처리되고 병렬 처리되지 않습니다. 맞습니까? 저것들. 이론적으로 처리는 순차적(?)이므로 모든 봇에 대해 하나의 처리기를 만들고 필요한 것을 필터링하는 것이 좋습니다.

 
votor :

답변 해주셔서 감사합니다. 나는 이미 이것을 확인했고 모든 어드바이저에서 작동하는 것을 보았습니다. 질문은 다릅니다(어리석은 질문일 수 있음). 모든 어드바이저의 이러한 모든 OnTradeTransactions 는 먼저 한 어드바이저에서, 다음 어드바이저 등에서 순차적으로 처리되고 병렬 처리되지 않습니다. 맞습니까? 저것들. 이론적으로 처리는 순차적(?)이므로 모든 봇에 대해 하나의 처리기를 만들고 필요한 것을 필터링하는 것이 좋습니다.

테스트하지는 않았지만 패턴이 아닌 것 같습니다. 누가 먼저 일어났는지 슬리퍼처럼. 그리고 그들이 동시에 일어나면 각자 슬리퍼를 하나씩 가질 수 있습니다.

지금까지는 기호와 마법으로 필터링하는 것이 가장 좋은 방법인 것 같습니다. 그가 그녀의 정보에 대해 쓰는 입장.

 

설명할 수 없는 것 같습니다. 다음은 실제 예입니다. 코드는 다음과 같습니다.

무효 OnTradeTransaction(const MqlTradeTransaction & trans,

const MqlTradeRequest(&R) 요청,

const MqlTradeResult&result)

{

카운트++;

Print("Ontrade_test = ",카운트);

}

핸들러는 두 명의 Expert Advisors에서 사용되며 1개의 거래를 할 때 두 개의 Expert Advisors에서 여러 번 처리됩니다. 코드 출력:

18:31:06.495 ontrade_trans_functions(MXI-12.17,H1) Ontrade_test = 1

18:31:06.495 ontrade_trans_functions2(MXI-12.17,H1) Ontrade_test = 1

18:31:06.497 ontrade_trans_functions(MXI-12.17,H1) Ontrade_test = 2

18:31:06.497 ontrade_trans_functions2(MXI-12.17,M5) Ontrade_test = 2

18:31:06.498 ontrade_trans_functions(MXI-12.17,M5) ontrade_test = 3

18:31:06.498 ontrade_trans_functions2(MXI-12.17,H1) ontrade_test = 3

18:31:06.500 ontrade_trans_functions(MXI-12.17,M5) Ontrade_test = 4

18:31:06.500 ontrade_trans_functions2(MXI-12.17,H1) ontrade_test = 4 ...

등.

두 명의 Expert Advisors에서 OnTradeTransaction의 처리 시간이 최대 밀리초까지 일치함을 알 수 있습니다. 그래서 질문이 생겼습니다. "거래" 이벤트 가 한 Expert Advisor의 한 OnTradeTransaction에 먼저 발생한 다음 다른 Expert Advisor의 다음 이벤트에 발생합니까, 아니면 모든 Expert Advisor의 모든 처리기에 동시에 도착합니까? 글쎄, 병렬 다중 스레드 작업이나 프로그래밍에서 호출되는 것처럼. 나는 모든 것이 순차적으로 발생한다고 확신합니다. 1 밀리 초 만에 빠르게 작동하지만 만일을 대비하여 질문했습니다.