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

 
CYBOPOB :


그래서, 그것이 거기에 인간적으로 쓰여졌다면 ... 그래서 어떤 사업에서도 처음에는 모든 것이 분명해 보이고 조금 후에 당신은 미치기 시작합니다 ..))

확인. 구체적인 예:


주문은 TR 이동이 끝나면 닫히지만 이후 SELL 신호가 취소되지 않고 새 주문이 열리며 이는 허용되지 않습니다.

720초를 측정한 후 새 주문을 열 수 있습니다. 따라서 이 경우 이 초는 역사상 첫 번째부터 또는 마지막에서 어떤 순서로 측정됩니까?

그리고 나서: 그리고 그렇다면, 무엇입니까? 내가 더하기 z, 처음부터 계산됩니까? 브르르 :))


매우 감사합니다!


이 함수는 마지막 위치가 닫힌 이후의 시간(초)을 반환합니다.
 

배열의 길이가 변경되면 다음에서 확인할 수 있습니다.

2013.04.08 19:06:05 2013.03.28 20:00 testavimas naktini fleta EURUSD,M15: ArraySize 21
그러나 배열에서 모든 요소는 0으로 작성됩니다.

2013.04.08 19:06:04 2013.03.28 16:00 testavimas naktini fleta EURUSD,M15: avgPriceC[19]=0.00000000
따라서 이 줄 에서 배열 요소에는 Close[ 1 ] 값이 할당되지 않습니다.

avgPriceC[i] = Close[ 1 ];
누가 그 이유를 설명할 수 있습니까?
 

돕다

promeetochny 변수를 통해 시도했지만 작동하지 않습니다. ArrayResize 는 배열 뒤에 배치됩니다. 결과는 동일합니다. 배열의 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 );
   
     double h = High[ 1 ];    
     double l = Low[ 1 ];     
     double o = Open[ 1 ];   
     double c = NormalizeDouble (iClose( NULL , 0 , 1 ), Digits ); 
    
   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++; 
                    
            avgPriceH[i] = h;   
            avgPriceL[i] = l;     
            avgPriceO[i] = o;   
            avgPriceC[i] = c;
            j++; 
            
             ArrayResize (chPriceC,j); 
             ArrayResize (chTime,j);    
           } 
         ArrayResize (avgPriceH,i); 
         ArrayResize (avgPriceL,i);
         ArrayResize (avgPriceO,i); 
         ArrayResize (avgPriceC,i);  
         
           Print ( "ArraySize     " + ArraySize (avgPriceC));
         
         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 (    b= 0 ; b<=j; b++) Print ( "chTime[" +b+ "]=" +chTime[b]);
        }        
     }
  }
    
   return ( 0 );
}
st.272에서 시작
 
gince :

돕다

중간 변수를 통해 시도했지만 작동하지 않습니다. ArrayResize 는 배열 뒤에 배치됩니다. 결과는 동일합니다. 배열의 0

st.272에서 시작


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

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

 
alsu :

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

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

//+------------------------------------------------------------------+
//|                                              naktinis fletas.mq4 |
//|                                        Ñåðãåé (urdala) Ðàøåâñêèé |
//|                                            gintaraitis@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Ñåðãåé (urdala) Ðàøåâñêèé"
#property link       "gintaraitis@gmail.com"




//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 );
}
//-----------------------------------------------------------------
 bool TF_F_NewBar()               
{   
   static datetime TimeLast;                                  
   if (TimeLast!=Time[ 0 ])   
   {
      TimeLast=Time[ 0 ];   
       return ( true );                              
   } 
   return ( false );
}
 
gince :



배열 y[]는 전역 함수와 시작 함수로 두 번 선언됩니다.
 
tara :

배열 y[]는 전역 함수와 시작 함수로 두 번 선언됩니다.


KIM 사례에서도

 #define r 30
void start() {
   double x[r], y[];
   for ( int i= 0 ; i<r; i++) x[i]=Close[i+ 1 ];
  ArrayLR(x, y);
   for (i= 0 ; i<r; i++)
    SetArrow( 170 , Red, "arr" +i, Time[i+ 1 ], y[i]);
}

//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 20.05.2008                                                     |
//|  Îïèñàíèå : Ôîðìèðóåò ìàññèâ çíà÷åíèé ëèíåéíîé ðåãðåññèè.                  |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    x - ìàññèâ çíà÷åíèé ÷èñëîâîãî ðÿäà                                      |
//|    y - ìàññèâ çíà÷åíèé ëèíåéíîé ðåãðåññèè                                  |
//+----------------------------------------------------------------------------+
void ArrayLR( double & x[], double & y[]) {
   double a, b, c, sx= 0 , sx2= 0 , sxy= 0 , sy= 0 ;
   int     i, n= ArraySize (x);

   if (n> 1 ) {
     for (i= 0 ; i<n; i++) {
      sx+=i+ 1 ;
      sy+=x[i];
      sxy+=(i+ 1 )*x[i];
      sx2+=(i+ 1 )*(i+ 1 );
    }
    a=sx*sy-n*sxy;
    c=sx*sx-n*sx2;
     if (c!= 0 ) a=a/c; else a= 0 ;
    b=(sy-a*sx)/n;
     ArrayResize (y, n);
     for (i= 0 ; i<n; i++) y[i]=a*(i+ 1 )+b;
  } else Print ( "ArrayLR(): Íåäîñòàòî÷íîå êîëè÷åñòâî ýëåìåíòîâ ðÿäà! n=" , n);
}

//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 12.10.2007                                                     |
//|  Îïèñàíèå : Óñòàíîâêà çíà÷êà íà ãðàôèêå                                    |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    cd - êîä çíà÷êà                                                         |
//|    cl - öâåò çíà÷êà                                                        |
//|    nm - íàèìåíîâàíèå               ("" - âðåìÿ îòêðûòèÿ òåêóùåãî áàðà)     |
//|    t1 - âðåìÿ îòêðûòèÿ áàðà        (0  - òåêóùèé áàð)                      |
//|    p1 - öåíîâîé óðîâåíü            (0  - Bid)                              |
//|    sz - ðàçìåð çíà÷êà              (0  - ïî óìîë÷àíèþ)                     |
//+----------------------------------------------------------------------------+
void SetArrow( int cd, color cl,
               string nm= "" , datetime t1= 0 , double p1= 0 , int sz= 0 ) {
   if (nm== "" ) nm=DoubleToStr(Time[ 0 ], 0 );
   if (t1<= 0 ) t1=Time[ 0 ];
   if (p1<= 0 ) p1=Bid;
   if ( ObjectFind (nm)< 0 ) ObjectCreate (nm, OBJ_ARROW , 0 , 0 , 0 );
  ObjectSet(nm, OBJPROP_TIME1    , t1);
  ObjectSet(nm, OBJPROP_PRICE1   , p1);
  ObjectSet(nm, OBJPROP_ARROWCODE , cd);
  ObjectSet(nm, OBJPROP_COLOR     , cl);
  ObjectSet(nm, OBJPROP_WIDTH     , sz);
}
//+----------------------------------------------------------------------------+
 
gince :


KIM 사례에서도


택시를 탈까, 갈까?
 
완전히 똑같지는 않지만 완전히 다릅니다. 글로벌 및 로컬 데이터를 읽습니다.