MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1682

 
나는 그것을 약간 다시 수정했습니다. 이제 주요 for 루프 대신 while을 수행하지만 여전히 두 번째 중첩 루프의 첫 번째 조건에 대한 항목이 없습니다!
 int GetMagic(Order &order)
{
   int magic = 0 ;
   int unique = 0 ;
  
   if (order.cmd == OP_SELLSTOP || order.cmd == OP_BUYSTOP){
     if ( OrdersTotal ()){
       do {
        magic++;
         for ( int i = OrdersTotal (); i > 0 ; i --){
           if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)){
             Print ( "!!!!!!!!!!!!!!!!!!!" );//<----------НЕ ПРИНТУЕТСЯ
             if (magic != OrderMagicNumber())
              unique ++;
          }
        }
      } while (unique < OrdersTotal ());
    } else return (magic + 1 );
  }
   return magic;
}
 
MakarFX # :

너 뭐야?!)))

시험을 마친?

나는 오랫동안 색상 변경 작업을 해왔지만 라인에는 없지만 차이가 없어야합니다.

                     if (SymOpen < SymClose) {
                       CColor=Mirroring?BearBarColor:BullBarColor;
                        SetIndexStyle( 32 +(num* 8 ), DRAW_HISTOGRAM , STYLE_SOLID ,Mirroring? 1 :WidthOC,CColor); SetIndexLabel( 32 +(num* 8 ), SubSymbol);
                        SetIndexStyle( 33 +(num* 8 ), DRAW_HISTOGRAM , STYLE_SOLID ,Mirroring?WidthOC: 1 ,CColor); SetIndexLabel( 33 +(num* 8 ), SubSymbol);
                        SetIndexStyle( 34 +(num* 8 ), DRAW_HISTOGRAM , STYLE_SOLID ,Mirroring?WidthOC: 1 ,CColor); SetIndexLabel( 34 +(num* 8 ), SubSymbol);
                        SetIndexStyle( 35 +(num* 8 ), DRAW_HISTOGRAM , STYLE_SOLID ,Mirroring? 1 :WidthOC,CColor); SetIndexLabel( 35 +(num* 8 ), SubSymbol);

추신. 내 다른 코드를 보니 거기에 있는 선의 색상이 변경되었습니다.

SetIndexStyle(num, DRAW_LINE , STYLE_SOLID , 1 ,BullColor);
 
Vitaly Muzichenko # :

나는 오랫동안 색상 변경 작업을 해왔지만 라인에는 없지만 차이가 없어야합니다.

추신. 내 다른 코드를 보니 거기에 있는 선의 색상이 변경되었습니다.

SetIndexStyle(num, DRAW_LINE , STYLE_SOLID , 1 ,BullColor);

원하는 섹션이 아닌 전체 라인을 변경합니다.

 
MakarFX # :

원하는 섹션이 아닌 전체 라인을 변경합니다.

글쎄, 그는 당신이 전체 라인을 변경해야한다고 썼습니다

 
그래서 테스트를 위해 코드를 수정하고 실행하려고 하면 두 번째 순서에서 무한 루프가 표시됩니다.(
파일:
 
Nerd Trader # :
그래서 테스트를 위해 코드를 수정하고 실행하려고 하면 두 번째 순서에서 무한 루프가 표시됩니다.(

놀랐어요! 왜요?

왜 그런가, 그 안에 담긴 신성한 의미는 무엇인가?

 int GetMagic(Order &order)
{
   int magic = 0 ;
   int unique = 0 ;
  
   if (order.cmd == OP_SELLSTOP || order.cmd == OP_BUYSTOP){
     if ( OrdersTotal ()){
       do {
        magic++;
         for ( int i = OrdersTotal (); i > 0 ; i --){
           if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)){
             Print ( "!!!!!!!!!!!!!!!!!!!" ); //<----------НЕ ПРИНТУЕТСЯ
             if (magic != OrderMagicNumber())
              unique ++;
          }
        }
      } while (unique < OrdersTotal ());
    } else return (magic + 1 );
  }
   return magic;
}

---

당신은 수량으로 찾고 있으므로 그렇게하십시오.

2개의 주문이 있는 경우 그는 해당 명령을 통과하지만 3번째 또는 23번째는 찾을 수 없습니다.

---

분명히 문제를 정확하게 설명하지 않으므로 이 솔루션은

 
Nerd Trader # :

잘못된 주기:

 for ( int i = OrdersTotal (); i > 0 ; i --){

다음과 같이 필요합니다.

 for ( int i = OrdersTotal ()- 1 ; i >= 0 ; i --){
 
Aleksei Stepanenko # :

잘못된 주기:

다음과 같이 필요합니다.

예! 공장! 그러나 두 번째 for 루프에 대한 항목이 더 일찍 발생한 이유는 무엇이며 다음 줄을 삽입하면 Print() - (무한) 실행되지만 더 이상 진행되지는 않습니까? 어쨌든 덕분에 이제 잠을 잘 수 있습니다.
 
Vitaly Muzichenko # :

놀랐어요! 왜요?

왜, 그 안에 담긴 신성한 의미는 무엇입니까?

---

당신은 수량으로 찾고 있으므로 그렇게하십시오.

2개의 주문이 있는 경우 그는 해당 명령을 통과하지만 3번째 또는 23번째는 찾을 수 없습니다.

---

분명히 문제를 정확하게 설명하지 않으므로 이 솔루션은

마법은 고유해야 합니다. 즉, 나머지와 일치하지 않아야 합니다.
 
Aleksei Stepanenko # :

잘못된 주기:

다음과 같이 필요합니다.

차이점이 뭐야? 그리고 주문 번호는 1이 아니라 0부터입니까?