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

 
도대체. 여기 FLUD 또는 여전히 주제별 포럼. 그런 비어있는 경우 영원히 금지해야합니다.
 

안녕하세요 제가 이미 질문을 드렸는데요 답변을 해주셔서 정말 감사합니다 하지만 귀로 알아듣기 힘들고 프로그래밍에 약합니다 그리고 질문의 본질은 위쪽 표시기 히스토그램의 각 CONTINUOUS 블록에 막대가 표시됩니다. 그런 표시기(가장 낮은 것)를 작성했습니다. 그 안에 각 히스토그램 열의 값은 상위 표시기의 연속 블록에 있는 막대 수에 해당하지만 시작 설치된 순간부터만 표시됩니다.(빨간색 세로선) 이전 막대에도 표시되어야 합니다(AO 또는 CCI를 설치할 때와 마찬가지로). "그림"이 중간 표시기처럼 보이도록(이것은 동일한 하위 표시기이며 이전에 설치한 것뿐입니다.) 제안 사항을 기꺼이 들을 것입니다(코드 조각이 바람직함). 하단 표시기의 코드가 첨부되어 있습니다.

 #property indicator_separate_window
#property indicator_minimum - 7
#property indicator_maximum 7
#property indicator_buffers 2
#property indicator_color1 Yellow
#property indicator_color2 DarkOrange
#property indicator_width1   2
#property indicator_width2   2
#property indicator_level1 0.0
//--- buffers
double UpMapBuffer[];
double DnMapBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle( 0 , DRAW_HISTOGRAM );
   SetIndexBuffer ( 0 ,UpMapBuffer);
   SetIndexStyle( 1 , DRAW_HISTOGRAM );
   SetIndexBuffer ( 1 ,DnMapBuffer);
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {   
    
     int i;

     for (i= 1 ;i< Bars ;i++)                                                  
     {
       double AO_Sig_Sig_1 = iCustom ( NULL , 0 , "Signal-Signal" , 0 ,i);                           
       double AO_Sig_Sig_2 = iCustom ( NULL , 0 , "Signal-Signal" , 0 ,i+ 1 );
                  
       if ((AO_Sig_Sig_1!=AO_Sig_Sig_2))
       {
         break ;
        i= 0 ;
       }                                                                
     }
         
    i=i*(AO_Sig_Sig_1); 
            
     if (i> 0 )            
     {
      UpMapBuffer[ 0 ]=i;
     }
     else
     {
      UpMapBuffer[ 0 ]= 0 ;
     } 
         
     if (i< 0 )         
     {
      DnMapBuffer[ 0 ]=i;
     }
     else
     {
      DnMapBuffer[ 0 ]= 0 ;
     }            
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
 
MK07 :

안녕하세요 제가 이미 질문을 드렸는데요 답변을 해주셔서 정말 감사합니다 하지만 귀로 알아듣기 힘들고 프로그래밍에 약합니다 그리고 질문의 본질은 위쪽 표시기 히스토그램의 각 CONTINUOUS 블록에 막대가 표시됩니다. 그런 표시기(가장 낮은 것)를 작성했습니다. 그 안에 각 히스토그램 열의 값은 상위 표시기의 연속 블록에 있는 막대 수에 해당하지만 시작 설치된 순간부터만 표시됩니다.(빨간색 세로선) 이전 막대에도 표시되어야 합니다(AO 또는 CCI를 설치할 때와 마찬가지로). "그림"이 중간 표시기처럼 보이도록(이것은 동일한 하위 표시기이며 이전에 설치한 것뿐입니다.) 제안 사항을 기꺼이 들을 것입니다(코드 조각이 바람직함). 하단 표시기의 코드가 첨부되어 있습니다.

이 같은?

-

 #property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 DodgerBlue
#property indicator_color2 Bisque
#property indicator_width1 2
#property indicator_width2 2
//===============================
double fx1[],fx2[];
double ao,ao1;
int ti,n,fs;
//******************************************************************
int init()
{
   SetIndexBuffer ( 0 ,fx1); SetIndexStyle( 0 , 2 );
   SetIndexBuffer ( 1 ,fx2); SetIndexStyle( 1 , 2 );
   
   SetLevelValue(0,0);
   SetLevelValue(1,10);
   SetLevelValue(2,20);
   SetLevelValue(3,-10);
   SetLevelValue(4,-20);   

   return ( 0 );
}
//******************************************************************
int start()
{
   int cbi= Bars -IndicatorCounted()- 1 ; if (cbi< 0 ) return (- 1 ); 
   if (cbi== 1 ) cbi--;
   if (cbi> 1 ) {cbi= Bars - 37 ; n= 0 ; ti=Time[cbi];}  
   //-------------------------------------------------
   for ( int i=cbi; i>= 0 ; i--) 
   {
       if (ti!=Time[i]) {n++; ti=Time[i];}
      
      ao  = iAO ( NULL , 0 ,i); 
      ao1 = iAO ( NULL , 0 ,i+ 1 ); 
      
       if (ao>ao1) { if (fs== 2 ) n= 1 ; fs= 1 ;} else
       if (ao<ao1) { if (fs== 1 ) n= 1 ; fs= 2 ;}
      
       if (fs== 1 ) {fx1[i]=n;  fx2[i]= 0 ;} else
       if (fs== 2 ) {fx2[i]=-n; fx1[i]= 0 ;}
   } 
   
   return ( 0 );
}
//******************************************************************
 
ANG3110 :

이 같은?

-


정말 감사합니다! 당신이 필요로하는 바로!
 
안녕하세요! 포지션이 열렸는데 스톱과 이익이 없는 이유를 알려주세요. 미리 감사드립니다!

정수 시작()
{
이중 S1 = 낮음[1];
이중 Tpb =((High[1]-Open[1])/Tp)+Open;
더블 바2b;
if (열기[2]<닫기[2])bar2b=(높음[2]-열기[2]);
이중 막대 1b;
if (열기[1]<닫기[1])bar1b=(높음[1]-열기[1]);
if(bar2b<bar1b) OrderSend (Symbol(),OP_BUY,Lots,Ask,3,Sl,Tpb,"",16384,0,Green);
 
xanzel :

돕다!!!

단순 이동 평균 지표

고문에 규정된 대로 적용 대상: 이전 지표 데이터

iMA(NULL,0,8,0,MODE_EMA, PRICE_PREVIOU S ,0);


스팸. 별도의 스레드로 충분합니다.
 
Vinin :

"이것은 내가 이해하는 더 높은 삶의 신조입니다"를 돕는 것보다 많은 단어를 쓰는 것이 좋습니다.
 
xanzel : "이것은 내가 이해하는 더 높은 삶의 신조입니다"를 돕는 것보다 많은 단어를 쓰는 것이 좋습니다.  
스팸에 대한 처벌은 단 하나입니다. 바로 금지입니다. 그래서 나는 잃어버린 영혼을 구하고 있을 뿐입니다. 맘에 안들면 목욕은 내가 항상 도와줄게
 

여러분, 좋은 저녁입니다!

컴파일러가 아래 코드에서 그렇게 생각하는 이유를 알려주십시오.

변수 int 티켓이 정의되지 않았습니다.

하나의 오류가 발생합니다.

'티켓' - 변수가 정의되지 않음 C:\Program Files\Alpari NZ MT4(2)\experts\hhhh.mq4 (18, 6)

 int start()



{

 double Price=iOpen ( Symbol (), 0 , 0 );        
 double SL= NormalizeDouble (Price- 3000 * Point , Digits );         
 double TP= NormalizeDouble (Price+ 100 * Point , Digits );
 
 
 #include <OMASS.mq4> //объявление и инициализация массива
 double value =  Bid ; // параметру value функции ArrayBsearch присваивается значение текущей цены
 int S = ArrayBsearch (  massiv[ 43 ],  value, WHOLE_ARRAY ,   0 , MODE_ASCEND) //функция ищет самое близкое к текущей цене значение
 if ( MathAbs ( NormalizeDouble (Bid - S, Digits ))<= 0.5 * Point //если текущая цена отличается от значени возвращенного функцией не более чем 0,5 п.
 if (Bid==Price  )
 int Ticket= OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 3 ,SL,TP, "jfh" , 123 ); //открыть ордер       
}





아래 코드의 할당문에도 Ticket 변수가 정의되어 있고 코드가 성공적으로 컴파일되지만

 int start()

{

 double Price=iOpen ( Symbol (), 0 , 0 );        
 double SL= NormalizeDouble (Price- 3000 * Point , Digits );         
 double TP= NormalizeDouble (Price+ 100 * Point , Digits );    
 

  
       if (Bid==Price  )
     
   int Ticket= OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 3 ,SL,TP, "jfh" , 123 );



Спасибо.
 
solnce600 :

여러분! 좋은 저녁입니다!

컴파일러가 아래 코드에서 그렇게 생각하는 이유를 알려주십시오.

변수 int 티켓이 정의되지 않았습니다.

하나의 오류가 발생합니다.

'티켓' - 변수가 정의되지 않음 C:\Program Files\Alpari NZ MT4(2)\experts\hhhh.mq4 (18, 6)


아래 코드의 할당문에도 Ticket 변수가 정의되어 있고 코드가 성공적으로 컴파일되지만


아마도 한 곳에 괄호만으로는 충분하지 않을 것입니다.

 if ( MathAbs ( NormalizeDouble (Bid - S, Digits ))<= 0.5 * Point //если текущая цена отличается от значени возвращенного функцией не более чем 0,5 п.
사유: