MT5와 속도 - 페이지 31

 
fxsaber :

현재 포지션과 주문이 없는 계정에서 이 Expert Advisor를 실행하는 경우.

그런 다음 Expert Advisor가 오픈한 포지션을 손으로 닫으면 헤지에서 3개의 오픈 포지션 이 나타납니다(트리플 볼륨의 네팅 포지션에서).


이것이 올바른 행동입니까? 아마도 터미널이 어떻게 작동하는지 오해하고 있습니다. 그럼 설명 부탁드립니다.

먼저 도움말을 읽어야 합니다.

https://www.mql5.com/ru/docs/event_handlers/ontrade

메모:

Обработчик OnTrade() вызывается после соответствующих вызовов OnTradeTransaction() . В общем случае нет точного соотношения по количеству вызовов OnTrade() и OnTradeTransaction(). Один вызов OnTrade() соответствует одному или нескольким вызовам OnTradeTransaction.

간단히 말해서, OnTrade() 핸들러는 각 개별 거래에 대해 호출될 수 있습니다. 포지션을 청산한 결과 여러 개의 개별 거래가 발생할 수 있습니다.

이것은 확인하기 쉽습니다. 예제의 OnTrade()에 Print()를 추가하기만 하면 됩니다.

또한 이전 테스트에 따르면 OrderSendAsync()를 통해 주문 티켓을 찾을 것으로 기대한다는 점에 주의를 기울이고 싶습니다.

Документация по MQL5: Обработка событий / OnTrade
Документация по MQL5: Обработка событий / OnTrade
  • www.mql5.com
//|                                               OnTrade_Sample.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Anton :

또한 이전 테스트에 따르면 OrderSendAsync()를 통해 주문 티켓을 찾을 것으로 기대한다는 점에 주의를 기울이고 싶습니다.

어디에도 없는 것 같습니다. OnTrade 의 HistorySelect 시차만 표시됩니다.

 
fxsaber :

어디에도 없는 것 같습니다. OnTrade의 HistorySelect 시차만 표시됩니다.

 if ( PositionSelectByTicket (Result.order)) // Если позиция открыта - закрываем.
 
Anton :

먼저 도움말을 읽어야 합니다.

https://www.mql5.com/ru/docs/event_handlers/ontrade

메모:

Обработчик OnTrade() вызывается после соответствующих вызовов OnTradeTransaction() . В общем случае нет точного соотношения по количеству вызовов OnTrade() и OnTradeTransaction(). Один вызов OnTrade() соответствует одному или нескольким вызовам OnTradeTransaction.

간단히 말해서, OnTrade() 핸들러는 각 개별 거래에 대해 호출될 수 있습니다. 포지션을 청산한 결과 여러 개의 개별 거래가 발생할 수 있습니다.

이것은 확인하기 쉽습니다. 예제의 OnTrade()에 Print()를 추가하기만 하면 됩니다.

물론 출력도 해봤습니다. 문제는 OnTrade에 대한 호출 수가 아니라 열린 포지션의 수였습니다.

첫 번째 OnTrade 이후 시장 주문이 이루어집니다. 다음 OnTrade에서 이 시장 주문은 조건에 따라 추가 주문을 허용하지 않아야 합니다. 그러나 후속 OnTrades에서도 OrdersTotal() + PositionsTotal()의 합은 0입니다. 맞나요?

 
Anton :

덕분에 복사붙여넣기를 못 봤습니다.

 
fxsaber :

어디에도 없는 것 같습니다. OnTrade의 HistorySelect 시차만 표시됩니다.

주문 선택 캐싱이 오늘 개선되었으며 몇 시간 내에 베타 버전이 제공될 예정입니다.

 
Renat Fatkhullin :

주문 선택 캐싱이 오늘 개선되었으며 몇 시간 내에 베타 버전이 제공될 예정입니다.

HistorySelect를 의미합니까? 자동 링크가 OrderSelect로 연결되지 않을 뿐입니다.

 
Nelson Wanyama :

mt5에 '커미션' 탭이 없는 이유를 아십니까? 거래가 종료된 후에만 나타납니다.

mt5에 "커미션" 탭이 없는 이유를 아십니까? 거래가 완료된 후에만 나타납니다.


 
fxsaber :

물론 출력도 해봤습니다. 문제는 OnTrade에 대한 호출 수가 아니라 열린 포지션의 수였습니다.

첫 번째 OnTrade 이후 시장 주문이 이루어집니다. 다음 OnTrade에서 이 시장 주문은 조건에 따라 추가 주문을 허용하지 않아야 합니다. 그러나 후속 OnTrades에서도 OrdersTotal() + PositionsTotal()의 합은 0입니다. 맞나요?

모든 것이 도움말에 있습니다: https://www.mql5.com/en/docs/trading/ordersendasync

Успешное выполнение означает только факт отсылки, но не даёт никакой гарантии, что запрос дошел до торгового сервера и был принят для обработки.  Торговый сервер при обработке полученного запроса отправляет клиентскому терминалу ответное сообщение об изменении текущего состояния позиций, ордеров и сделок, которое приводит к генерации события Trade .
따라서 OrdersTotal()은 확실히 null일 수 있습니다. 뿐만 아니라 PositionsTotal(). 그것은 모두 거래, 유형 및 내용에 따라 다릅니다.
Документация по MQL5: Торговые функции / OrderSendAsync
Документация по MQL5: Торговые функции / OrderSendAsync
  • www.mql5.com
"и режим вывода сообщений в журнал "Эксперты". По умолчанию выводятся все детали.\r\n" //| Expert initialization function                                   | //| Expert deinitialization function                                 | //| TradeTransaction function                                        |...
 
Anton :

모든 것이 도움말에 있습니다: https://www.mql5.com/en/docs/trading/ordersendasync

Успешное выполнение означает только факт отсылки, но не даёт никакой гарантии, что запрос дошел до торгового сервера и был принят для обработки.
따라서 OrdersTotal()은 확실히 null일 수 있습니다. 뿐만 아니라 PositionsTotal().

https://www.mql5.com/ru/docs/constants/tradingconstants/orderproperties#enum_order_state

각 주문에는 해당 상태를 설명하는 상태가 있습니다. 정보를 보려면 기능을 사용하십시오.   OrderGetInteger()   또는   HistoryOrderGetInteger()   ORDER_STATE 수정자와 함께. 유효한 값은 ENUM_ORDER_STATE 열거형에 저장됩니다.

ENUM_ORDER_STATE

식별자

설명

ORDER_STATE_STARTED

주문이 정확한지 확인했지만 브로커가 아직 수락하지 않았습니다.



성공적인 OrderSendAsync 후에 시작됨 상태가 발생하지 않습니까?