주문 수정 시 실수 #1

 

이 빌어먹을 오류를 제거하는 방법? 그녀는 이미 나를 얻었다. 함수의 각 입력 매개변수를 확인합니다. 현재 나는 다음과 같이 가지고 있습니다.

 if (OrderOpenPrice() != ND (fd_MurreyLevelsValue[ 11 ]))
   New_OOP = ND (fd_MurreyLevelsValue[ 11 ]);
else New_OOP = OrderOpenPrice();
if (OrderStopLoss() != ND (fd_MurreyLevelsValue[ 12 ]))
   New_SL = ND (fd_MurreyLevelsValue[ 12 ]);
else New_SL = OrderStopLoss();
if (OrderTakeProfit() != ND (fd_MurreyLevelsValue[ 2 ]))
   New_TP = ND (fd_MurreyLevelsValue[ 2 ]);
else New_TP = OrderTakeProfit();

저것들. 매개변수가 변경되지 않으면 변경할 필요가 없습니다. 해본적은 없지만...

그런 다음 내 매개변수가 다음과 같이 주문 수정 방법으로 전달됩니다.

 if (!fOrderModify (Ticket,  New_OOP, New_SL, New_TP))
{
   if ( _LastError != 0 )
     WriteLog ( StringConcatenate ( __FUNCTION__ , ". В строке " , __LINE__ , " " , CErrs.ErrorToString ( _LastError )),
                     CLogs.GetNeedLogs(), CLogs.GetPrintUP(), CLogs.GetCommentUP());
}

Hv 로그 출력:

modify # 2 sell limit 0.10 EURUSD at 1.34048 sl: 1.34125 tp: 1.33362 ok
OrderModify error 1

수정 등의 로그를 알려주는 것으로 밝혀졌습니다. 확인 후 ... 오류가 발생했습니다. 변경된 설정이 없습니다.

주문이 보류 중입니다. 그래서 당신은 시작 가격 을 변경할 수 있습니다. 그리고 이것은 내가 이해하는 바와 같이 문서와 모순되지 않습니다.

누가 비슷한 문제에 직면했습니까? 결정하는 방법?

 
hoz :

이 빌어먹을 오류를 제거하는 방법? 그녀는 이미 나를 얻었다. 함수의 각 입력 매개변수를 확인합니다. 현재 나는 다음과 같이 가지고 있습니다.

저것들. 매개변수가 변경되지 않으면 변경할 필요가 없습니다. 해본적은 없지만...

그런 다음 내 매개변수가 다음과 같이 주문 수정 방법으로 전달됩니다.

Hv 로그 출력:

수정 등의 로그를 알려주는 것으로 밝혀졌습니다. 확인 후 ... 오류가 발생했습니다. 설정이 변경되지 않았습니다.

주문이 보류 중입니다. 그래서 당신은 시작 가격을 변경할 수 있습니다. 그리고 이것은 내가 이해하는 바와 같이 문서와 모순되지 않습니다.

누가 비슷한 것에 직면 했습니까? 결정하는 방법?

많은 기능 뒤에 있는 오류 코드가 이미 재정의되었다는 사실을 잊고 오류 코드를 잘못 처리하고 있습니다.

따라서 오류가 발생하면 해당 코드를 로컬 변수 에 저장해야 하며 이후에 많은 호출을 수행한 후 로컬 변수에서 인쇄해야 합니다.

 
Renat :

많은 기능 이후의 오류 코드가 이미 재정의되었다는 사실을 잊고 오류 코드를 잘못 처리하고 있습니다.

따라서 오류가 발생하면 해당 코드를 로컬 변수에 저장해야 하며 이후에 많은 호출을 수행한 후 로컬 변수에서 인쇄해야 합니다.

또한 오류 배열을 얻을 수 있습니까? 결국 문서에는 _LastError 변수가 마지막 오류 번호를 저장한다고 흑백으로 나와 있습니다. 그리고 리셋은 ResetLastError() 함수에 의해 수행됩니다. _LastError에 대한 호출 사이에 더 이상 오류가 없으면 _LastError는 마지막 오류 값을 저장합니다 . 나는 도중에 더 이상 오류가 없었습니다. 그리고 그것은 문제가 아닙니다.

게다가 각 방법의 오류에 대한 변수를 설정하고 Expert Advisors에서 이러한 변수를 인쇄하는 것은 그다지 논리적이지 않습니다.

결국 오류를 수집하는 변수가 있다면 왜 오류를 생성합니까?

 

사악한 라이브 , 어떻게 수표가 없습니까? 나는 위에 썼습니다 :

 if (OrderOpenPrice() != ND (fd_MurreyLevelsValue[ 11 ]))    \\ Если текущая цена не равна новой.. из массива, то..
   New_OOP = ND (fd_MurreyLevelsValue[ 11 ]);               \\.. новая цена равна этому новому значению цены из массива( расчитанного ).
else New_OOP = OrderOpenPrice();                          \\ Иначе новая цена равно текущей цене выбранного ордера. Т.е. не изменяется.
if (OrderStopLoss() != ND (fd_MurreyLevelsValue[ 12 ]))
   New_SL = ND (fd_MurreyLevelsValue[ 12 ]);
else New_SL = OrderStopLoss();
if (OrderTakeProfit() != ND (fd_MurreyLevelsValue[ 2 ]))
   New_TP = ND (fd_MurreyLevelsValue[ 2 ]);
else New_TP = OrderTakeProfit();

첫 댓글도 달았습니다. 모든 것이 기본이지만.

또 어떻게 확인할 수 있나요?

 
나는 그것이 같지 않고 당신이 기대하는 곳으로 향하는지 다시 한 번 확인합니다!
 
evillive :
그게 내가 떠난 이유라는 걸 깨달았어
무례하게() 해주세요! ;)
 
borilunad :
나는 그것이 같지 않고 당신이 기대하는 곳으로 향하는지 다시 한 번 확인합니다!

보리스 , 무슨 말이야? 결국, 나는 가격이 그렇지 않다면 .. 그러면 ... 그렇지 않으면 ... 현재 ... 다른 것이 무엇입니까? 20번은 확인이 가능합니다... :) 역시 이건 말이 안 됩니다. 저는 이틀 동안 이 코드를 작업했습니다. 이전에는 어떻게 든 이와 같은 잼을 만나지 못했습니다. 이제 직면. 나는 이 모든 방법을 이미 여러 번 작성하고 테스트했습니다. 여기서 문제가 생겼습니다.

사실 저는 다른 전술을 조금 더 좋아합니다. 그러나 마지막 올빼미를 작성하는 동안이 결함을 발견했습니다. 이제 나도 어디로 가야할지 모르겠어, tk. 모든 코드를 위아래로 인쇄하고 나면 더 이상 생각이 없습니다. 이것이 OrderModify() 함수가 내장된 이유입니다. 그리고 그것을 구현하는 방법을 모르겠습니다.

 
hoz :

사악한 라이브 , 어떻게 수표가 없습니까? 나는 위에 썼습니다 :

첫 댓글도 달았습니다. 모든 것이 기본이지만.

또 어떻게 확인할 수 있나요?

빅토르, 그래서 확인 후 새로운 값이 할당되는지 아닌지... 하지만 확인해야 할 사항은

 if (OrderOpenPrice() != ND (fd_MurreyLevelsValue[ 11 ])  // Если текущая цена не равна новой.. из массива
 || OrderStopLoss() != ND (fd_MurreyLevelsValue[ 12 ])   // или 
 || OrderTakeProfit() != ND (fd_MurreyLevelsValue[ 2 ])) // или
  // если одно из условий выполнено пойдём в модифай... 
 
AlexeyVik :

빅토르, 그래서 확인 후 새로운 값이 할당되는지 아닌지... 하지만 확인해야 할 사항은

Alexey , 그리고 전달된 함수 값의 불변성을 어디에서 확인합니까? 나는 이미 그것을 고려했습니다. 그리고 일반적으로 초기에 수정의 필요성이 충족됩니다. 수준이 있습니다. 칠면조가 수준이 변경 되었다고 보고 한 경우 계속 ...

 
hoz :

보리스 , 무슨 말이야? 결국, 나는 가격이 그렇지 않다면 .. 그러면 ... 그렇지 않으면 ... 현재 ... 다른 것이 무엇입니까? 20번은 확인이 가능합니다... :) 역시 이건 말이 안 됩니다. 저는 이틀 동안 이 코드를 작업했습니다. 이전에는 어떻게 든 이와 같은 잼을 만나지 못했습니다. 이제 직면. 나는 이 모든 방법을 이미 여러 번 작성하고 테스트했습니다. 여기서 문제가 생겼습니다.

사실 저는 몇 가지 다른 전술을 더 좋아합니다. 그러나 마지막 올빼미를 작성하는 동안이 결함을 발견했습니다. 이제 나도 어디로 가야할지 모르겠어, tk. 모든 코드를 위아래로 인쇄하고 나면 더 이상 생각이 없습니다. 이것이 OrderModify() 함수가 내장된 이유입니다. 그리고 그것을 구현하는 방법을 모르겠습니다.

Victor, Renat는 일반적으로 Alexey가 필요한 마지막 확인을 보여 주었고 의미의 모호성을 피하고 조건을 놓치지 않기 위해 모든 뉘앙스를 사용하여 각 매개 변수에 대해 필요한 모든 확인을 더 일찍 수행했습니다!
 
hoz :

사악한 라이브 , 어떻게 수표가 없습니까? 나는 위에 썼습니다 :

 if (OrderOpenPrice() != ND (fd_MurreyLevelsValue[ 11 ]))    \\ Если текущая цена не равна новой.. из массива, то..
   New_OOP = ND (fd_MurreyLevelsValue[ 11 ]);               \\.. новая цена равна этому новому значению цены из массива( расчитанного ).
else New_OOP = OrderOpenPrice();                          \\ Иначе новая цена равно текущей цене выбранного ордера. Т.е. не изменяется.
if (OrderStopLoss() != ND (fd_MurreyLevelsValue[ 12 ]))
   New_SL = ND (fd_MurreyLevelsValue[ 12 ]);
else New_SL = OrderStopLoss();
if (OrderTakeProfit() != ND (fd_MurreyLevelsValue[ 2 ]))
   New_TP = ND (fd_MurreyLevelsValue[ 2 ]);
else New_TP = OrderTakeProfit();

첫 댓글도 달았습니다. 모든 것이 기본이지만.

또 어떻게 확인할 수 있나요?

3개의 매개변수 중 아무 것도 변경되지 않은 경우 OrderModify를 건드릴 필요가 없다는 사실에 대해 또 다른 확인이 필요합니다. 또는 이러한 매개변수 중 하나 이상이 변경된 경우에만 OrderModify로 이동하십시오.