경고: 전문가가 보낸 MT4 터미널 복제 명령 - 페이지 6

 

사이에 차이가 있다

 bool Buy_Ticket = OrderSend (........)

그리고 당신이하는 일

bool Buy_Ticket = Ordersend > 0 ;   //SIMPLIFIED CODE FOR EASIER READING

첫 번째 주문이 실패하면 -1 값이 반환되지만 bool은 이것을 TRUE로 해석합니다.

두 번째에서는 조건(Ordersend>0)을 사용하여 부울에 true 또는 false를 할당합니다.

 
GumRai :


사이에 차이가 있다

그리고 당신이하는 일

첫 번째 주문이 실패하면 -1 값이 반환되지만 bool은 이것을 TRUE로 해석합니다.

두 번째에서는 조건(Ordersend>0)을 사용하여 부울에 true 또는 false를 할당합니다.



사실인가요? 지금은 데모 계정 (실시간 거래)에서 테스트할 수 없지만 잘못된 손절매 = 장기 거래에 대한 (시장 가격) 요청으로 의도적으로 OrderSend()를 방해하는 백테스트에 대해 몇 가지 빠른 확인을 했습니다. 결과는 OrderSend()가 예상대로 "-1"을 반환하고 내 bool var Buy_Ticket도 false를 반환합니다.


** 편집하다 **

내 조건 "> 0"을 OrderSend() 뒤에 놓쳤습니까? 내 원래 코드는 다음을 보여줍니다.

 bool Buy_Ticket = OrderSend (........) > 0 ;
 
BigFisherman :



사실인가요? 지금은 데모 계정(실시간 거래)에서 테스트할 수 없지만 잘못된 손절매 = 장기 거래에 대한 (시장 가격) 요청으로 의도적으로 OrderSend()를 방해하는 백테스트에 대해 몇 가지 빠른 확인을 했습니다. 결과는 OrderSend()가 예상대로 "-1"을 반환하고 내 bool var Buy_Ticket도 false를 반환합니다.


** 편집하다 **

내 조건 "> 0"을 OrderSend() 뒤에 놓쳤습니까? 내 원래 코드는 다음을 보여줍니다.


죄송합니다. 예, >0을 놓쳤습니다.

나는 그것이 그것에 대해 가는 방법이 너무 이상해서 나는 그것을 눈치채지 못했다고 생각합니다.

 

@ BigFisherman 아래 코드 확인

   bool Buy_Ticket;
   int TicketNo = 123456789 ;
   Buy_Ticket = TicketNo > 0 ;
   Alert (Buy_Ticket);

여기를 참조하십시오

할당 연산자는 식에서 여러 번 사용할 수 있습니다. 이 경우 표현식 처리는 왼쪽에서 오른쪽으로 수행됩니다.

y=x=3;

먼저 변수 x에 값 3이 할당되고 y 변수에 x 값, 즉 3이 할당됩니다.

 
GumRai :


죄송합니다. 예, >0을 놓쳤습니다.

나는 그것이 그것에 대해 가는 방법이 너무 이상해서 나는 그것을 눈치채지 못했다고 생각합니다.


괜찮아요.

그런 식으로 코딩하는 것은 좋은 습관이 아니라는 데 동의합니다. 나는 MQL 학습의 초기 단계에서 그 부분을 코딩했지만, 그동안 그것은 나에게 정확해 보였기 때문에 이 중복 거래 문제가 발생할 때까지 그대로 두었습니다. 그러나 분명히, 지금은 혼란스러워 보이지만 내 원래 코드가 "처럼 보이지만" 이 스레드의 원래 주제인 "Duplicate trades.."로 돌아갑니다. 이것은 mt4의 심각하고 매우 환영받지 못하는 "희귀한" 버그일 수 있습니다. 불행히도 희귀한 모양으로 인해 재현할 수 없습니다(500개 이상의 거래 중 1개).

누군가의 정보를 위해, 내가 EA를 코딩한 방법으로 인해(pg5의 첫 번째 게시물 참조), SL & TP는 성공적인 OrderSend()를 감지한 후에만 할당되었습니다(IMHO는 지금까지 다소 안전합니다). 그리고 이전의 중복 거래에서 일어난 일은 알 수 없는 이유로 SL & TP를 설정하지 않았다는 것입니다. OrderSend()가 "-1"을 반환하지만 어쨌든 거래를 열었습니다. 또는 "그것"이 하나의 OrderSend()에서 2개의 동시 거래를 열었습니다. ** 그냥 제 추측입니다 **. 운 좋게도 그럴 때 나는 내 PC 바로 앞에 있었기 때문에 수동으로 닫을 수 있었습니다. 내가 휴가를 떠나면 어떻게 될지 상상해보십시오.

 
qjol :

@ BigFisherman 아래 코드 확인

   bool Buy_Ticket;
   int TicketNo = 123456789 ;
   Buy_Ticket = TicketNo > 0 ;
   Alert (Buy_Ticket);


Buy_Ticket은 예상대로 true를 반환합니다. 당신은 무엇을 말하려고하는?

 

말하려는게 아니라 말하는거야!

이렇게 사용하면

 bool Buy_Ticket = OrderSend (........) > 0 ;

물론 OrderSend()가 실행되면 true가 됩니다.

OrderSend의 결과가 > 0인지 먼저 검사 하기 때문입니다.

다음으로 전달되었습니다.

Buy_Ticket

그러나 여전히 그것을 올바르게 처리하는 방법은 아닙니다

 
qjol :

말하려는게 아니라 말하는거야!

이렇게 사용하면

물론 OrderSend()가 실행되면 true가 됩니다.

OrderSend의 결과가 > 0인지 먼저 검사 하기 때문입니다.

다음으로 전달되었습니다.

그러나 여전히 그것을 올바르게 처리하는 방법은 아닙니다



이제 mql4에서 필터링할 게시물을 알고 있습니다. 어쨌든 입력해 주셔서 감사합니다.
 
y=x= 3 ;
그렇게 하려고 했지만 MetaEditor는 컴파일을 시도할 때마다 항상 저를 멈추게 합니다.
 
BigFisherman :


이제 mql4에서 필터링할 게시물을 알고 있습니다.

참고: mql5의 내 사용자 이름은 동일합니다.