Dmitry Fedoseev : 당신을 돕고 싶어하는 사람들 앞에서 자랑하기 전에 일반적으로 질문을 공식화합니다. 그리고 여기서 OrderSend() 함수 에 의해 부분 마감이 수행되면 주문이 비동기적으로 전송됩니다. 무엇에 대해 묻는 것입니까?
감독자!
이것을 도움으로 보아야 합니까?
Бред. Какая связь между кэшем, где сохраняются данные о запрашиваемой позиции, и транзакциями?
prostotrader, у Вас там с логикой алгоритма наверное что-то не то. Хотел было покопаться в чужом коде, но влом... потом тип исполнения тут:
request.type_filling= ORDER_FILLING_IOC ; // разве так?
request.type_filling= ORDER_FILLING_RETURN ; // а может так?
И вообще в каких университетах так учат кодировать?
그리고 Karputov는 그것과 아무 관련이 없습니다. 제가 제 메시지를 썼을 때 그는 이미 자신의 메시지를 게시했지만 저는 그것을 보지 못했습니다.
처음에는 이렇게 질문을 했습니다.
개발자에게 오류가 있음을 보여주기 위해 로깅을 작성하는 방법은 무엇입니까?
왜, 나는 모든 것을 스스로했고 로그에서 분명히 볼 수 있습니다.
TRADE_TRANSACTION_HISTORY_ADD 도착 후 (TRADE_TRANSACTION_DEAL_ADD 전 )
Karputov Vladimir OnTradeTransaction() 단순화 - 내역에 거래 추가만 고려 - 주문 없음
글쎄, 모든 것이 잘 될 것입니다. 쓰기 시작하지 마십시오 (시간 낭비하지 마십시오).
실생활에서 실패가 시작되었기 때문에 그는 이 문제를 다루기 시작했습니다.
주말에 서버를 업데이트 한 것 같습니다. 밀리초가 나타났습니다. 아마도 더 많은 놀라움이있을 것입니다.
분명히 OnTradeTransaction 기능은 트랜잭션 로그와 독립적으로 작동합니다.
이 함수의 동작은 정당하다고 생각합니다. 작업의 흐름을 늦추고 모든 것이 로그에 기록되고 계산될 때까지 기다릴 필요가 없습니다.
귀하의 경우 OnTrade 를 사용하는 것이 더 나을 것입니다.
또는 최소한의 일시 중지로 주기적으로 트랜잭션이 기록에 나타나는지 확인하십시오.
주말에 서버를 업데이트 한 것 같습니다. 밀리초가 나타났습니다. 아마도 더 많은 놀라움이있을 것입니다.
분명히 OnTradeTransaction 기능은 트랜잭션 로그와 독립적으로 작동합니다.
이 함수의 동작은 정당하다고 생각합니다. 작업의 흐름을 늦추고 모든 것이 로그에 기록되고 계산될 때까지 기다릴 필요가 없습니다.
귀하의 경우 OnTrade 를 사용하는 것이 더 나을 것입니다.
또는 최소한의 일시 중지로 주기적으로 트랜잭션이 기록에 나타나는지 확인하십시오.
안녕, 세르게이!
예, 업데이트했지만 주말에는 업데이트하지 않았지만 저녁 세션 후 목요일에 업데이트했습니다(중개인에게 요청했습니다).
Trade() 이벤트를 사용할 수 없고 터미널의 데이터가 업데이트될 때까지 기다릴 수 없습니다.
Expert Advisor 는 오래 전에 작성되었으며 최근까지 "시계처럼" 작동했습니다.
Expert Advisor가 가능한 한 빨리 반환 거래를 하는 것이 중요합니다. 이것이 비동기 모드와 OnTradeTransaction()인 이유입니다.
이제 EA는 포지션을 열고 닫기 위해 (때로는) 중복 주문을 보냅니다.
당신: "나는 이 함수의 행동이 정당하다고 생각합니다. 작업의 흐름을 늦추고 모든 것이 로그에 기록되고 계산될 때까지 기다릴 필요가 없습니다."
어쨌든 TRADE_TRANSACTION_DEAL_ADD 도착 후 작성 및 계산됩니다 :)
사실은 TRADE_TRANSACTION_DEAL_ADD가 손실될 수 있고 TRADE_TRANSACTION_HISTORY_ADD가 나타날 수 있으며 터미널 에 오래된 위치 데이터가 포함될 수 있다는 것입니다. :(,
실제로 일어나고 있는 일입니다.
개발자가 그것에 대해 생각하지 않은 것이 이상합니다.
TRADE_TRANSACTION_HISTORY_ADD는 주문이 실행되거나 삭제(취소)된 경우에만 발생하므로,
주문 상태가 변경되면(따라서 위치가 변경될 수 있음), 단말은 위치 변경에 대한 정보를 수신해야 하며,
TRADE_TRANSACTION_DEAL_ADD 를 잃어도
개발자들이 말하는 것을 봅시다.
Karputov Vladimir OnTradeTransaction() 단순화 - 내역에 거래 추가만 고려 - 주문 없음
글쎄, 모든 것이 잘 될 것입니다. 쓰기 시작하지 마십시오 (시간 낭비하지 마십시오).
"선생님"과 "아는 사람"에게 장점에 대해 이야기하도록 요청,
표시를 하기 위해 기둥에서 다리를 들어올리는 것이 아닙니다.
당신을 돕고 싶어하는 사람들 앞에서 자랑하기 전에 일반적으로 질문을 공식화합니다. 그리고 여기서 OrderSend() 함수 에 의해 부분 마감이 수행되면 주문이 비동기적으로 전송됩니다. 무엇에 대해 묻는 것입니까?
감독자!
이것을 도움으로 보아야 합니까?
그리고 Karputov는 그것과 아무 관련이 없습니다. 제가 제 메시지를 썼을 때 그는 이미 자신의 메시지를 게시했지만 저는 그것을 보지 못했습니다.
처음에는 이렇게 질문을 했습니다.
개발자에게 오류가 있음을 보여주기 위해 로깅을 작성하는 방법은 무엇입니까?
왜, 나는 모든 것을 스스로했고 로그에서 분명히 볼 수 있습니다.
TRADE_TRANSACTION_HISTORY_ADD 도착 후 ( TRADE_TRANSACTION_DEAL_ADD 전 )
단말기는 위치 정보를 업데이트하지 않습니다.
prostotrader , Dmitry는 부분적(그리고 완전한) 클로저가 코드에서 비동기식 순서로 발생하지 않고 동기식으로 발생한다고 올바르게 알려줍니다. 따라서 프로그램은 서버의 응답을 기다리고 있습니다 ...
OnTradeTransaction 은 위치 자체가 변경되는 것보다 더 빨리 실행될 가능성이 높습니다.
그런 다음 여기:
위치 확인을 반복할 수 있습니다. 도움이 될지도....
그런 것:
정확한 알고리즘( 프로그램 에서 필요한 것)을 모르면 구현의 정확성을 평가하기 어렵습니다...
비동기 모드로 완전히 변경됨
하지만 변한 건 없다
당연하지만 실험의 '순수함을 위해'…
지하실의 전체 통나무
1. > 정확한 알고리즘( 프로그램 에서 필요한 것)을 모르면 구현의 정확성을 평가하기 어렵습니다...
프로그램이 하는 일을 이해하는 것은 어렵지 않다고 생각했는데, 글쎄요, 명확하지 않으면
전문가는 FORTS 시장에서 2계약 규모의 포지션을 개설하고, 포지션이 열려 있으면 1계약 규모로 부분 청산되며,
그런 다음 위치가 완전히 닫힙니다. 그래서 카운터 tr_cnt<50까지 여러 번
2. PositionSelect() 를 백만 번이라도 "비틀기"할 수 있습니다. 아무 것도 변경되지 않습니다.
루프에 있는 동안 TRADE_TRANSACTION_DEAL_ADD 이벤트는 도착하지 않습니다. 즉, 터미널이 업데이트되지 않습니다.
위치 정보
...
위에서 말했듯이 주문에 도취하지 마십시오. 거래를보십시오. 다음은 포지션 거래량이 변경되는 시기와 거래 유형 을 보여주는 짧은 코드입니다.
다음은 부분 폐쇄가 있는 지문입니다.
무역 거래 유형 이 TRADE_TRANSACTION_DEAL_ADD인 이벤트가 통과하자마자 터미널의 위치 데이터가 업데이트됨을 분명히 알 수 있습니다.