거래 중 거래 - 페이지 9

 
Aleksey Mavrin :

예, 당신이 옳습니다. 왜냐하면 이 경우 수명 내내 일정한 위치 식별자에 대해 이야기하고 있습니다. 롤오버 및 네팅 중에 변경되는 포지션 티켓과 혼동했습니다.

이해가 안 가네요 - 포지션이 부분적으로 마감되었을 때 - 티켓은 chtoli를 포지션에 영향을 미친 마지막 주문의 티켓으로 변경하지 않습니까?

거래를 사용하는 것은 중복됩니다. 제 코드를 검토하겠습니다. 감사합니다. 내가 포럼에 올라간 것은 당연합니다)

현재 목록에도 없고 과거 목록에도 없는 "분실된 주문"에 대한 질문에: 이것은 버그가 아닌 것 같습니다. 작업의 기능을 주의 깊게 살펴봐야 합니다.

바인딩 터미널-서버 MT-Market (즉석 실행의 경우 시장이 사라짐). 제 생각에는 봐요-단말기가 시장가 주문을 보내고 동기 기능의 경우 서버에서 대기하고 응답을 받는데,

오류가 아닌 경우 대답은 TRADE_RETCODE_DONE(즉석 재인용의 경우 지금까지는 시장 유형 실행)일 수 있습니다. 이는 본질적으로 서버가 주문을 시장 및 자체로 더 보냈다는 것을 의미합니다.

답변을 기다리고 있습니다. 현재 주문 상태는 내가 틀리지 않고 해당 티켓을 알고 있는 경우 ORDER_STATE_STARTED 입니다. 주문이 실행되면 서버가 OnTradeTransaction을 터미널에 보내고 주문 상태가 ORDER_STATE_FILLLED로 변경되고 거래가 알려지게 됩니다.

그리고 위치. 이 순간에만 단말기는 주문을 이력에 기록합니다. 이전에는 그가 이것을 하지 않기 때문입니다. 그에게 무슨 일이 일어 났는지 확실하지 않습니다. 그는 이미 서버의 기본 응답을 제공했습니다.

ECN 네트워크 또는 다른 곳에서 주문이 실행되고 두 목록에 없는 시간입니다. 저것들. 시장가 주문의 경우 일반적으로 내역에만 나타납니다(즉석 실행 중 재호가의 경우는 확실하지 않음).

공개 목록에 없을 것입니다. 그리고 보류 중일 때 작동하면 이미 시장가 주문이 되었기 때문에 열린 목록에서 제거되고 마켓 서버가 응답하기를 기다렸다가 히스토리에 기록됩니다.

내 말이 맞아?

설마.
 
Aleksey Mavrin :

내 말이 맞아?

앤드류는 잘 썼습니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

거래 중 거래

Andrey Khatimlianskiy , 2019.12.17 08:24

아니, 상황이 더 나빠.

잠시 동안 보류(또는 시장)에서 역사적(실행 또는 취소)으로 변환되는 순간의 주문은 터미널에서 완전히 사라집니다. 보류 중(또는 "시작된" 시장)이나 역사적 시장이 아닙니다.

즉, 실행이 아니라 이 두 테이블을 동기화하는 것입니다. 서버에서 응답이 오면("주문이 실행되었으며 이러한 트랜잭션이 생성되었습니다") 한 테이블에서 삭제되고 다른 테이블에 입력되지 않습니다.


그것은 OrderSend에 관한 것이 아닙니다. 오랫동안 BuyLimit이 있었습니다. 그리고 갑자기 그것은 매수 포지션도 어디에도 없습니다. 비슷한 상황이 발생합니다.

 
fxsaber :

앤드류는 잘 썼습니다.


그것은 OrderSend에 관한 것이 아닙니다. 오랫동안 BuyLimit이 있었습니다. 그리고 갑자기 그것은 매수 포지션도 어디에도 없습니다. 비슷한 상황이 발생합니다.


Artyom Trishkin :
설마.

이해했다. 시장가 주문도 현재 목록에 한동안 존재합니다(단순히 트레이드 탭의 터미널에 표시되지 않는 것뿐인가요?)

그런 다음 주문이 실행되고 해당 트랜잭션이 서버에서 도착하는 순간 단말은 다음과 같은 작업을 수행합니다.

1. 현재 주문에서 삭제

2. 역사에 순서를 씁니다.

3. 트랜잭션을 목록에 씁니다.

4. 목록에 위치를 씁니다.

이러한 작업에는 비록 작지만 시간이 필요하기 때문입니다. EA와 터미널 자체가 독립적인 병렬 스레드에서 작동한다는 점을 감안할 때 다음과 같이 요청하면 발생합니다.

아직 존재하지 않습니다. 이미 썼듯이 DBMS 표준에 따라 이러한 일이 발생했다면 4가지 작업이 모두 하나의 트랜잭션으로 결합되어 "중간 상태"에 도달할 수 없었을 것이기 때문에 이런 일이 발생하지 않았을 것입니다.

권리? 그리고 저는 실제로 관심이 있습니다. OnTrade 및 OnTradeTransaction 에 의존하는 경우 이러한 처리기에 지연이 없어야 합니다. 결국 변경 사항이 해당 테이블에 작성된 후에 발생합니까?

아니면 터미널이 이벤트를 수신하고 테이블을 병렬로 수정할 때 단순히 이벤트를 Expert Advisor에 전달합니까? 후자의 경우 이는 물론 잘못된 것이며 특히 최신 정보를 얻을 수 있는 OnTradeTransaction이 보장되지 않는 경우 수정해야 합니다.

 
Aleksey Mavrin :

이해했다. 시장가 주문도 현재 목록에 한동안 존재합니다(단순히 트레이드 탭의 터미널에 표시되지 않는 것뿐인가요?)

때로는 Started 상태에서 그를 볼 수도 있습니다. 그리고 로봇의 도움으로 추적은 일반적으로 쉽습니다.


알렉세이 마브린 :

이러한 작업에는 비록 작지만 시간이 필요하기 때문입니다. EA와 터미널 자체가 독립적인 병렬 스트림에서 작동한다는 점을 고려하면 이렇게 됩니다. 이 짧은 시간에 위치를 요청하면 아직 없습니다.

직위에 대한 이야기는 없고 명령만 있을 뿐입니다.

때때로 발생하는 것보다 테이블에 레코드를 추가하는 데 훨씬 적은 시간이 걸립니다. 그리고 심각하지 않습니다. 올바른 거래 환경을 확보한다는 보장은 없습니다.


알렉세이 마브린 :

그리고 저는 실제로 관심이 있습니다. OnTrade 및 OnTradeTransaction 에 의존하는 경우 이러한 처리기에 지연이 없어야 합니다. 결국 변경 사항이 해당 테이블에 작성된 후에 발생합니까?

아니면 터미널이 이벤트를 수신하고 테이블을 병렬로 수정할 때 단순히 이벤트를 Expert Advisor에 전달합니까? 후자의 경우 이는 물론 잘못된 것이며 특히 최신 정보를 얻을 수 있는 OnTradeTransaction이 보장되지 않는 경우 수정해야 합니다.

가장 순수한 형태의 OnTrade는 도움이 되지 않습니다.

주문 테이블의 동기화를 기다리는 것과 그 안에서 취향 문제를 결합할 수 있습니다. 하지만 아직 기다려야 합니다.

 
Aleksey Mavrin :

현재 목록이나 기록 목록에 없는 "분실된 주문"에 대한 질문에: 이것은 버그가 아닌 것 같습니다. 터미널 작동의 기능을 주의 깊게 살펴봐야 합니다. 서버 MT-Market 연결 (즉시 실행의 경우 시장이 사라집니다). 나는 그렇게 생각합니다. 터미널은 시장 주문을 보내고 동기 기능의 경우 기다리고 서버에서 응답을 수신합니다. 오류가 아닌 경우 응답은 TRADE_RETCODE_DONE(즉석 requotes의 경우 , 그러나 지금까지는 시장 유형 실행)에 따르면 본질적으로 서버가 주문을 시장에 더 보내고 응답을 기다리고 있음을 의미합니다. 현재 주문 상태는 내가 틀리지 않고 해당 티켓을 알고 있는 경우 ORDER_STATE_STARTED 입니다. 주문이 실행되면 서버는 OnTradeTransaction을 터미널로 보내고 주문 상태는 ORDER_STATE_FILLED로 변경되고 거래와 위치가 알려집니다. 이 순간에만 단말기는 주문을 이력에 기록합니다.

시장은 그것과 아무 관련이 없습니다.

MT 서버는 ECN이나 다른 곳으로 주문을 보내고 응답을 받아 단말로 보냈다. 그리고 이미 터미널에서 동기화되지 않은 것으로 나타났습니다.