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

 
hoz :

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

이런 뜻이었습니다. 그래서 ... 방향을 생각하는 ...

 int i_magic= 123 ;
int OrdersMassive[ 7 ];
//+----------------------------------------------------------------------------+
int start() {
   FindOrders(OrdersMassive);
   int i, num= 0 ;
   for (i= 0 ; i<= 7 ; i++) {
       Print ( "Количество " +GetNameOP(i)+ " = " +OrdersMassive[i]);
      num+=OrdersMassive[i];
      }
   Print ( "Всего ордеров = " +(num-OrdersMassive[ 6 ]));
   return ( 0 );
}
//+----------------------------------------------------------------------------+
void FindOrders( int &mass[]) {
   int i, t, k= OrdersTotal ()- 1 ;
   ArrayInitialize(mass,0);
   for (i=k; i>= 0 ; i--) {
       if (! OrderSelect (i,SELECT_BY_POS))   continue ;
       if (OrderMagicNumber()!=i_magic)     continue ;
       if (OrderSymbol()!= Symbol ())         continue ;
      t=OrderType();
      mass[t]=mass[t]+ 1 ;
      }
}   
//+----------------------------------------------------------------------------+
string GetNameOP( int op) {
   switch (op) {
       case OP_BUY      : return ( "Buy" );
       case OP_SELL     : return ( "Sell" );
       case OP_BUYLIMIT : return ( "Buy Limit" );
       case OP_SELLLIMIT: return ( "Sell Limit" );
       case OP_BUYSTOP  : return ( "Buy Stop" );
       case OP_SELLSTOP : return ( "Sell Stop" );
       case 6            : return ( "Неторговое изменение баланса" );
       default           : return ( "Не знаю, чё за тип такой..." );
   }
}
//+----------------------------------------------------------------------------+

그리고 나는 많이 보지 않은 당신은 어떻습니까 ...

 
r772ra :

어쩌면 그렇게

내 버전에서는 기능이 더 짧을 것입니다 ... :)

 //+----------------------------------------------------------------------------+
void FindOrders( int &mass[]) {
   int i, t, k= OrdersTotal ()- 1 ;
   ArrayInitialize(mass,0);   
   for (i=k; i>= 0 ; i--) {
       if (! OrderSelect (i,SELECT_BY_POS))   continue ;
       if (OrderMagicNumber()!=i_magic)     continue ;
       if (OrderSymbol()!= Symbol ())         continue ;
      t=OrderType();
      mass[t]=mass[t]+ 1 ;
      }
}   
//+----------------------------------------------------------------------------+
 
r772ra :

어쩌면 그렇게

 //+-------------------------------------------------------------------------------------+
//| Поиск своих ордеров                                                                 |
//+-------------------------------------------------------------------------------------+
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);
}

쟁기질도 하지 않습니다. 거기에 문제가 있었습니다. 지금처럼:

 //+-------------------------------------------------------------------------------------+
//| Поиск своих ордеров                                                                 |
//+-------------------------------------------------------------------------------------+
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++;
       else 
      {
         pr( "Позиций в рвнке нет!" );
      }
      
      pr ( "FindOrders(): " + "t = " + t);
      pr ( "FindOrders(): " + "p = " + p);
   }
}

시장에 주문이 없을 때 카운터는 절대 0이 아닙니다. 젠장 완성입니다. 여기 뭐가 문제야 x. Artyom이 쓴 것을 보겠습니다.

 
hoz :

쟁기질도 하지 않습니다. 거기에 문제가 있었습니다. 지금처럼:

시장에 주문이 없을 때 카운터는 절대 0이 아닙니다. 젠장 완성입니다. 여기 뭐가 문제야 x. Artyom이 쓴 것을 보겠습니다.


이것을 루프에서 빼내십시오.

pr ( "FindOrders(): " + "t = " + t);
pr ( "FindOrders(): " + "p = " + p);
내가 알기로는 이것이 정보의 출력입니다 .
 
r772ra :


이것을 루프에서 빼내십시오.

내가 알기로는 이것은 정보의 출력입니다.


정확히. 나에게 무슨 일이. 몇 가지 어리석은 실수. With ++에서 월이 떨어졌습니다. 이제 µl에서 잼은 너무 멍청합니다. 벌써 뇌가 끓어오르는 것 같아요 :(
 
일반적으로 각 틱 에서 주문을 검색하는 것이 정상입니까? 아니면 각 소절에서 수행하는 것이 더 낫습니까? 나는 아직 어떤 경우에 더 나은지, 또 다른 경우에 어떤 것이 더 나은지에 대해 아직 이해하지 못했습니다.
 
hoz :
일반적으로 각 틱에서 주문을 검색하는 것이 정상입니까? 아니면 각 소절에서 수행하는 것이 더 낫습니까? 나는 아직 어떤 경우에 더 나은지, 또 다른 경우에 어떤 것이 더 나은지에 대해 아직 이해하지 못했습니다.
그리고 바 열림을 추적할 때 바 내부에서 어떤 포지션이 닫혀 있다면, 어드바이저는 다음 바가 열릴 때까지 포지션 수의 변화를 알지 못할 것입니다.
 
hoz :


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

p - 예금 수

조건:

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

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

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


t = 주문 총계 ();

왜 계산???? 계획된???

 

안녕하세요! 이 기능에서 오류를 찾고 있습니다.

이론상, 아직 열지 않은 보류 중인 주문 은 접수된 지 이틀 후에 삭제되어야 합니다.

최소 = 1440;

 if ( OrdersTotal ()< 1 )
{ return ;
 }
   for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--)
   {
     if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
     {
       if (OrderSymbol()== Symbol ())
       {
         if (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP)
        {
           if ( TimeCurrent ()-OrderOpenTime()>min)            
            {
            OrderDelete(OrderTicket());
           return ;
          }
        }
      }
    }
return ;}
 
pako :



고마워요 파코.