주문이 선택되었는지 확인하는 방법 - 페이지 18

 
사실, 오류는 토픽 스타터와 달리 첫 번째 게시물에서 논의됩니다. 나는 모든 움직임을 기록했습니다. 체크한 내용만 씁니다
 
keekkenen :
코드 작성 방법에 대해 어떻게 생각하느냐는 중요하지 않습니다. 중요한 것은 코드를 가져와서 콧물을 잘못 퍼뜨린 위치를 묻는 대신 코드가 올바르게 작동한다는 것입니다. 티켓이 맞다

티켓을 전달할 필요가 없는 함수를 호출 할 때 오류 4105가 발생하기 때문에 당신이 말하는 것은 사실이 아닙니다.

예를 들어, OrderTicket()을 호출할 때 OrderTicket()을 호출하기 전에 OrderSelect()에 대한 호출이 없었다면 이것은 정확히 이 스레드에서 논의된 상황입니다.

 

아니요, 이제 외부로의 전환(출구)에 관계없이 각 기능에 대한 내 주문의 보장된 선택을 의미했습니다.

즉, 각 기능에 대해 마지막으로 선택한 주문 을 저장합니다.

 
FAQ :

아니요, 이제 외부로의 전환(출구)에 관계없이 각 기능에 대한 내 주문의 보장된 선택을 의미했습니다.

즉, 각 기능에 대해 마지막으로 선택한 주문을 저장합니다.

마지막으로 선택한 순서 를 제어하는 여러 개의 중첩된 기능이 있는 경우 - 즉, 서로에서 호출되고 다른 하나에서 세 번째 함수가 호출되면 각 함수는 호출 시 주문 선택 항목을 저장하고 질문을 올바르게 이해했다면 반환 시 선택 항목을 이 상태로 되돌립니다. 그러나 이것은 이미 매우 정교한 솔루션에 적용됩니다. 일반적으로 중첩 수준이 두 개 이상일 가능성은 낮습니다. 가장 중요한 것은 이러한 각 함수의 환경을 제어하여 이 함수를 호출해도 이전 주문 선택의 재설정으로 인해 논리적 오류가 발생하지 않도록 하는 것입니다. 이것은 주문 반복의 주요 주기에서 호출될 수 있는 서비스 기능에만 필요하며 동시에 무언가를 계산하기 위해 주문 자체를 반복합니다.

 

그런데 서비스 기능이 라이브러리에 있으면 "포인터"( 주문 선택 )를 저장할 필요가없는 것 같습니다. 그렇죠? 주 Expert Advisor와 라이브러리에는 자체 "포인터"가 있으므로, 즉 라이브러리에서 선택한 주문은 EA에서 선택되지 않으며 그 반대의 경우도 마찬가지입니다.

이것은 기능 A와 B가 모두 동일한 모듈에 있지 않은 경우 문제에 대한 이상적인 솔루션인 것 같습니다.

 

이데올로기: 필요한 필터가 있는 순서 선택 기능(모두를 위한 것)을 외부로 이동(어쨌든 각 기능에서 당신은 어딘가에 있습니다(대부분 이 순서는 맨 처음에 선택되어야 함))

 int OrdersTicket(filters, int function_id, bool new = false ){ static int tickets[functions count]; int ticket = - 1 ;
   if (! new ){
       if ( OrderSelect (tickets[function_id],SELECT_BY_TICKET)){ return (OrderTicket());}
   }
   // Выбор и возврат тикета ордера с нужными фильтрами
   return (ticket);
}

이전에 선택한 주문의 티켓을 반환하거나(이 기능에서) 지정된 필터로 새 검색을 수행하도록 보장됩니다.

이 경우 건설 티켓 = OrdersTicket(); 완벽하게 작동합니다.

 
Ant_TL :

티켓을 전달할 필요가 없는 함수를 호출할 때 오류 4105가 발생하기 때문에 당신이 말하는 것은 사실이 아닙니다.

예를 들어, OrderTicket()을 호출할 때 OrderTicket()을 호출하기 전에 OrderSelect()에 대한 호출이 없었다면 이것은 정확히 이 스레드에서 논의된 상황입니다.


그리고 고문의 설정, 외부 파일에서 티켓을 어디에서 가져옵니까?

그렇다면 오류가 발생합니다. 왜냐하면 OrderSelect()를 호출한다는 사실은 후속 틱(적어도 테스터에서는)의 시작 부분에 남아 있습니다.

 
Ant_TL :

그건 그렇고 서비스 기능이 라이브러리에 있으면 "포인터"(주문 선택)를 저장할 필요가 없을 것 같습니다. 그렇죠? 주 Expert Advisor와 라이브러리에는 자체 "포인터"가 있으므로, 즉 라이브러리에서 선택한 주문은 EA에서 선택되지 않으며 그 반대의 경우도 마찬가지입니다.

이것은 기능 A와 B가 모두 동일한 모듈에 있지 않은 경우 문제에 대한 이상적인 솔루션인 것 같습니다.


그것은 모두 외부 변수의 전역성 정도에 달려 있습니다.
 
Ant_TL :

그건 그렇고 서비스 기능이 라이브러리에 있으면 "포인터"(주문 선택)를 저장할 필요가 없을 것 같습니다. 그렇죠? 주 Expert Advisor와 라이브러리에는 자체 "포인터"가 있으므로, 즉 라이브러리에서 선택한 주문은 EA에서 선택되지 않으며 그 반대의 경우도 마찬가지입니다.

이것은 기능 A와 B가 모두 동일한 모듈에 있지 않은 경우 문제에 대한 이상적인 솔루션인 것 같습니다.


나는 통과한다. 더 이상 도와드릴 수 없습니다. 나 없이 이리저리!!!
 
FAQ :

그것은 모두 외부 변수의 전역성 정도에 달려 있습니다.

특히 "포인터"(현재 주문 선택 의 상태)는 모듈 내에서 전역적입니다. 라이브러리의 경우 이 포인터는 하나이고 프로그램 모듈의 경우 다릅니다. 이것은 프로그램의 함수 A가 루프에서 어떤 순서를 선택한 다음 라이브러리에서 보조 함수 B를 호출하는 경우 B가 작업 과정에서 다른 순서를 선택하더라도 함수 A의 순서 선택은 반환 시 위반됩니다. 그러나 두 함수가 모두 모듈 내에 있는 경우 함수 B에서 돌아올 때 함수 A 자체에서 B를 호출하기 전과 후에 또는 작업 시작과 완료 시 함수 B에서 기억하고 복원해야 합니다. 이 장소에서 작업 기능 A의 논리가 위반되지 않도록 현재 주문 선택.