다음은 트리거된 테이크프로핏에 의해 청산된 포지션의 로그 항목입니다. OnTradeTransaction( const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result)에서 이를 어떻게 감지할 수 있나요?
모든 거래를 매번 반복하지 않고 찾기 위해 const MqlTradeResult& 결과의 반환 코드(result.retcode)가 설정되지 않았거나(0은 옵션 없음, TRADE_RETCODE_DONE = 10009) ID 중 하나(딜 티켓, 주문 티켓, 요청 ID )가 설정되어 있지 않습니다.
데니스, 기사 감사합니다! 흥미롭게 읽었지만 아직 읽은 내용을 완전히 이해하지 못했습니다. 또한 TradeProcessor Expert Advisor를 다운로드하여 현재 오픈 포지션이 있는 제 단말기에서 실행했습니다. 출력물을 보니까 바로 몇 가지 질문이 떠서 직접 답을 찾고 싶었습니다. 글쎄, 내가 할 수 없다면, 나는 당신을 귀찮게해야 할 것입니다. ))
그리고 거래가 없습니다. 대기 주문과 그 처리는 거래를 수반하지 않습니다. 거래 티켓 = 0, 유형 = 0, 여기서 0은 열거형 ENUM_DEAL_TYPE의 DEAL_TYPE_BUY에 해당 합니다. 즉, MqlTradeTransaction 트랜잭션구조에서 일부 필드는 채워지고 일부 필드는 채워지지 않습니다. 채워지지 않은 필드는 일반적으로 null이 됩니다.
거래 처리와 관련된 거래 트랜잭션의 경우 MqlTradeTransaction 구조체에서 다음 필드가 채워집니다(TRADE_TRANSACTION_DEAL_ADD, TRADE_TRANSACTION_DEAL_UPDATE 및 TRADE_TRANSACTION_DEAL_DELETE):
Структура торговой транзакции - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
그리고 거래가 없습니다. 지정가 주문은 거래가 수반되지 않습니다. 거래 티켓 = 0, 유형 = 0, 여기서 0은 열거형 ENUM_DEAL_TYPE의 DEAL_TYPE_BUY에 해당합니다. 즉, MqlTradeTransaction 트랜잭션구조에서 일부 필드는 채워지고 일부 필드는 채워지지 않습니다. 채워지지 않은 필드는 일반적으로 0이 됩니다.
다음은 트리거된 테이크프로핏에 의해 청산된 포지션의 로그 항목입니다. OnTradeTransaction( const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result)에서 이를 어떻게 감지할 수 있나요?
모든 거래를 매번 반복하지 않고 찾기 위해 const MqlTradeResult& 결과의 반환 코드(result.retcode)가 설정되지 않았거나(0은 옵션 없음, TRADE_RETCODE_DONE = 10009) ID 중 하나(딜 티켓, 주문 티켓, 요청 ID )가 설정되어 있지 않습니다.
376번 줄의 Print에서 관련(?) 플래그를 인쇄합니다:
그리고 이것이 제가 일지에서 읽을 수 있는 내용입니다:
10:04:40 take profit triggered #2 sell 0.01 EURUSD 1.00319 sl: 1.00816 tp: 1.00171 [#3 buy 0.01 EURUSD at 1.00171]
10:04:40 deal #3 buy 0.01 EURUSD at 1.00171 done (based on order #3)
10:04:40 deal performed [#3 buy 0.01 EURUSD at 1.00171]
10:04:40 order performed buy 0.01 at 1.00171 [#3 buy 0.01 EURUSD at 1.00171]
10:04:40 373 New trade operation dTime1970.01.01 09:03:41
10:04:40 376 0 prc:trans.price=1.00171 tckt: 2 Tr.Type: TRADE_TRANSACTION_DEAL_ADD Tr.OrdType: ORDER_TYPE_BUY Tr.OrdFill: ORDER_STATE_STARTED Tr.tckt:3 2 0 retCode:0 0 0 0 0
10:04:40 489 MqlTradeTransaction: TRADE_TRANSACTION_DEAL_ADD deal #3 DEAL_TYPE_BUY EURUSD 0.01 lot
10:04:40 376 1 prc:trans.price=1.00171 tckt: 2 Tr.Type: TRADE_TRANSACTION_ORDER_DELETE Tr.OrdType: ORDER_TYPE_BUY Tr.OrdFill: ORDER_STATE_FILLED Tr.tckt:3 2 0 retCode:0 0 0 0 0
10:04:40 383 1 prc:trans.price=1.00171 tckt: 2 res.Ord:0 Tr.Type: TRADE_TRANSACTION_ORDER_DELETE Tr.OrdFill: ORDER_STATE_FILLED Tr.OrdType: ORDER_TYPE_BUY Tr.tckt:3 2 0 Res::0 0 0 0 0
10:04:40 408 PosExists #3 2 mag:0 ORDER_STATE_FILLED ORDER_TYPE_BUY
10:04:40 376 2 prc:trans.price=1.00171 tckt: 2 Tr.Type: TRADE_TRANSACTION_HISTORY_ADD Tr.OrdType: ORDER_TYPE_BUY Tr.OrdFill: ORDER_STATE_FILLED Tr.tckt:3 2 0 retCode:0 0 0 0 0
10:04:40 408 PosExists #3 2 mag:0 ORDER_STATE_FILLED ORDER_TYPE_BUY
2022.09.26 14:08:33.755 disconnected
"이익실현 트리거 #2 매도 0.01 EURUSD 1.00319 sl: 1.00816 tp: 1.00171 [#3 1.00171에 0.01 EURUSD 매수]"라고 멋지게 적혀 있습니다.
그렇다면 도대체 왜 TRADE_TRANSACTION_TRIGGERED_PT, TRADE_TRANSACTION_TRIGGERED_SL과 같은 플래그가 없는 걸까요?
그리고 요청의 반환 코드는 항상 설정되지 않나요?
데니스, 기사 감사합니다! 흥미롭게 읽었지만 아직 읽은 내용을 완전히 이해하지 못했습니다. 또한 TradeProcessor Expert Advisor를 다운로드하여 현재 오픈 포지션이 있는 제 단말기에서 실행했습니다. 출력물을 보니까 바로 몇 가지 질문이 떠서 직접 답을 찾고 싶었습니다. 글쎄, 내가 할 수 없다면, 나는 당신을 귀찮게해야 할 것입니다. ))
안부, 블라디미르.
안부, 블라디미르.
의견 주셔서 감사합니다. 천만에요, 브룩린 씨! ))
의견 주셔서 감사합니다. 천만에요, 브룩린 씨! ))
데니스, 미안하지만 당신의 도움 없이는 내 마음이 "폭발"합니다. 다음은 EA 패스 중 하나의 결과입니다 (그건 그렇고, 매우 멋진 EA !!!):
내가 이해하지 못하는 것:
ENUM_DEAL_TYPE
식별자
설명
DEAL_TYPE_BUY
구매
질문 - 지정가 주문 SELL_STOP을 수정할 때 거래 유형이 BUY로 결정되는 방법?????))
안녕하세요, 블라디미르.
그리고 거래가 없습니다. 대기 주문과 그 처리는 거래를 수반하지 않습니다. 거래 티켓 = 0, 유형 = 0, 여기서 0은 열거형 ENUM_DEAL_TYPE의 DEAL_TYPE_BUY에 해당 합니다. 즉, MqlTradeTransaction 트랜잭션 구조에서 일부 필드는 채워지고 일부 필드는 채워지지 않습니다. 채워지지 않은 필드는 일반적으로 null이 됩니다.
자세한 내용은 지정가 주문에 대한 문서를 참조하세요.
이 유형의 거래에는 거래 필드가 채워집니다:
TRADE_TRANSACTION_DEAL_*
거래 처리와 관련된 거래 트랜잭션의 경우 MqlTradeTransaction 구조체에서 다음 필드가 채워집니다(TRADE_TRANSACTION_DEAL_ADD, TRADE_TRANSACTION_DEAL_UPDATE 및 TRADE_TRANSACTION_DEAL_DELETE):
"거래" 유형에 속하는 거래는 TRADE_TRANSACTION_DEAL_ADD, TRADE_TRANSACTION_DEAL_UPDATE, TRADE_TRANSACTION_DEAL_DELETE의 3가지 유형만 있습니다.
그리고 거래가 없습니다. 지정가 주문은 거래가 수반되지 않습니다. 거래 티켓 = 0, 유형 = 0, 여기서 0은 열거형 ENUM_DEAL_TYPE의 DEAL_TYPE_BUY에 해당합니다. 즉, MqlTradeTransaction 트랜잭션 구조에서 일부 필드는 채워지고 일부 필드는 채워지지 않습니다. 채워지지 않은 필드는 일반적으로 0이 됩니다.
자세한 내용은 지정가 주문 관련 문서를 참조하세요.
아, 그거예요!!! 머리가 깨졌어요! ))
감사합니다!!!
안부, 블라디미르.