MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 697

 


 #property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow
//---- input parameters
//extern double    TakeProfit=250.0;
//extern double    Lots=1;
extern int        barn= 1000 ;
extern int        Length= 10 ;
extern int        PatternLength= 10 ;
extern int         PatternWidth= 4 ;
extern color        PatternColor = Red;
extern bool        DrawZigZag = true ;
extern bool     ShowValues = true ;
extern color    ValueColor = Blue;
//---- buffers
double ExtMapBuffer1[];
//double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexEmptyValue ( 0 , 0.0 );
   //SetIndexDrawBegin(0, barn);
   if (DrawZigZag == true )  { SetIndexStyle ( 0 , DRAW_SECTION );}
   else { SetIndexStyle ( 0 , DRAW_NONE );}
   SetIndexBuffer ( 0 ,ExtMapBuffer1);
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
ObjectsDeleteAll ();
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
 
   int shift,Swing,Swing_n,alf,uzl,i,zu,zd,mv;
   double LL,HH,BH,BL,NH,NL; 
   double Uzel[ 10000 ][ 3 ]; 
   string text;
    
     ObjectDelete ( OBJ_TREND );
    

// loop from first bar to current bar (with shift=0) 
      Swing_n= 0 ;Swing= 0 ;uzl= 0 ; 
      BH = High [barn];BL= Low [barn];zu=barn;zd=barn; 



for (shift=barn;shift>= 0 ;shift--) { 
      LL= 10000000 ;HH=- 100000000 ; 
   for (i=shift+Length;i>=shift+ 1 ;i--) { 
         if ( Low [i]< LL) {LL= Low [i];
           
         } 
         if ( High [i]>HH) {HH= High [i];} 

  }
 
   if ( Low [shift]<LL && High [shift]>HH){ 
      Swing= 2 ; 
       if (Swing_n== 1 ) {zu=shift+ 1 ;} 
       if (Swing_n==- 1 ) {zd=shift+ 1 ;
 
      } 
      
   } else { 
       if ( Low [shift]<LL) {Swing=- 1 ;} 
       if ( High [shift]>HH) {Swing= 1 ;} 
   } 

   if (Swing!=Swing_n && Swing_n!= 0 ) { 
   if (Swing== 2 ) {
      Swing=-Swing_n;BH = High [shift];BL = Low [shift]; 
   } 
   uzl=uzl+ 1 ; 
   if (Swing== 1 ) {
      Uzel[uzl][ 1 ]=zd;
      Uzel[uzl][ 2 ]=BL;
      NewSid(i,zd,BL);
     
   } 
   if (Swing==- 1 ) {
      Uzel[uzl][ 1 ]=zu;
      Uzel[uzl][ 2 ]=BH; 
       NewSid(i,zu,BH);
   } 
      BH = High [shift];
      BL = Low [shift]; 
      

   } 
 
   
/*

 */
   
   

   if (Swing== 1 ) { 
       if ( High [shift]>=BH) {BH= High [shift];zu=shift;}} 
       if (Swing==- 1 ) {
           if ( Low [shift]<=BL) {BL= Low [shift]; zd=shift;}} 
      Swing_n=Swing; 
   } 

   

   
   for (i= 1 ;i<=uzl;i++) { 
         mv= StrToInteger ( DoubleToStr (Uzel[i][ 1 ], 0 ));
      ExtMapBuffer1[mv]=Uzel[i][ 2 ];
      

   
   } 


   return ( 0 );
  }
  
   void NewSid( int i, int re,   double Uzels)
{

int zed=re-PatternLength;

if (zed < 0 )
   {
   ObjectCreate ( "priceLine1_" +i, OBJ_TREND , 0 , 0 , 0 , 0 , 0 );
   ObjectSet ( "priceLine1_" +i , OBJPROP_TIME1 , Time [re]);
   ObjectSet ( "priceLine1_" +i , OBJPROP_PRICE1 ,Uzels);
  
   ObjectSet ( "priceLine1_" +i , OBJPROP_TIME2 , Time [re+PatternLength]); 
   ObjectSet ( "priceLine1_" +i , OBJPROP_PRICE2 ,Uzels);   
    
   ObjectSet ( "priceLine1_" +i , OBJPROP_COLOR ,PatternColor);
   ObjectSet ( "priceLine1_" +i, OBJPROP_RAY , false );
   ObjectSet ( "priceLine1_" +i, OBJPROP_WIDTH ,PatternWidth);
   

   }
   
   
   
   
   else {

   ObjectCreate ( "priceLine1_" +i, OBJ_TREND , 0 , 0 , 0 , 0 , 0 );
   ObjectSet ( "priceLine1_" +i , OBJPROP_TIME1 , Time [re]);
   ObjectSet ( "priceLine1_" +i , OBJPROP_PRICE1 ,Uzels);
  
   ObjectSet ( "priceLine1_" +i , OBJPROP_TIME2 , Time [re-PatternLength]); 
   ObjectSet ( "priceLine1_" +i , OBJPROP_PRICE2 ,Uzels);   
    
   ObjectSet ( "priceLine1_" +i , OBJPROP_COLOR ,PatternColor);
   ObjectSet ( "priceLine1_" +i, OBJPROP_RAY , false );
   ObjectSet ( "priceLine1_" +i, OBJPROP_WIDTH ,PatternWidth);
}

       string high  = DoubleToStr ( High [re], 4 );
       string low   = DoubleToStr ( Low [re], 4 );
       string open  = DoubleToStr ( Open [re], 4 );
       string close = DoubleToStr ( Close [re], 4 );

 Comment (low, "   " ,high);

if (ShowValues == true )

{
   ObjectCreate ( "price_text" +i, OBJ_TEXT , 0 , 0 , 0 );
   //ObjectSetText("price_text"+i,"Date: "+TimeToStr(Time[re],TIME_DATE | TIME_MINUTES)+" | Time: ",10,"Calibri", Green);
   
   ObjectSetText ( "price_text" +i, "Open: " +open+ " | High: " +high+ " | Low: " +low+ " | Close: " +close, 10 , "Calibri" , ValueColor);
   ObjectSet ( "price_text" +i , OBJPROP_TIME1 , Time [re]);
   ObjectSet ( "price_text" +i , OBJPROP_PRICE1 ,Uzels);
   
};
}


주석 으로 출력합니까 (낮음," ", 높음);
높은 가치만?
 
표시기 텍스트에서 다른 시간대의 사용을 제한하는 방법을 알려주실 수 있습니까? 표시기를 로드 할 때 속성에 있지만 프로그래밍 방식으로 제한하는 방법????
 
Vladimir Pavlov :
표시기 텍스트에서 다른 시간대의 사용을 제한하는 방법을 알려주실 수 있습니까? 표시기를 로드 할 때 속성에 있지만 프로그래밍 방식으로 제한하는 방법????
 if (InpTimeframeWork!= Period ())
  {
   // Здесь действия, которые нужно выполнить если период графике не совпадает с заданным в настройках
  }

OnInit()에서 체크되어 있으면 차트 불일치에 대한 메시지를 발행하고 INIT_FAILED를 반환하거나 터미널 차트를 필요한 차트로 조정할 수 있습니다. ChartSetSymbolPeriod(0,NULL,InpTimeframeWork);

 

안녕하세요!
pliz가 복사기 활성화 문제를 처리하도록 도와주세요. 나는 오래 전에 다른 $25에 복사기를 시장에서 샀다. 이번 시간에는 35달러, VPS 에서 사용하고 싶지만 어떤 이유로 마켓에서 MT4로 다운로드할 수 없습니다. 구매 제안만 합니다. 무료 활성화가 7개 더 있습니다. 무엇이 잘못되었는지 알 수 없습니다. 복사기를 활성화하려면 어떻게 해야 하는지 알려주세요 https://www.mql5.com/ru/market/product/4319 ?

미리 감사드립니다

 
Artyom Trishkin :

OnInit()에서 체크되어 있으면 차트 불일치에 대한 메시지를 발행하고 INIT_FAILED를 반환하거나 터미널 차트를 필요한 차트로 조정할 수 있습니다. ChartSetSymbolPeriod(0,NULL,InpTimeframeWork);

이 옵션은 나에게 익숙하지만 방법의 속성을 통해 이루어집니다. 불필요한 수준으로 들어가지 않도록 프로그램에서 "디스플레이" 탭을 설정하는 방법.

 
//+----------------------------------------------- --------------------+
//| eeee.mq4 |
//| Copyright 2018, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+----------------------------------------------- --------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#속성 링크 "https://www.mql5.com"
#속성 버전 "1.00"
#속성엄격
#속성 표시기_차트_창
외부 정수 ExtDepth = 12;
extern int ExtDeviation = 5;
extern int ExtBackstep = 3;
외부 정수 ShiftBars = 2;
//+----------------------------------------------- --------------------+
//| 사용자 지정 표시기 초기화 기능 |
//+----------------------------------------------- --------------------+
int OnInit()
{// 모듈에서

// 함수에서
이중 y3=0, y2=0, y1=0, zz; // 지그재그 극한값
int x3, x2, x1, sh=ShiftBars;// 막대 번호
// 3개의 지그재그 극값을 취합니다.
동안 (y3==0) {
zz=iCustom(NULL, 0, "지그재그", ExtDepth, ExtDeviation, ExtBackstep, 0, sh);
if (zz!=0 && zz!=EMPTY_VALUE) {
if (y1==0) { x1=sh; y1=zz; }
그렇지 않으면 (y2==0) { x2=sh; y2=zz; }
그렇지 않으면 (y3==0) { x3=sh; y3=zz; }
}
쉬++;

}

현재 극값의 값을 얻는 방법은 무엇입니까?

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Как эффективно продвигать свой продукт в Маркете...
 
02031986dima :

현재 극값의 값을 얻는 방법은 무엇입니까?

코드를 올바르게 붙여넣습니다 .


 
02031986dima :
//+----------------------------------------------- --------------------+
//| eeee.mq4 |
//| Copyright 2018, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+----------------------------------------------- --------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#속성 링크 "https://www.mql5.com"
#속성 버전 "1.00"
#속성엄격
#속성 표시기_차트_창
외부 정수 ExtDepth = 12;
extern int ExtDeviation = 5;
extern int ExtBackstep = 3;
외부 정수 ShiftBars = 2;
//+----------------------------------------------- --------------------+
//| 사용자 지정 표시기 초기화 기능 |
//+----------------------------------------------- --------------------+
int OnInit()
{// 모듈에서

// 함수에서
이중 y3=0, y2=0, y1=0, zz; // 지그재그 극한값
int x3, x2, x1, sh=ShiftBars;// 막대 번호
// 3개의 지그재그 극값을 취합니다.
동안 (y3==0) {
zz=iCustom(NULL, 0, "지그재그", ExtDepth, ExtDeviation, ExtBackstep, 0, sh);
if (zz!=0 && zz!=EMPTY_VALUE) {
if (y1==0) { x1=sh; y1=zz; }
그렇지 않으면 (y2==0) { x2=sh; y2=zz; }
그렇지 않으면 (y3==0) { x3=sh; y3=zz; }
}
쉬++;

}

현재 극값의 값을 얻는 방법은 무엇입니까?

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает экстремум ЗигЗага по его номеру.                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
double GetExtremumZZPrice( string sy= "" , int tf= 0 , int ne= 0 , int dp= 12 , int dv= 5 , int bs= 3 ) {
   if (sy== "" || sy== "0" ) sy= Symbol ();
   double zz;
   int     i, k= iBars (sy, tf), ke= 0 ;

   for (i= 0 ; i<k; i++) {
    zz= iCustom (sy, tf, "ZigZag" , dp, dv, bs, 0 , i);
     if (zz!= 0 ) {
      ke++;
       if (ke>ne) return (zz);
    }
  }
   Print ( "GetExtremumZZPrice(): Экстремум ЗигЗага номер " ,ne, " не найден" );
   return ( 0 );
}
 

중첩이 허용되는 경우 몇 개입니까?

 if
{
   if
     {

     }
}
 
multiplicator :

중첩이 허용되는 경우 몇 개입니까?

쓰기 지겨워질 때까지