포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 120

 
hoz :


이것은 분명히 나에게 이미 졸음의 징후입니다.

그러나 다시 말하지만, 그것은 요점이 아닙니다. 나는 테스터에서 올빼미를 운전합니다. 화면에서는 보시다시피 지연이나 시장가 주문이 없습니다.

필요한 값을 표시하기 위해 별도의 기능을 복제한 별도의 기능과 표준 설명은 항상 시장 주문과 지연이 있음을 보여줍니다.

결과 함수는 다음과 같습니다.

나는 처음부터 카운터 값을 재설정합니다.

음, 어쨌든 t++는 어떻게 작동할까요?
 
Forexman77 :

귀하의 고문을 약간 수정하고 코드에 주석을 달았습니다. 신호 및 정지의 형성에주의하십시오. 나는 별 생각 없이 그것들을 붙였다. 필요한 경우 원하는 대로 수정합니다.

파일:
 
artmedia70 :
음, 어쨌든 t++는 어떻게 작동할까요?


그것만이 유일한 선택입니까?

//+-------------------------------------------------------------------------------------+
//| Поиск своих ордеров                                                                 |
//+-------------------------------------------------------------------------------------+
void FindOrders(int& t, int& p)
{
   t = 0;
   p = 0;
 
   for (int i=OrdersTotal() - 1; i>=0; i--)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderType() > 1 && OrderType() < 6)
      {
          p++;
          t++;
      }
      else if (OrderType() < 2)
          t++;
      else 
      {
         Print("Позиций в рвнке нет!");
      }
      
      pr ("FindOrders(): " + "t = " + t);
      pr ("FindOrders(): " + "p = " + p);
   }
}

그는 별로 없어 보인다. 최적화되지 않았습니다. t++ 의 반복은 즐겁지 않다...

 
hoz :


그것만이 유일한 선택입니까?

그는 별로 없어 보인다. 최적화되지 않았습니다. t++ 의 반복은 즐겁지 않다...

어떤 시나리오에서 t를 증가시키는 이유는 무엇입니까? 그리고 일반적으로 여기에 있는 내용은 다음과 같습니다.

 if (OrderType() > 1 && OrderType() < 6 )
      {
          p++;
          t++;
      }
       else t++;

주문 유형 이 1보다 크고 6보다 작으면 p 를 늘리고 t 를 늘립니다.

그렇지 않으면(주문 유형==6인 경우에도) t 를 다시 증가시킵니다.

이상하지?

 
artmedia70 :

어떤 시나리오에서 t를 증가시키는 이유는 무엇입니까? 그리고 일반적으로 여기에 있는 내용은 다음과 같습니다.

주문 유형이 1보다 크고 6보다 작으면 p 를 늘리고 t 를 늘립니다.

그렇지 않으면(주문 유형==6인 경우에도) t 를 다시 증가시킵니다.

이상하지?




귀하의 의견을 작성하는 동안 이미 제 의견을 전달했습니다. 위 수정 버전.
 
hoz :

귀하의 의견을 작성하는 동안 이미 제 의견을 전달했습니다. 위 수정 버전.
주문이 보류 중이면 t를 늘리고 다음 주문이 시장 주문이면 t를 다시 늘리는 이유는 무엇입니까?
 
6개의 요소로 구성된 배열을 만듭니다. 참조로 함수에 전달합니다. 주문이 선택되고 모든 필터(심볼, 매직)와 일치하는 즉시 주문 유형으로 주소가 지정된 배열 셀을 늘립니다. 함수가 실행된 후 배열에는 유형별로 정렬된 주문 수가 포함됩니다.
 
artmedia70 :
주문이 보류 중이면 t를 늘리고 다음 주문이 시장 주문이면 t를 다시 늘리는 이유는 무엇입니까?


t 는 모든 주문의 수입니다.

p - 예금 수

조건:

 if (OrderType() > 1 && OrderType() < 6 )

가 참이면 tp 가 모두 증가합니다. 2에서 5 사이의 모든 주문은 보류 중인 주문이자 일반적으로 주문입니다. 따라서 두 카운터를 모두 늘려야 합니다. 조건이 참인 경우:

 else if (OrderType() < 2 )

그러면 지연은 없지만 시장 주문이 있습니다. 따라서 현재 카운터 t 를 증가시키십시오. 총 주문 수의 카운터.

글쎄, 아무것도 없다면 주문이 없다고 인쇄합니다 ...

 
artmedia70 :
6개의 요소로 구성된 배열을 만듭니다. 참조로 함수에 전달합니다. 주문이 선택되고 모든 필터(심볼, 매직)와 일치하는 즉시 주문 유형으로 주소가 지정된 배열 셀을 늘립니다. 함수가 실행된 후 배열에는 유형별로 정렬된 주문 수가 포함됩니다.

나는 이미 여기서 배열이 바람직하다는 것을 이해했습니다)) 위에서 설명한 버전에 부정확성이 있습니까? (순전히 관심을 위해. 모든 것이 이미 명확한 것 같습니다)
 
hoz :

나는 이미 여기서 배열이 바람직하다는 것을 이해했습니다)) 위에서 설명한 버전에 부정확성이 있습니까? (순전히 관심을 위해. 모든 것이 이미 명확한 것 같습니다)

어쩌면 그렇게

 //+-------------------------------------------------------------------------------------+
//| Поиск своих ордеров                                                                 |
//+-------------------------------------------------------------------------------------+
void FindOrders( int & t, int & p)
{
   t = 0 ;
   p = 0 ;
 
   for ( int i= OrdersTotal () - 1 ; i>= 0 ; i--)
      {
       if (! OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderType() > 1 && OrderType() < 6)   p++;
       if (OrderType() < 6 )  t++;
       }
  pr ( "FindOrders(): " + "t = " + t);
  pr ( "FindOrders(): " + "p = " + p);
}