정적 배열? - 페이지 3

 

좋아, 뭔가 보인다,

 while (i>= 0 )
     {
      val1= iFractals ( NULL , 0 , MODE_UPPER,i);
       if (val1 > 0 ) v1[i]=High[i];
       else           v1[i]=v1[i+ 1 ];

      val2= iFractals ( NULL , 0 , MODE_LOWER,i);
       if (val2 > 0 ) v2[i]=Low[i];
       else           v2[i]=v2[i+ 1 ];
      
      i--;    
     }

이 루프는 언제 끝나나요? 내가 >=0, 즉 -1이 아닐 때

다음 코드는 입니다. .

     for (val1=High[i]; v1[i] == 0 ;i++)   // or v1[i] == EMPTY_VALUE
      {
       Print (v1[i]);
      }

따라서 i 의 시작 값은 -1 입니다. . 따라서 인쇄물이 출력됩니다. v[-1]은 실제로 = 0이므로 루프가 종료됩니다.

 
내가 무엇이든 인쇄할 때 항상 0인 것처럼 보입니다.

 int i= Bars ;         
   
   while (i>= 0 )
     {
      val1= iFractals ( NULL , 0 , MODE_UPPER,i);
       if (val1 > 0 ) v1[i]=High[i];
       else           v1[i]=v1[i+ 1 ];

      val2= iFractals ( NULL , 0 , MODE_LOWER,i);
       if (val2 > 0 ) v2[i]=Low[i];
       else           v2[i]=v2[i+ 1 ];
      
      i--;
       
     }
   
     Print (v1[i+ 10 ]);
      

나는 i를 다른 것과 while 문으로 변경했고 심지어 완전히 다른 코드를 생성했는데 모두 = 0인 것 같았습니다. 이유를 모르겠습니다.
그러나 아직 표시기가 작동하고 버퍼가 v1[i] 내에서 val1을 적절하게 유지하는 것처럼 보이지만 배열에서 아무 것도 인쇄하기 위해 참조할 수 없습니다.

모든 것은 항상 = 0

계속 좀 더 읽어보겠습니다.






 
for (v1[i]=High[i]; v1[i] != 0 ; i++)
      {
       Print (v1[i]);
      }
      

This prints nothing so still having - 1 issue I guess
그러나 -1을 시작하면 i++도 다시 0으로 만들기 때문에 한 번 순환하자마자 끝납니다.

이 for 문이 while 문 외부에서 발생하기 때문에 이것이 while 문에 의해 영향을 받을지 몰랐습니다.

 
int i= Bars ;         
   
   while (i>= 0 )
     {
      val1= iFractals ( NULL , 0 , MODE_UPPER,i);
       if (val1 > 0 )
      { 
      v1[i]=High[i];
       Print (v1[i]);
      }
       else           
      {
      v1[i]=v1[i+ 1 ];
      }

      val2= iFractals ( NULL , 0 , MODE_LOWER,i);
       if (val2 > 0 ) v2[i]=Low[i];
       else           v2[i]=v2[i+ 1 ];
      
      i--;
       
     }
루프 내부와 전에 인쇄해도 여전히 0

기본적인 업무조차 회피하는 것 같다. Bars에 대해 읽는 것조차 문서나 책에서 -1의 주제에 대해 언급하지 않습니다.
실망하지 마세요. 이 간단한 주제에 대해 1.5주 동안 인쇄하면서 올바른 방향으로 나아가는 데 도움이 될 가장 간단한 작업이라고 생각했습니다.

정말 짜증나! ㅋㅋㅋ

내일 좀 더 해봐야겠습니다.
 

당신은 내 게시물을 자세히 읽지 않았습니다. . .

막대는 항상 -1과 같지 않습니다. . . 또는 내가 언급한 -1과 관련이 있습니다.

두 개의 루프에서 i 변수를 사용하고 있습니다. . . 루프 사이에서 다른 값으로 변경하지 않는 한 두 번째 루프의 시작 값은 첫 번째 루프의 종료 값이 됩니다.

 
혼란스러워


나는 for 루프를 완전히 없애고 루프 내부에 인쇄할 것이라고 생각했습니다.
나는 효과 없이 i=0 또는 i !=0 을 다시 초기화하려고 시도했습니다. 또는 val3-iFractals와 같은 완전히 다른 변수.....a
그리고 a = 0이고 막대가 아니라 거기에서 위쪽으로 계산되고 인쇄는 여전히 0과 같습니다.

위에 게시 된 코드에서와 같이 루프 내부에서 인쇄가 작동하지 않는 이유를 이해할 수 없습니다.

감사해요

 

아마도 당신은 저를 위해 질문에 대답할 수 있습니다. . .

코딩 경험이 거의 없는 많은 사람들이 Print 문을 추가하는 것을 두려워하는 이유는 무엇입니까? 왜 당신은 자신을 위해 라이페를 그렇게 힘들게 만들고 싶습니까? . 아마도 당신은 S & M에 있습니까?

하나의 Print 문이 있습니다. . . 0을 출력합니다. . . 당신은 그 당시에 i 의 값이 얼마였는지도 모르고, val1 의 값이 얼마였는지도 모릅니다. . . iFractals가 어떻게 작동하는지 알고 있습니까? 즉, iFractals가 수행하는 작업과 제공하는 값의 범위를 계산하는 방법을 의미합니다.

 

귀하의 코드를 복사하고 일부 인쇄 명령문을 추가하고 실행했습니다. . 인쇄 중입니다. . .

2011.09.18 14:42:24 Agent86 EURUSD,H1: v1[29]= 1.4727

 
RaptorUK :

아마도 당신은 저를 위해 질문에 대답할 수 있습니다. . .

코딩 경험이 거의 없는 많은 사람들이 Print 문을 추가하는 것을 두려워하는 이유는 무엇입니까? 왜 당신은 자신을 위해 라이페를 그렇게 힘들게 만들고 싶습니까? . 아마도 당신은 S & M에 있습니까?

하나의 Print 문이 있습니다. . . 0을 출력합니다. . . 당신은 그 당시에 i 의 값이 얼마였는지도 모르고, val1 의 값이 얼마였는지도 모릅니다. . . iFractals가 어떻게 작동하는지 알고 있습니까? 즉, iFractals가 수행하는 작업과 제공하는 값의 범위를 계산하는 방법을 의미합니다.


나는 Print 문을 추가하는 것을 두려워하지 않습니다. 각 변수 뒤에 넣었는데 그것이 무엇을 인쇄하고 있는지, 그리고 그것이 인쇄되는 것을 볼 것으로 예상했던 것이 아니기 때문에 왜 그런지 이해하지 못합니다.
당신이 보는 단일 인쇄문은 내가 거기에 넣은 유일한 것이 아닙니다. 하나의 인쇄문만 시도했다면 게시하지 않았을 것입니다.
수백 가지를 시도하고 100개의 게시물, 사전, 책, 문서 등을 읽고 다시 읽은 2-3주 후에야 이 배열이 작동하는 방식과 요소와 값을 인쇄하는 방법을 이해하기 위해 게시했습니다.

나는 이것을 이해하기 위해 하루에 2-3시간씩 작업했고 이것을 알아내려고 노력하면서 다른 많은 것을 배웠지만 나는 훨씬 더 가깝지 않습니다.

나는 while 루프 대신 for 루프를 사용하여 코드를 완전히 다시 작성했으며 이것이 나를 위해 조금 단순화할 것이라고 생각하여 배열 요소를 100개로 제한했습니다. 여전히 값을 인쇄할 수 없습니다.


난 그냥 이해가 안 돼요.

나는 iFractals가 2) 왼쪽의 양초와 2) 오른쪽의 양초가 중간 양초보다 높거나 낮은 경우 5개의 양초 시리즈에서 중간 양초의 고가/저가 값을 제공한다고 생각했습니다. 중간 양초의 고점 또는 저점을 표시하거나 기록합니다.

나는 iFractals의 실제 계산을 알지 못하지만, 내가 생각한 >0이 true를 의미하고 High[i] 로 초기화되기 때문에 인쇄할 때 이것이 중요할 것이라고 생각하지 않았습니다.

나는 그것을 이해하지 못한다.


 
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[0]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[1]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[2]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[3]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[4]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[5]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[6]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[7]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[8]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[9]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[10]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[11]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[12]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[13]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[14]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[15]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[16]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[17]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[18]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[19]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[20]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[21]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[22]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[23]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[24]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[25]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[26]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[27]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[28]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[29]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[30]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[31]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[32]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[33]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[34]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[35]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[36]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[37]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[38]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[39]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[40]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[41]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[42]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[43]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[44]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[45]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[46]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[47]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[48]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[49]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[50]= 0


이 코드와 예에서 val1을 제외한 모든 다른 인쇄 문이 있었습니다. 다른 모든 시도는 코드의 아무 곳에서나 v1[i]를 인쇄하려고 했습니다.

 //+------------------------------------------------------------------+
//|                                                  Agent86_5min.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS by Agent86"


//---- input parameters
extern double     TakeProfit= 20.0 ;
extern double     Lots= 0.1 ;
extern double     StopLoss= 15.0 ;
extern int MagicNumber= 123486 ;

double v1[];
double v2[];
double v3[];
double val1;
double val2;
double val3;


//++++ These are adjusted for 5 digit brokers.

int      pips2points;     // slippage  3 pips    3=points    30=points
double   pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int      Digits .pips;     // DoubleToStr(dbl/pips2dbl, Digits.pips)

     // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if ( Digits == 5 || Digits == 3 )
   {     // Adjust for five (5) digit brokers.
      pips2dbl    = Point * 10 ; pips2points = 10 ;   Digits .pips = 1 ;
   } 
   else 
    {    
      pips2dbl    = Point ;    pips2points =   1 ;   Digits .pips = 0 ; 
    }
     // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return ( 0 );
  }
   
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  
  
   double    faster = iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ,MODE_MAIN, 1 ), //MODE_MAIN
            slower = iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ,MODE_SIGNAL, 1 ); //MODE_SIGNAL
            
  
          
   
     for ( int i= Bars ; i >= 0 ; i--)
     {
      val1= iFractals ( NULL , 0 , MODE_UPPER,i);
   
       // Print (val1, (" val1")); //will print some 0's
       if (val1 > 0 )
         {        
         
          v1[i]=High[i];
 
         }
       else           
         {
         v1[i]=v1[i+ 1 ];
         }
        

      val2= iFractals ( NULL , 0 , MODE_LOWER,i);
     
       if (val2 > 0 ) 
         {
         v2[i]=Low[i];
         }
       else           v2[i]=v2[i+ 1 ];
     
      i--;
       
     }
   
   for (i= 50 ; i>= 0 ; i--)
      {
       Print ( "v1[" , i, "]= " , v1[i]);
      }

//----
            
                       
            

           

//---- 

 
                    
        

                
   return ( 0 );
  }    

//+------------------------------------------------------------------+