[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 5. - 페이지 275

 
alsu :

int i 및 인덱스 초기화 라인이 표시되지 않습니다. 스튜디오로 부탁드립니다.

추신: 저는 리투아니아어를 잘 못해서 코드의 주석이 약간 혼란스럽습니다.)))

내 배열에 0이 있습니다. 배열은 정상적으로 커집니다. 이것은 인쇄물에서 알 수 있습니다.

2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: ArraySize 19

하지만 배열에 0을 쓰지 않는 방법

2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[8]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[7]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[6]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[5]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[4]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[3]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[2]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[1]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[0]=0.00000000
값이 0인 모든 요소
선에 충실하고 싶다

avgPriceC[i] = 닫기[ 1 ];

하지만 방법을 모릅니다. 아니면 이유가 다른 것일 수도 있습니다. 심지어 메타 트레이더를 다시 설치했습니다. 도움이되지 않았습니다.

여기에서 시작이 기본 데이터에 따르고 끝이 아직 지정되지 않은 무한 배열을 가져와야 합니다.

//greitas MA
extern int      MA_Period1     =   8 ;
extern int      plius1         =   100 ;
extern int      MA_Shift1      =   0 ;
extern int      MA_Method1     =   0 ;                                                 
//Letas MA
extern int      MA_Period2     =   13 ;
extern int      plius2         =   100 ;
extern int      MA_Shift2      =   0 ;
extern int      MA_Method2     =   3 ;                                                 
//Fleto pradzia
//fleto ipradzios eskojimas pagal indikatoriu arba laika
extern bool   start       =   true ;     // true ->pagal indikatoriu, false->pagal laika
// pagal indikatoriu fleto pradzios pradesim ieskoti nuo sio laiko
extern int      startHourFlatMA        =   16 ;    
extern int      startMinFlatMA        =   00 ;
extern string   startstartFlatMA       = "16:00" ;
extern string   endstartFlatMA       = "00:00" ;
//suradus pagal indikatoriu dar lauksim kol uzsidarys BarEnd zvake
extern bool     zvakes_pabaiga = true ; //ar lauksim kol uzsidarys M240 zvake, ar priimsim kad fletas prasidejo nuo susikirtimo
extern int      BarEnd         =   240 ;
datetime        LastTime;
//datetime       startTime;
// pagal laika fleto pradzios pradesim ieskoti nuo sio laiko
extern int      startHourFlat        =   0 ;   //
extern int      startMinFlat         =   0 ;     //

//fleto pabaiga
//Fleto pabaiga jei indikatorius duoda signala siame laiko tarpe
//Laiko tarpo pradzia
extern int      startHourEnd        =   4 ;    
extern int      startMinEnd         =   45 ;
//laiko tarpo pabaiga arba fleto pabaiga
extern int      endHourEnd        =   7 ;    
extern int      endMinEnd         =   30 ;

//Ar naudosom Volumes filtra
extern bool volFiltr = true ;             //true -> naudosim,   false -> nanaudosim

//skirtumas tarp penktadienio uzdarymo ir pirmadienio atidarymo
extern int    gep = 300 ;  



//Naktinio-fletinio pipsavimo ijungimas
bool nightFlat = false ; //true -> ijungtas,   false -> neijungtas



bool            susikirtimas = false ;      
bool            flat; 
//masyvai
double chPriceH[], chPriceL[], chPriceO[], chPriceC[], chTime[];
double avgPriceH[], avgPriceL[], avgPriceO[], avgPriceC[]; 
int i = - 1 ; // masyvu indeksas -1, nes toliau pridesim 1, o masyvu indeksacija prasideda nuo 0
int j = - 1 ; // masyvu indeksas -1, nes toliau pridesim 1, o masyvu indeksacija prasideda nuo 0
int n = - 1 ;                           // kintamasis naujo masyvo indeksacijai
int iH, iL ,iO, iC, iT;
double C[], T[], y[];
double max;                               //max skirtumas tarp LR median ir Close
//*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*--*-*--*-*-*-*-*-*-*-*-*-*--*-*-*-*-*-*-*-*-* 

int init ()
{
ArrayResize (chPriceH, 0 );
ArrayResize (chPriceL, 0 );
ArrayResize (chPriceO, 0 );
ArrayResize (chPriceC, 0 );
ArrayResize (chTime, 0 );
ArrayResize (avgPriceH, 0 ); 
ArrayResize (avgPriceL, 0 ); 
ArrayResize (avgPriceO, 0 ); 
ArrayResize (avgPriceC, 0 ); 
ArrayResize (C, 0 ); 
ArrayResize (T, 0 );
ArrayResize (y, 0 );
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-**-*-*-*-*-*-*-*-*-*-
 int start()
 {
   double volMA11, volMA12, volMA21, volMA22;  
   double x[], y[]; 
   
   Print ( "******************STARTAS*****************************************" );
   
   if (!TF_F_NewBar()) return ( 0 );
 
   volMA11 = iCustom ( NULL , 15 , "volumeMA" ,   2 , 1 );         
   volMA12 = iCustom ( NULL , 15 , "volumeMA" ,   2 , 2 );
   volMA21 = iCustom ( NULL , 15 , "volumeMA" ,   3 , 1 );
   volMA22 = iCustom ( NULL , 15 , "volumeMA" ,   3 , 2 );
    
   if (DayOfWeek()== 1 || DayOfWeek()== 2 || DayOfWeek()== 3 || DayOfWeek()== 4 )                             //jei pirmadienis antradienis ar treciadienis, ar ketvirtadienis
   {         
       if ( TimeCurrent ()>= StrToTime(startstartFlatMA) && TimeCurrent ()<= StrToTime(endstartFlatMA)+ 24 * 60 * 60 )
      {
         //Print("fleto starto ieskojimo laikas prasidejo  "+TimeToStr(TimeCurrent())+" >= "+TimeToStr(StrToTime(startstartFlatMA))+
               //"  &&  "+TimeToStr(TimeCurrent())+" <= "+TimeToStr(StrToTime(endstartFlatMA)+24*60*60));
         bool laikas = true ;
         Print ( "laikas = " +laikas);         
         if (volMA21 - volMA11 > 0 && volMA12 - volMA22 > 0 )
         {                                                                                   //jei buvo susikirtimas
            susikirtimas = true ;           
         }
         if (susikirtimas == true ) 
         {
             if (zvakes_pabaiga)
            {
               if (iTime( NULL , BarEnd, 1 )!= LastTime)
               {            
                  LastTime = iTime( NULL , BarEnd, 1 );
                  flat = true ;           
                  LastTime = iTime( NULL , BarEnd, 1 );
              }
               else return ( 0 );            
           }
           else flat = true ;
           if (flat == true )
           {
               i++; 
             //Zinodami indekso eiles numeri galim keisti masyvo ilgi
            
             ArrayResize (avgPriceH,i); 
             ArrayResize (avgPriceL,i);
             ArrayResize (avgPriceO,i); 
             ArrayResize (avgPriceC,i);        
           Print ( "ArraySize     " + ArraySize (avgPriceC));
             //jei fletas prasidejo renkam duomenis i masyva zvakiu HL ir OC skaiciavimui
            
            avgPriceH[i] = High[ 1 ];    
            avgPriceL[i] = Low[ 1 ];     
            avgPriceO[i] = Open[ 1 ];   
            avgPriceC[i] = Close[ 1 ];
         
            j++; 
            
             ArrayResize (chPriceC,i); 
             ArrayResize (chTime,i);    
           } 
         for ( int a= 0 ; a<=i; a++) Print ( "avgPriceC[" +a+ "]=" +avgPriceC[a]);
         for ( int b= 0 ; b<=j; b++) Print ( "chPriceC[" +b+ "]=" +chPriceC[b]);
         for ( int c= 0 ; c<=j; c++) Print ( "chTime[" +c+ "]=" +chTime[c]);
        }        
     }
  }
    
   return ( 0 );
}
 
gince :


KIM 사례에서도


아니요, 전역 수준에는 선언이 없으며 각 함수에는 고유한 y[]가 있습니다.


귀하의 코드와 0에 관해서는 예를 들어 설명하겠습니다.

int a[],n=5인 경우; ArrayResize(a,n), 배열의 마지막 요소는 n이 아닌 인덱스 n-1을 갖습니다. 당신은 가지고 있습니까:

               i++; 
            
            ArrayResize (avgPriceH,i); 
             ArrayResize (avgPriceL,i);
             ArrayResize (avgPriceO,i); 
             ArrayResize (avgPriceC,i);        
            
            avgPriceH[i] = High[ 1 ];    
            avgPriceL[i] = Low[ 1 ];     
            avgPriceO[i] = Open[ 1 ];   
            avgPriceC[i] = Close[ 1 ];

분명히, 우리는 배열에서 나옵니다. 따라서 값에 0이 있습니다. 맞을거야

            avgPriceH[i-1] = High[ 1 ];    
            avgPriceL[i-1] = Low[ 1 ];     
            avgPriceO[i-1] = Open[ 1 ];   
            avgPriceC[i-1] = Close[ 1 ];
 
tara :
완전히 똑같지는 않지만 완전히 다릅니다. 글로벌 및 로컬 데이터를 읽습니다.
안 봐서 미안해. Kim 에는 지역 변수 가 있습니다 .
 


타라와 알수





정말 감사합니다.

 

안녕하세요. 이 문제에 대해 도움을 요청합니다. 배열 Mas[10]이 있습니다. 각각으로 각 셀의 곱을 찾는 것이 필요합니다. 나는 연산자 if (i==j)가 셀의 곱 자체를 배제하는 그러한 구성을 만들었습니다. 문제는 이중 계산이 얻어진다는 것입니다. 예를 들어, i=1 및 j=2일 때 결과는 i=2 및 j=1일 때와 동일합니다. 재계산을 배제하기 위해 어떤 추가 조건을 작성해야 합니까?

 for (i= 0 ; i< 10 ; i++)
{
   for (j= 0 ; j< 10 ; j++)
   {
       if (i==j) continue ;
      x = Mas[i]*Mas[j];
   }
}
 
for(i=0; i<10; i++)
{
   for(j=i+1; j<10; j++)
   {
      //if(i==j) continue;
      x = Mas[i]*Mas[j];
   }
}
 
Roger :
고맙습니다.
 

안녕하세요!

아직 MQL4 프로그래밍의 많은 기능을 모릅니다. 지원 및 저항 수준을 기반으로 Expert Advisor를 작성 하려고 하지만 프로그램이 이러한 수준을 찾도록 코드를 작성하는 방법을 이해하지 못합니다. 설명 부탁드립니다. 어떤 옵션이 있는지. 코드베이스에서 검색도 안되고 서투르고 시간도 없고..

미리 감사드립니다! 이익이 당신과 함께하고 무스를 우회하기를 바랍니다!)

 
Roger :
배열에 쓰는 과정과 관련된 여러 가지 이유로 나는 그것을 2차원으로 만들어야 했습니다. 이제 배열은 Mas[2][5]처럼 보입니다. 이제 동일한 문제를 해결하려면 두 개의 "for" 루프 대신 네 개의 루프를 수행해야 합니다. 이 경우 Roger 가 제안한 옵션이 작동하지 않습니다. 2차원 배열을 사용하는 경우 이 문제를 해결하는 방법은 무엇입니까?
 
Ekburg :

안녕하세요!

아직 MQL4 프로그래밍의 많은 기능을 모릅니다. 지원 및 저항 수준을 기반으로 Expert Advisor를 작성하려고 하지만 프로그램이 이러한 수준을 찾도록 코드를 작성하는 방법을 이해하지 못합니다. 설명 부탁드립니다. 어떤 옵션이 있는지. 코드베이스에서 검색도 안되고 서투르고 시간도 없고..

미리 감사드립니다! 이익이 당신과 함께하고 무스를 우회하기를 바랍니다!)


CodeBase DailyPivotPoints 에서 표시기를 확인하십시오! 나는 이것이 당신을 도울 것이라고 생각합니다! 행운을 빕니다!