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

 

예, int 유형이 있지만 결과가 할당 없이 즉시 표시된다고 생각했습니다. 감사합니다.


장이 일했다.

 


여기 내가 얻은 것이 있습니다. 관심 있는 사람이 있으면 출처를 게시할 수 있습니다. 이 스크립트는 막대 통계를 컴파일합니다. 이 그림에서는 일봉을 분석했습니다.


흥미로운 패턴을 찾았습니다. 거의 모든 기간에 백분율이 동일합니다. +-5% 차이. 황소 대 곰 1, 2, 3의 비율로 연속으로.

 
ChAnton :


여기 내가 얻은 것이 있습니다. 관심 있는 사람이 있으면 출처를 게시할 수 있습니다. 이 스크립트는 막대 통계를 컴파일합니다. 이 그림에서는 일봉을 분석했습니다.


흥미로운 패턴을 찾았습니다. 거의 모든 기간에 백분율이 동일합니다. +-5% 차이. 황소 대 곰 1, 2, 3의 비율로 연속으로.


포스팅해 보니 흥미롭네요.
 
//+------------------------------------------------------------------+
//|                                                 Анализ баров.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"

//для метатрейдера 4

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+

#property show_inputs
extern int Periods = 5 ;                     // Период таймсерии
extern int Nachalo = 1 ;                     // Начало баров откуда начинается анализ
extern int Konec = 500 ;                     // Конец баров на каком баре заканчивается анализ
extern int Bolee = 0 ;                       // тело бара больше установленной величины (для расчета от 0 указывать -1)
extern int Menee = 50 ;                       // тело бара меньше установленной величины
extern int Teny = 100 ;                       // минимальная величина тени с обоих сторон
extern int Otkr = 100 ;                       // минимальное отклонение от точки открытия

int start()
  {
   int i;       //счетчик
   double nul = 0 ; //количество баров размер тела которых равно нулю
   double vverh = 0 ;   //Бар вверх бычий
   double vniz = 0 ;   //Бар вниз медвежий
   double dvavverh = 0 ;   //Бар вверх 2 подряд
   double dvavniz = 0 ;   //Бар вниз 2 подряд
   double trivverh = 0 ;   //Бар вверх 3 подряд
   double trivniz = 0 ;   //Бар вниз 3 подряд
   double vibor = 0 ;   //Бар удовлетворяющий условию поиска
   double Maks = 0 ; //максимальный бар
   double Mun = 10000 ; //минимальный бар
   double ten = 0 ; //тени с обоих сторон превышающие установленную величину
   double otkrytie = 0 ; // смещение цены в обе стороны на эту величину с момента открытия бара
   double L; //вре'менная переменная
   string S;
  
   string Symb;
   //используемый фин. инструмент - торговая пара
  Symb= Symbol ();  
   string P;
   if (Periods == 1 ) P = "PERIOD_M1" ;
   if (Periods == 2 ) P = "PERIOD_M5" ;
   if (Periods == 3 ) P = "PERIOD_M15" ;
   if (Periods == 4 ) P = "PERIOD_M30" ;
   if (Periods == 5 ) P = "PERIOD_H1" ;
   if (Periods == 6 ) P = "PERIOD_H4" ;
   if (Periods == 7 ) P = "PERIOD_D1" ;
   if (Periods == 8 ) P = "PERIOD_W1" ;
   if (Periods == 9 ) P = "PERIOD_MN1" ;
//----
   if ( Konec > iBars ( Symb, P) )
  {
   Konec = iBars ( Symb, P);
  } 
   Alert ( "___________________________________________________________" );

//----
   /*   iTime("USDCHF",PERIOD_H1,i)
       iOpen("USDCHF",PERIOD_H1,i)
       iHigh("USDCHF",PERIOD_H1,i)
       iLow("USDCHF",PERIOD_H1,i)
       iClose("USDCHF",PERIOD_H1,i)
       iVolume("USDCHF",PERIOD_H1,i));    */
            
   for (i=Nachalo;i<=Konec;i++)
    {
     if ( iOpen (Symb,P,i) == iClose (Symb,P,i)) nul = nul + 1 ; //количество нулевых баров
    
     if ( iOpen (Symb,P,i) < iClose (Symb,P,i)) vverh = vverh + 1 ; //количество бычьих баров
     
     if ( iOpen (Symb,P,i) > iClose (Symb,P,i)) vniz =  vniz  + 1 ; //количество медвежьих баров
     
     if ( iOpen (Symb,P,i) < iClose (Symb,P,i))
         if ( iOpen (Symb,P,i+ 1 ) < iClose (Symb,P,i+ 1 )) 
             dvavverh = dvavverh + 1 ; //количество бычьих баров
     
     if ( iOpen (Symb,P,i) > iClose (Symb,P,i)) 
         if ( iOpen (Symb,P,i+ 1 ) > iClose (Symb,P,i+ 1 ))
             dvavniz =  dvavniz  + 1 ; //количество медвежьих баров
     
     if ( iOpen (Symb,P,i) < iClose (Symb,P,i)) 
         if ( iOpen (Symb,P,i+ 1 ) < iClose (Symb,P,i+ 1 ))
             if ( iOpen (Symb,P,i+ 2 ) < iClose (Symb,P,i+ 2 ))
                 trivverh = trivverh + 1 ; //количество бычьих баров
     
     if ( iOpen (Symb,P,i) > iClose (Symb,P,i)) 
         if ( iOpen (Symb,P,i+ 1 ) > iClose (Symb,P,i+ 1 ))
             if ( iOpen (Symb,P,i+ 2 ) > iClose (Symb,P,i+ 2 ))
                 trivniz =  trivniz  + 1 ; //количество медвежьих баров
              
     L = iOpen (Symb,P,i) - iClose (Symb,P,i);
     if (L < 0 ) L = L * (- 1 );
     
     if (L < Menee * Point ) if (L >  Bolee * Point ) vibor = vibor + 1 ; //количество выбранных баров
     
     L = L / Point ;
     if (L > Maks) Maks = L;
     if (L < Mun) Mun = L;
     
     if ( iOpen (Symb,P,i) < iClose (Symb,P,i))
         if ( iOpen (Symb,P,i) - iLow (Symb,P,i)> Teny* Point )
             if ( iHigh (Symb,P,i) - iClose (Symb,P,i)> Teny* Point )
                ten = ten + 1 ;    

     if ( iOpen (Symb,P,i) > iClose (Symb,P,i))
         if ( iClose (Symb,P,i) - iLow (Symb,P,i)> Teny* Point )
             if ( iHigh (Symb,P,i) - iOpen (Symb,P,i)> Teny* Point )
                ten = ten + 1 ; 
                
                
     if ( iHigh (Symb,P,i) - iOpen (Symb,P,i)> Otkr* Point )
         if ( iOpen (Symb,P,i) - iLow (Symb,P,i)> Otkr* Point )
                otkrytie = otkrytie + 1 ;                
                

    }
     
   Alert ( "Максимальный бар = " , Maks , " ----- " , "Минимальный бар = " , Mun);
  
   Alert ( "Бары удовлетворяющие условию по размеру отклонений >" ,Otkr , " пунктов = " , otkrytie, " --- " , otkrytie/(Konec/ 100 ), " % " );
   Alert ( "Бары удовлетворяющие условию по размеру теней >" ,Teny , " пунктов = " , ten, " --- " , ten/(Konec/ 100 ), " % " );
   Alert ( "Бары удовлетворяющие условию по размеру тела > " ,Bolee , " пунктов и < " ,Menee  , " пунктов = " , vibor, " --- " , vibor/(Konec/ 100 ), " % " );
  
   Alert ( "                            " ,trivverh/(Konec/ 100 ), " % " , " -------------------------- " , trivniz/(Konec/ 100 ), " % " );
   Alert ( "3 быка подряд = " , trivverh, " ----- " , "3 медведя подряд  = " , trivniz );
  
   Alert ( "                               " ,dvavverh/(Konec/ 100 ), " % " , " ------------------------------ " ,   dvavniz/(Konec/ 100 ), " % " );
   Alert ( "2 быка подряд = " , dvavverh, " ----- " , "2 медведя подряд  = " , dvavniz );
  
   Alert ( "                             " ,nul/(Konec/ 100 ), " % " ,
         " -------------------- " , vverh/(Konec/ 100 ), " % " ,
         " ------------------------- " ,vniz/(Konec/ 100 ) , " % " );
   Alert ( "нулевые бары = " , nul, " ----- " , "бычьи бары = " , vverh, " ----- " , "медвежьи бары = " , vniz );
  
   Alert ( "Общее количество баров на графике " ,P, " : " , iBars ( Symb, P)); 
   Alert ( "Количество анализируемых баров = " , Konec);

   return ( 0 );
  }
//+------------------------------------------------------------------+
해결되지 않은 문제가 있습니다. 백분율이 부정확하게 계산됩니다. + - 0.5% 왜 아직까지는 이해할 수 없습니다. 또한 분석을 위해 스크립트 설정 에서 지정되지 않은 차트에 설정된 기간을 사용합니다.
 
좋은 조언자가 무엇인지 알려주세요 좋은 결과가 선언된 여러 조각을 다운로드했습니다. 테스터에서 시도했지만 결과가 훨씬 나빴습니다. 한 개도 찾지 못했습니다.
 

자체제작 인디케이터가 있는데 뭔가 무디게 해서 그 값을 받고싶다

day_maxday_min , 빼는 방법을 알려주지 않습니까? iCustom을 사용하면 알 수 있지만 이해할 수 없습니다.(이 칠면조를 올빼미에 넣는 것은 매우 어렵다는 사실 때문에: (... 나를 위해)


property copyright "DOC"
#property link "none"


#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 Green
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double day_max;
double day_min;

 
좋은 오후입니다. 이 금융 상품에 대한 주문이 열려 있는지 확인하는 방법을 알려주십시오.)))
 
Ali007 :
좋은 오후입니다. 이 금융 상품에 대한 주문이 열려 있는지 확인하는 방법을 알려주십시오.)))

나는 제안한다:

열려 있는 모든 주문을 순환하고 주문 기호를 확인합니다. 관심 있는 주문이면 다음에 필요한 항목에 따라 카운터를 늘리거나 "true"를 반환합니다. 모든 주문을 살펴보고 필요한 기호를 찾지 못한 경우 주문 수 를 결정해야 하는 경우 "거짓" 또는 0을 반환합니다.

 
Ali007 :
좋은 오후입니다. 이 금융 상품에 대한 주문이 열려 있는지 확인하는 방법을 알려주십시오.)))

 bool got_order=false;

for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--)
{
   if ( OrderSelect (i,SELECT_BY_POS))
       if ( OrderSymbol ()== Symbol ())
         if ( OrderType ()==OP_BUY|| OrderType ()==OP_SELL) 
         {
            got_order=true; break ;
         }
}
 
VladislavVG :

나는 제안한다:

열려 있는 모든 주문을 순환하고 주문 기호를 확인합니다. 관심 있는 주문이면 다음에 필요한 항목에 따라 카운터를 늘리거나 "true"를 반환합니다. 모든 주문을 살펴보고 필요한 기호를 찾지 못한 경우 주문 수를 결정해야 하는 경우 "거짓" 또는 0을 반환합니다.

매우 감사합니다!
그리고 모든 미결 주문을 처리하는 방법은 무엇입니까?어떤 기능을 사용해야 합니까? 주문선택 ?