손절매로 인해 주문이 마감되었는지 확인하는 방법

 

저는 EA를 작성하고 있으며 MT4용으로 작성된 EA를 수정하고 있습니다. OrderSend를 사용하여 주문을 엽니다.

단순히 내가 이해해야 하는 경우(아마도 기록에서), 전송된 주문(그런데 .... 주문, 거래 또는 위치를 확인해야 함)이 StopLoss에 도달했기 때문에 마감되었습니다.
포럼에서 확인했지만 필요한 것을 찾지 못했습니다....

ENUM_ORDER_PROPERTY_DOUBLE 매개변수와 함께 HistoryOrderGetDouble 사용,

ORDER_PRICE_CURRENT

주문 기호의 현재 가격만 제공

ORDER_SL과 비교할 수 없습니다. ORDER_PRICE_CURRENT 는 현재 심볼 가격일 뿐 주문 마감 가격이 아니라고 가정합니다 .

지원해 주셔서 감사합니다.

편집하다 :

이 주제는 빌드 1640 이후 MT5가 제공하는 새로운 가능성 으로 인해 대부분 사용되지 않습니다.

몇 가지 예는 주제의 마지막 게시물을 참조하십시오.

 

이 주제를 참조하십시오. 아마도 약간 혼란스러울 수 있지만 아이디어를 찾을 수 있습니다.

MT5 거래 시스템은 MT4와 많이 다르기 때문에 생각을 바꿔야 합니다.

Detect stop trigger in OnTradeTransaction backtest
Detect stop trigger in OnTradeTransaction backtest
  • www.mql5.com
Unfortunately, i get only DEAL_ENTRY_IN provided by MqlTradeTransaction passed to OnTradeTransaction. - - Category: technical indicators
 
frankge973 :

저는 EA를 작성하고 있으며 MT4용으로 작성된 EA를 수정하고 있습니다. OrderSend를 사용하여 주문을 엽니다.

단순히 내가 이해해야 하는 경우(아마도 기록에서), 전송된 주문(그런데 .... 주문, 거래 또는 위치를 확인해야 함)이 StopLoss에 도달했기 때문에 마감되었습니다.
포럼에서 확인했지만 필요한 것을 찾지 못했습니다....

ENUM_ORDER_PROPERTY_DOUBLE 매개변수와 함께 HistoryOrderGetDouble 사용,

ORDER_PRICE_CURRENT

주문 기호의 현재 가격만 제공

ORDER_SL과 비교할 수 없습니다. ORDER_PRICE_CURRENT 는 현재 심볼 가격일 뿐 주문 마감 가격이 아니라고 가정합니다 .

지원해 주셔서 감사합니다.

이거야?

 //-------------------------------- ES CIERRE POR SL ----------------------------------------------
bool esCierreSL( int ind, int modoInd= SELECT_BY_TICKET, int modoHist= MODE_TRADES)
{
     bool resp= OrderSelect (ind, modoInd, modoHist)? ( StringFind (OrderComment(), "[sl]" , 0 )>- 1 ): false ;
     return (resp);
}
 
Jose Miguel Soriano :

이거야?

질문은 mql5에 관한 것이고 귀하의 코드는 mql4입니다.

주문 주석은 신뢰할 수 있는 코딩 방법이 아닙니다.

 
Alain Verleyen :

질문은 mql5에 관한 것이고 귀하의 코드는 mql4입니다.

주문 주석은 신뢰할 수 있는 코딩 방법이 아닙니다.

네크로에게 미안하지만 이것은 내 의견으로는 꽤 흥미 롭습니다.

저는 mql4에서 mql5로 전환을 하고 있으며 거래 및 기록 시스템 변경이 상당히 어렵다는 것을 알았습니다.

기록 장부에 대한 거래가 손절매, 이익 실현 또는 기타 목적으로 마감되었는지 확인하려면:

  • MT4에서는 OrderStopLoss(), OrderTakeProfit() 및 OrderClosePrice()를 비교하거나 단순히 OrderComment()를 확인할 수 있습니다.
  • MT5에서 가능한 유일한 방법은 거래의 주석을 확인하는 것 같습니다. HistoryDealGetString(tk, DEAL_COMMENT)
손절매 또는 이익 실현을 위해 주문이 마감될 때 MT4와 MT5 모두 의견에 [SL 가격] 또는 [TP 가격] 을 작성합니다(다른 방식으로.. 하지만 여전히).

나는 기사를 읽었다: https://www.mql5.com/en/forum/11996

흥미롭지만 올바르게 이해했다면 이벤트 처리를 기반으로 거래 변경 사항을 즉석에서 식별하는 것을 목표로합니다.

따라서 (차트에서 실행되는 전문 고문과 같은) 청취하는 프로그램이 있어야 합니다. 그렇지 않으면 아무 것도 감지되지 않습니다.

내 생각에 거래 마감 이유 감지는 기록 거래 장부에서 수행되어야 합니다. 왜냐하면 그것이 어딘가에 기록되고 공중에서 포착되지 않기 때문에 일어난 일을 아는 가장 안전한 방법이기 때문입니다(또는 그래야만 합니다).

내 분석이 잘못된 것인가? 어떻게 생각하나요?

Detect stop trigger in OnTradeTransaction backtest
Detect stop trigger in OnTradeTransaction backtest
  • www.mql5.com
Unfortunately, i get only DEAL_ENTRY_IN provided by MqlTradeTransaction passed to OnTradeTransaction.
 
Marco : 손절매 또는 이익 실현을 위해 주문이 마감될 때 MT4와 MT5 모두 댓글에 [SL 가격] 또는 [TP 가격] 을 작성합니다(다른 방식으로.. 하지만 여전히).
아니오 , 그들은하지 않습니다. 그것은 당신의 중개인입니다.
좋은 생각은 아니지만 중개인은 완전한 교체 를 포함하여 의견을 변경할 수 있습니다.
 
whroeder1 :
아니오 , 그들은하지 않습니다. 그것은 당신의 중개인입니다.

좋아, MT4 및 MT5 중개인은 모두 주석에 해당 문자열을 넣었습니다. 최소한 내가 테스트한 몇 개.

그리고 나는 의견이 브로커의 손에 의해 변경될 수 있기 때문에 이것은 좋은 생각이 아니라는 데 동의합니다.

그러나 나는 무역 역사 책에서 다른 흔적을 찾을 수 없기 때문에 이것이 어떻게 다르게 행해질 수 있는지 보지 못했습니다.

이 목표를 달성하는 더 좋은 방법이 있습니까?

 

2년 전에 서비스 데스크에 연락했습니다 (MT4 관련).

...It is not clear to me whether all brokers incorporate the letters sp or tp in the order comment when a trade hits the StopLoss or TakeProfit. Is this at the brokers' discretion or is it automatically done with every broker?

그리고 그들은 대답했다

모든 브로커와 함께 자동으로 수행됩니다. 또한 브로커는 이 값 자체를 변경할 수 있습니다.

따라서 브로커가 아닌 시스템에서 수행됩니다. 브로커가 변경할 수 있다면 여전히 도움이 되지 않습니다.

참고로 저는 브로커가 주문 댓글을 변경한 경우를 본 적이 없습니다.

일반적으로 내 코드에서는 거래가 손익으로 마감되었는지 여부를 아는 것이 더 중요합니다. 후행 정지를 사용하면 거래가 SL에 도달할 수 있지만 여전히 이익을 얻을 수 있습니다.

 
Keith Watford :

2년 전에 서비스 데스크에 연락했습니다 (MT4 관련).

그리고 그들은 대답했다

따라서 브로커가 아닌 시스템에서 수행됩니다. 브로커가 변경할 수 있다면 여전히 도움이 되지 않습니다.

참고로 저는 브로커가 주문 댓글을 변경한 경우를 본 적이 없습니다.

일반적으로 내 코드에서는 거래가 손익으로 마감되었는지 여부를 아는 것이 더 중요합니다. 후행 정지를 사용하면 거래가 SL에 도달할 수 있지만 여전히 이익을 얻을 수 있습니다.

더 나은 해결 방법을 찾을 수 없기 때문에 Keith에게 감사합니다.

 
honest_knave :
두 포스터 모두 MQL4를 MQL5로 변환하고 있다고 생각합니다.

어쨌든 종가 를 손절매 가격과 비교하면 됩니다.

참고: 실제(특히 ECN) 계정에서는 트리거 가격이 미리 설정된 손절매 가격 사이에 차이가 있을 수 있으므로 "<=" 또는 ">="를 사용하세요.

 
Xiangdong Guo :

어쨌든 종가 를 손절매 가격과 비교하면 됩니다.

참고: 실제(특히 ECN) 계정에서는 트리거 가격이 미리 설정된 손절매 가격 사이에 차이가 있을 수 있으므로 "<=" 또는 ">="를 사용하세요.

종가를 손절매 가격과 비교할 수 없습니다. 미끄러짐은 정지 손실보다 높거나 낮을 수 있음을 의미합니다.

따라서 "<=" 또는 ">="는 유용하지 않습니다.