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

 

이것은 Expert Advisors가 구현하는 기능 중 하나입니다. 물론 후행 마침표 포함 하는 어드바이저를 작성할 수 있습니다(물론 이러한 어드바이저는 이미 많은 수로 작성되었습니다).

MT 터미널에는 Expert Advisor와 연결되지 않은 일반 후행도 있습니다.

 
alsu :


MT 터미널에는 Expert Advisor와 연결되지 않은 일반 후행도 있습니다.

고맙습니다. 내가 물은 것은 그에 관한 것이었다. 그럼 또 다른 질문. MQL4를 이해하는 데 시간이 얼마나 걸렸습니까? 내 말은 프로가 되지 않고 A부터 Z까지 멋진 조언자를 쓰는 것이 아닙니다. 하지만 적어도 이미 준비된 것을 조정해야 할 위치는 알고 있어야 합니다. 나 자신에 대해 더 명확하게 하기 위해: 이 단계에서 나는 오퍼레이터를 이해합니다. 연구한지 2주가 지났습니다. 가능성은 무엇이라고 생각하십니까? 반복합니다. 근처에 누구에게 물어볼 선생님이 없습니다.

답변에 감사드립니다.

 

얘들아 이건 그냥 주석이야!!! (((

해외 DC를 선택해서 해외에서 계좌를 개설하고 싶은데... 못찾겠어요....리뷰에 따르면 다 사기이고 "SHARASHKINA OFFICE"인것 같습니다....((

MT4로 사무실을 알려주세요....감사합니다!!!!!

 
마찬가지로 새로운 피노키오는 믿을 수 있는 기적의 들판을 찾고 있습니다. 웃기지 마세요. :)
 

단일 라인 표시기.

 #property indicator_separate_window    
#property indicator_buffers 1         
#property indicator_color1 Aqua      

   int index;
   double TickPrice[1000];
//--------------------------------------------------------------------
int init()                          
  {
   SetIndexBuffer ( 0 ,TickPrice);          
   SetIndexStyle ( 0 , DRAW_LINE , STYLE_SOLID , 1 ); 
   return ;                          
  }
//--------------------------------------------------------------------
int start()                         
  {
  
      TickPrice[index] = Bid;
      index++;

   return ;                         
  }
//--------------------------------------------------------------------

문제.

오른쪽에서 왼쪽 으로 선을 그리는 이유는 무엇입니까?

 

그리고 그렇게 하면?

 #property indicator_separate_window    
#property indicator_buffers 1         
#property indicator_color1 Aqua      

   int index= 1000 ;
   double TickPrice[ 1000 ];
//--------------------------------------------------------------------
int init()                          
  {
   SetIndexBuffer ( 0 ,TickPrice);          
   SetIndexStyle ( 0 , DRAW_LINE , STYLE_SOLID , 1 ); 
   return ;                          
  }
//--------------------------------------------------------------------
int start()                         
  {
  
      TickPrice[index] = Bid;
      index -- ;

   return ;                         
  }
//--------------------------------------------------------------------
 

안녕하세요, 일일 막대가 다른 시간에 시작되도록 다시 그리는 표시기를 어디에서 찾을 수 있는지 알려주십시오.

예: 터미널 시간은 00:00입니다. 표시기의 입력 매개변수에서 설정: +4. 주간 바는 이제 4:00에 시작됩니다.

미리 감사드립니다.

 
DhP :

그리고 그렇게 하면?


예, 그게 더 좋습니다. 올바른 방향으로 그리기 시작했습니다. 그러나 index--이면 언젠가는 index==0이 되고 모든 것이 종료됩니다.

어떻게 운동을 계속할 것인가?

 
artmedia70 :
그리고 배열의 크기가 증가하는 부분은 어디입니까? 값을 어디에 쓸까요? ( ArrayResize() 함수 )


주문 및 위치 유형에 따라 배열로 정렬하는 것은 다음과 같습니다.

 int OrderStatus() {
   int z1= 1 , z2= 1 , z3= 1 , z4= 1 ;
   if (B> 0 ) { ArrayResize (TicketB,B);}
   if (S> 0 ) { ArrayResize (TicketS,S);}
   if (BS> 0 ) { ArrayResize (TicketBS,BS);}
   if (SS> 0 ) { ArrayResize (TicketSS,SS);}
   int i, k= OrdersTotal ();
      for (i= 1 ; i<=k; i++) {
         if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
             if (OrderType()==OP_BUYSTOP && OrderSymbol()== Symbol () && OrderMagicNumber()==MG) {
            TicketBS[z1]=OrderTicket();
            z1++;
            }
             if (OrderType()==OP_SELLSTOP && OrderSymbol()== Symbol () && OrderMagicNumber()==MG) {
            TicketSS[z2]=OrderTicket();
            z2++;
            }
             if (OrderType()==OP_BUY && OrderSymbol()== Symbol () && OrderMagicNumber()==MG) {
            TicketB[z3]=OrderTicket();
            z3++;
            }
             if (OrderType()==OP_SELL && OrderSymbol()== Symbol () && OrderMagicNumber()==MG) {
            TicketS[z4]=OrderTicket();
            z4++;
            }
         }
      }
}

그러나 매수 및 매도 포지션의 수익성에 따른 추가 정렬은 작동하지 않았습니다. 현재 0을 삽입합니다.

 int OrderVBezubitok() {
   int k1= 0 , k2= 0 ;
   ArrayResize (TicketBez,B+S);
   ArrayResize (TicketTral,B+S);
   int i;
   if ( ArraySize (TicketB)> 0 ) {
       for (i= 1 ; i< ArraySize (TicketB)+ 1 ; i++) {
             OrderSelect (TicketB[i], SELECT_BY_TICKET, MODE_TRADES);
             if (OrderProfit()> 0 ) {k1++; TicketTral[k1]=TicketB[i];} 
             else {k2++; TicketBez[k2]=TicketB[i];}
                       
         
      }
   }
   if ( ArraySize (TicketS)> 0 ) {
       for (i= 1 ; i< ArraySize (TicketS)+ 1 ; i++) {
             OrderSelect (TicketS[i], SELECT_BY_TICKET, MODE_TRADES);
             if (OrderProfit()> 0 ) {k1++; TicketTral[k1]=TicketB[i];} 
             else {k2++; TicketBez[k2]=TicketB[i];}
                       
         
      }
   }      
}

왜요? 내가 이해할 수없는

 

안녕하세요 친구!

이것이 올바른 주소인지 모르겠습니다. 포럼의 첫 번째 게시물입니다.

도와주세요.

누군가 비슷한 일을 겪었을 수도 있습니다.

문제는 다음입니다. 해당 기간의 최고가와 최저 가격을 검색하는 지표를 작성하고 있습니다. 찾은 후 최대값을 최소값으로 나누어 별도의 창에 표시하고 싶습니다.

그러나 창은 비어 있습니다.

덧셈, 뺄셈, 곱셈 등을 할 때 MAX 및 MIN 표시기가 정상적으로 표시됩니다.

다음은 코드입니다. 그는 아주 작습니다.

 #property indicator_separate_window
#property indicator_buffers 3

#property indicator_color1 MediumSpringGreen
#property indicator_color2 Crimson
#property indicator_color3 LightGray

#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 1

extern int Buy_bars = 20 ;           //Количество баров для открытия позиции
extern int Sell_bars = 23 ;           //Количество баров для закрытия позиции  

double    buf_0[],                   //индикаторныЙ массив максимумов 
         buf_1[],                   //индикаторныЙ массив минимумов 
         buf_sr[] ;                 //индикаторныЙ массив средних значений
//extern int Shift = 0;

int init()
  {
   SetIndexBuffer ( 0 , buf_0);
   SetIndexStyle ( 0 , DRAW_LINE );
   SetIndexLabel ( 0 , "Maximum" );
   SetIndexShift ( 0 , 0 );
   
   SetIndexBuffer ( 1 , buf_1);
   SetIndexStyle ( 1 , DRAW_LINE );
   SetIndexLabel ( 1 , "Minimum" );
   SetIndexShift ( 1 , 0 );
   
   SetIndexBuffer ( 2 , buf_sr);
   SetIndexStyle ( 2 , DRAW_LINE );
   SetIndexLabel ( 2 , "Srednyaya" );
   SetIndexShift ( 2 , 0 );
   
   return ;
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int i, k ,t;
   int     counted_bars=IndicatorCounted();
//----
   i = Bars - counted_bars - 1 ;
   while (i >= 0 )
   {
       double max = 0 ;
       double min = 999999999999.99 ;
   
   for (k=i ; k<=i+Buy_bars- 1 ; k++)
      {
       if (High[k] > max) max = High[k];
      }
   for (t=i; t<=i+Sell_bars- 1 ; t++)  
      {
       if (Low[t] < min) min = Low[t];
      }
        
   i--;
   

   buf_sr[i] = (max/min);
   }
   return ;
  }
//+------------------------------------------------------------------+

오류를 지정합니다.

미리 감사합니다