학습 논리 - 페이지 12

 

Victor, IMHO 스위치가 더 빠르고 시각적으로 더 좋습니다.

 bool IsOrderType( int type)
{
   switch (type)
   {
       case OP_BUY:
       case OP_SELL:
       case OP_BUYLIMIT:
       case OP_SELLLIMIT:
       case OP_BUYSTOP:
       case OP_SELLSTOP:
         return ( true );
   }
   return ( false );
}


아, 그건 그렇고- 테스터에서 작업의 합리적인 최적화-최근에 사용하기 시작했습니다.

 int FindLastOpenTime( int tip, int imagic) 
{
   int Res=- 1 ;
   int lOrderOpenTime=- 1 ;
   
   for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--) 
   {
       if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES))   continue ;
       if (OrderSymbol() != Symbol ())                     continue ;
       if (OrderMagicNumber() != imagic)                   continue ;
       if (!(tip==- 1 || isOrderType(tip)))                 continue ;

       if (IsTesting()) return (OrderTicket());   // тут

       if (lOrderOpenTime==- 1 ) { 
         lOrderOpenTime=OrderOpenTime(); 
         Res=OrderTicket();
      } else if (lOrderOpenTime<OrderOpenTime()) {
         lOrderOpenTime=OrderOpenTime(); 
         Res=OrderTicket();
      }
   }
   return (Res);
}

그건 그렇고, 함수는 FindLastOpenTime이라고 하며 티켓을 반환합니다.

이대로가 더 좋지 않을까요?

 datetime FindLastOpenTime( int tip, int imagic, int & ticket) 
{
   //...
}
 
TheXpert :

Victor, IMHO 스위치가 더 빠르고 시각적으로 더 좋습니다.


실제로는 더 눈에 띕니다.
 

TheXpert :

그건 그렇고, 함수는 FindLastOpenTime이라고합니다 ...

이론에 의하면
 if (lOrderOpenTime<OrderOpenTime()) {
         lOrderOpenTime=OrderOpenTime(); 
         Res=OrderTicket();
      }
-1에서 바로 작동을 시작할 수 있습니다. 외부 if...else는 여기에서 그 이유가 완전히 명확하지 않습니다. IMHO를 반환하는 것이 lOrderOpenTime보다 훨씬 낫습니다. 그런 다음 -1을 반환하면 오류를 감지할 수 있습니다.
 
예, 낚이지 마십시오.
 

이런 종류를 사용하는 것이 논리적입니까?

 int Z[];

int Fn()
{
....
   int Z = 0 ;

  Z++;
....

return(Z);
}
start()
{
   .......
   Z[f]=3;
   ......
}
 
아니요. 논리적 z(작음) 내부. 일반적으로 그러한 것들로 농담을 하지 않는 것이 좋습니다.
 

순환 피연산자의 구성과 같은 논리에 의해 항상 죽임을 당합니다.

if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue ;
if (OrderSymbol() != Symbol ()) continue ;
if (OrderMagicNumber() != imagic) continue ;
if (!(tip==- 1 || isOrderType(tip))) continue ;

도움말 보기:

계속 문은 가장 가까운 외부 while 또는 for 루프 문의 시작 부분으로 제어를 전달하여 다음 반복이 시작되도록 합니다. 이 문은 break 문과 반대입니다.

전혀 불명확한데, 조건대로 주문이 통과되지 않으면 어쩌지? 루프 출구? op 계속이 op break의 정반대인 경우 ...

저에게는 표준 논리가 더 눈에 띄고 이해하기 쉽습니다.

 int FindLastOpenTime( int type, int imagic){ int time = 0 ;
   for ( int i = OrdersTotal () - 1 ;i>= 0 ;i--){
     if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)){
         if (OrderSymbol()== Symbol ()){
           if (OrderType()==type){
               if (OrderMagicNumber()==magic){
                 if (OrderOpenTime()>time){
                    time=OrderOpenTime();
                 }
              }
           }
        }
     }
  }
   return (time);
}  
 
TheXpert :

구멍 번호 2. 논리(논리성)와 간결성은 약한 상관관계가 있습니다.

그런데 많은 사람들이 사용을 경멸하지 않는 MQL의 생생한 예입니다.

이것은 논리가 아닙니다. 이것은 살인입니다. 또한 암시적 버그의 잠재적 온상입니다.


펑크가 난 곳을 이해하지 못합니까? 그리고 왜 두 번째인가? 이것이 두 번째라면 첫 번째는 어디에 있습니까?
 
Integer :
또한 사무실이나 우편번호가 없는 특히 수완이 있는 사람들을 위한 것입니다.

dima는 metaeditor.exe가 없는 사람들을 위해 뭔가를 추가하세요 :-)

 
Vinin :


빅터, 다시 한 번 축하합니다!

사유: