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

 
Andrey Sokolov :

고맙습니다. 따라서 이것은 MT5에만 있습니다. 조언자로부터 지표를 추가하는 방법을 아는 사람이 있으면 알려주십시오.

지표와 전문가를 템플릿에 저장할 수 있으며 기능 작동 방식은 지표와 함께 전문가를 설치합니다.

 //+------------------------------------------------------------------+
//|                                                  DeleteChart.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
#property show_inputs
//---
input string Template = "ADX" ; // Имя шаблона(without '.tpl')
//---
ENUM_TIMEFRAMES TimeFrame; // Change TimeFrame - Current = dont changed
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   DeleteChart();
  }
//+------------------------------------------------------------------+
//| start function                                                   |
//+------------------------------------------------------------------+
void DeleteChart( void )
  {
   long currChart,prevChart= ChartFirst ();
   int i= 0 ,limit= 100 ;
   bool errTemplate;
   while (i<limit)
     {
      currChart= ChartNext (prevChart);
       if (TimeFrame!= PERIOD_CURRENT )
        {
         ChartSetSymbolPeriod (prevChart, ChartSymbol (prevChart),TimeFrame);
        }
      errTemplate= ChartApplyTemplate (prevChart,Template+ ".tpl" );
       if (!errTemplate)
        {
         Print ( "Error " , ChartSymbol (prevChart), "-> " , GetLastError ());
        }
       if (currChart< 0 )
         break ;
       Print (i, ChartSymbol (currChart), " ID =" ,currChart);
      prevChart=currChart;
      i++;
     }
  }
//+------------------------------------------------------------------+

mt4 문서 https://docs.mql4.com/en/chart_operations/chartapplytemplate

선적 서류 비치   mt5 https://www.mql5.com/ru/docs/chart_operations/chartapplytemplate

Документация по MQL5: Операции с графиками / ChartApplyTemplate
Документация по MQL5: Операции с графиками / ChartApplyTemplate
  • www.mql5.com
ChartApplyTemplate - Операции с графиками - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
SanAlex :

지표와 전문가를 템플릿에 저장할 수 있으며 기능 작동 방식은 지표와 함께 전문가를 설치합니다.

mt4 문서 https://docs.mql4.com/en/chart_operations/chartapplytemplate

선적 서류 비치   mt5 https://www.mql5.com/ru/docs/chart_operations/chartapplytemplate

답변 감사합니다. 그러나 사전 준비 없이 필요합니다.

 

MT4의 재미있는 결함


cntrl 버튼을 누른 상태에서 차트에 중복 개체를 생성하면 EA가 이벤트 id == CHARTEVENT_OBJECT_CREATE 를 포착합니다.

이 개체가 Expert Advisor에서 삭제되면 오류 팝업 - 4202 - 개체가 없습니다. 이 경우 개체는 이미 차트에 있습니다.


어떻게 될 것인가? 개체를 삭제하는 방법?

   if (id == CHARTEVENT_OBJECT_CREATE )
     {
       Print ( "New object create" , sparam);
       if (! ObjectDelete (sparam))
       {
           Print ( " error remove " , GetLastError (), " " ,sparam);     //здесь будет ошибка 4202.  Хотя это событие срабатывает когда объект есть на графике! 
       }
}
 
Andrey Sokolov :

답변 감사합니다. 그러나 사전 준비 없이 필요합니다.

먼저 원하는 표시기를 가져 와서 기간, TF, 선 두께 , 색상 등 입력에 필요한 매개 변수를 추가하십시오.

다른 이름으로 저장합니다. 엮다. OnInit() 또는 다른 위치(OnTick() 제외)의 Expert Advisor에서 "귀하의" 표시기를 추가하십시오.

handle_newInd = iCustom ( Symbol (), Period (), "my_Ind\\new_xxxxx" ,in_period,in_size,in_from,.....);
   if (handle_newCandles == INVALID_HANDLE )
   {
       return ( INIT_FAILED );
   }
   ChartIndicatorAdd ( 0 , 1 ,handle_newInd);
 
Сергей Таболин :

먼저 원하는 표시기를 가져 와서 기간, TF, 선 두께 , 색상 등 입력에 필요한 매개 변수를 추가하십시오.

다른 이름으로 저장합니다. 엮다. OnInit() 또는 다른 위치(OnTick() 제외)의 Expert Advisor에서 "귀하의" 표시기를 추가하십시오.

MT4가 필요합니다!
 
Sergey Likho :

MT4의 재미있는 결함


cntrl 버튼을 누른 상태에서 차트에 중복 개체를 생성하면 EA가 이벤트 id == CHARTEVENT_OBJECT_CREATE 를 포착합니다.

이 개체가 Expert Advisor에서 삭제되면 오류 팝업 - 4202 - 개체가 없습니다. 이 경우 개체는 이미 차트에 있습니다.


어떻게 될 것인가? 개체를 삭제하는 방법?

버그가 아니라 기능입니다)
사용자가 마우스로 개체를 잡고 있습니다. 삭제할 방법이 없습니다.

마우스에서 버튼을 놓을 때까지 기다렸다가 삭제하십시오.

 
Taras Slobodyanik :

버그가 아니라 기능입니다)
사용자가 마우스로 개체를 잡고 있습니다. 삭제할 방법이 없습니다.

마우스에서 버튼을 놓을 때까지 기다렸다가 삭제하십시오.

매우 감사합니다! 이것은 정말 기능입니다)) 알아 냈습니다. 이제 모든 것이 작동합니다!

 
안녕하세요!
누가 터키 코드를 수정하는 데 도움이 될까요?
1. fibo를 뒤집습니다. 즉, fibo가 형성된 지그재그 막대를 향해 늘어납니다.
2. 경고를 지정된 수준으로 설정하는 설정에 매개변수를 추가합니다. ...., 즉, 수동 모드에서 나는 경고를 울리고 경고 지점을 표시하는 데 필요한 수준을 나타냅니다...

1-2-3과 같아야 합니다.

미리 감사합니다 ....

예제가 화면에 있고 코드가 첨부되어 있습니다 ....

 //+------------------------------------------------------------------+
//|                                                                  |
//|                 Copyright © 2000-2007, MetaQuotes Software Corp. |
//|                                         http://www.metaquotes.ru |
//+------------------------------------------------------------------+
// 
// 2009.12 - добавлены фибо уровни, "nen"(ом) c форума MQL

#property copyright ""
#property link "ххххх"
#property link "ххххх"
#property description "ххххх"
#property strict

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 clrDarkGray
#property indicator_color2 clrRed
#property indicator_width2 3

//----
extern int     Length          = 6 ;           // Length
extern int     CountBars       = 300 ;         // History
extern bool    fibo            = true ;         // Use FIBO
extern color   colorFibo       = clrSkyBlue ;   // Color FIBO
extern bool    AlertsMessage   = true ;         // Alert Message
extern bool    AlertsSound     = false ;       // Alert Sound
extern bool    AlertsEmail     = false ;       // Alert Email
extern bool    AlertsMobile    = false ;       // Alert Mobile
extern string AlertsSoundFile = "alert.wav" ; // Alert Sound File
//----
double buffer[];
double lBar, hBar;
datetime tiZZ;
double p1,p2;
datetime t1,t2;
double    fi_1[]={ 0 , 0.236 , 0.382 , 0.5 , 0.618 , 0.786 , 1.0 , 1.272 , 1.5 , 1.618 , 1.854 , 2.0 , 2.618 , 3.5 , 4.618 , 5.618 , 6.854 };
string    fitxt100_1[]={ "0.0" , "23.6" , "38.2" , "50.0" , "61.8" , "78.6" , "100.0" , "127.2" , "150.0" , "161.8" , "185.4" , "200.0" , "261.8" , "350.0" , "461.8" , "561.8" , "685.4" };
int Sizefibo;
string TF[]={ "MN" , "W1" , "D1" , "H4" , "H1" , "m30" , "m15" , "m5" , "m1" };
string Period_tf;
double Arr[];
int LastSwing;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void init()
  {
   SetIndexStyle ( 0 , DRAW_SECTION , 0 , 1 );
   SetIndexBuffer ( 0 ,buffer);
   SetIndexLabel ( 0 , "Value" );
   SetIndexDrawBegin( 0 , 0 );
   
   SetIndexStyle ( 1 , DRAW_ARROW );
   SetIndexBuffer ( 1 ,Arr);
   SetIndexArrow ( 1 , 159 );
   SetIndexLabel ( 1 , "Arr" );

   
   Sizefibo= ArraySize (fi_1);
   switch ( Period ())
     {
       case 1      : {Period_tf=TF[ 8 ]; break ;}
       case 5      : {Period_tf=TF[ 7 ]; break ;}
       case 15     : {Period_tf=TF[ 6 ]; break ;}
       case 30     : {Period_tf=TF[ 5 ]; break ;}
       case 60     : {Period_tf=TF[ 4 ]; break ;}
       case 240    : {Period_tf=TF[ 3 ]; break ;}
       case 1440   : {Period_tf=TF[ 2 ]; break ;}
       case 10080 : {Period_tf=TF[ 1 ]; break ;}
       case 43200 : {Period_tf=TF[ 0 ]; break ;}
     }
    LastSwing = 0 ;
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function. Начало.              |
//+------------------------------------------------------------------+
int deinit()
  {
   ObjectDelete ( "_%fibo" );
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function. Конец.               |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void start()
  {
   int shift, zu, zd, Swing, Swing_n, i, i1= 0 , i2= 0 ;
   double HH, LL, BH, BL;
//----
   if (tiZZ!=Time[ 0 ] || lBar<Low[ 0 ] || hBar>High[ 0 ]) // micmed+nen
     {
      tiZZ=Time[ 0 ]; lBar=Low[ 0 ]; hBar=High[ 0 ];
       if (( Bars -IndicatorCounted()- 1 )> 2 ) ArrayInitialize (buffer, EMPTY_VALUE );
     }
   else return ;

   Swing= 0 ;
   Swing_n= 0 ;
   shift=CountBars- 1 ;
   zu=shift;
   zd=shift;
   BH=High[shift];
   BL=Low[shift];
//----
   for (shift=CountBars- 1 ; shift>= 0 ; shift--)
     {
      HH=High[Highest( NULL , 0 , MODE_HIGH ,Length,shift+ 1 )];
      LL=Low [Lowest ( NULL , 0 , MODE_LOW ,Length,shift+ 1 )];
       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];}
         if (Swing== 1 ) {buffer[zd]=BL; i1=i2; i2=zd;}
         if (Swing==- 1 ) {buffer[zu]=BH; i1=i2; i2=zu;}
         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;
     }
   
     if (LastSwing!=Swing) 
     {
       if (LastSwing!= 0 )
        { 
           if (AlertsMessage || AlertsEmail || AlertsMobile || AlertsSound)
           {
             string message = (WindowExpertName()+ " - " + Symbol ()+ "  " +PeriodString()+ " - Change FIBO" );

             if (AlertsMessage) Alert (message);
             if (AlertsEmail)   SendMail ( Symbol ()+ " - " +WindowExpertName()+ " - " ,message);
             if (AlertsMobile)   SendNotification (message);
             if (AlertsSound)   PlaySound (AlertsSoundFile);
           }
        
          Arr[ 0 ] = Close[ 0 ]; 
        } 
       LastSwing = Swing;
     }  

   if (fibo)
     {
      p1=buffer[i1]; t1=Time[i1];
      p2=buffer[i2]; t2=Time[i2];

       string nameObj= "_%fibo" ;        
       ObjectDelete (nameObj);
       ObjectCreate (nameObj, OBJ_FIBO , 0 ,t1,p1,t2,p2);

      ObjectSet(nameObj, OBJPROP_LEVELCOLOR ,colorFibo);

      ObjectSet(nameObj, OBJPROP_COLOR ,CLR_NONE);
      ObjectSet(nameObj, OBJPROP_STYLE , STYLE_DOT );
      ObjectSet(nameObj, OBJPROP_WIDTH , 0 );
      ObjectSet(nameObj, OBJPROP_LEVELSTYLE , STYLE_DOT );
      ObjectSet(nameObj, OBJPROP_LEVELWIDTH , 0 );
      ObjectSet(nameObj, OBJPROP_BACK , true );

      ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefibo);
       for (i= 0 ;i<Sizefibo;i++)
        {
         ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi_1[i]);
         ObjectSetFiboDescription(nameObj, i, fitxt100_1[i]+ " " +DoubleToStr((p1-p2)*fi_1[i]+p2, Digits )+ "-" +Period_tf); 
        }
     }

  }
//+------------------------------------------------------------------+
//| Period String                                                    |
//+------------------------------------------------------------------+
string PeriodString()
  {
     switch ( _Period ) 
     {
         case PERIOD_M1 :   return ( "M1" );
         case PERIOD_M5 :   return ( "M5" );
         case PERIOD_M15 : return ( "M15" );
         case PERIOD_M30 : return ( "M30" );
         case PERIOD_H1 :   return ( "H1" );
         case PERIOD_H4 :   return ( "H4" );
         case PERIOD_D1 :   return ( "D1" );
         case PERIOD_W1 :   return ( "W1" );
         case PERIOD_MN1 : return ( "MN1" );
         default : return ( "M" +( string ) _Period );
     }  
     return ( "M" +( string ) _Period ); 
  }
//+------------------------------------------------------------------+
Документация по MQL5: Сетевые функции / SendNotification
Документация по MQL5: Сетевые функции / SendNotification
  • www.mql5.com
SendNotification - Сетевые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
파일:
kyucri.jpg  102 kb
 
btc.mmd :
안녕하세요!
칠면조 손질을 도와줄 사람
1. fibo를 뒤집습니다. 즉, fibo가 형성된 지그재그 막대를 향해 늘어납니다.
2. 경고를 지정된 수준으로 설정하는 설정에 매개변수를 추가합니다. ...., 즉, 수동 모드에서 나는 경고를 울리고 경고 지점을 표시하는 데 필요한 수준을 나타냅니다...

1-2-3과 같아야 합니다.

미리 감사합니다 ....

예는 화면에 있고 코드는 첨부되어 있습니다 ....




//+----------------------------------------------- --------------------+
//| |
//| Copyright © 2000-2007, MetaQuotes Software Corp. |
//| http://www.metaquotes.ru |
//+----------------------------------------------- --------------------+
// xxxxxxxxxxxxxxx
// 2009.12 - MQL 포럼에서 fibo 레벨 "nen"을 추가했습니다.

#재산권 ""
#속성 링크 "xxxxxx"
#속성 링크 "xxxxxx"
# 속성 설명 "хххххххх"
#속성엄격

시작하려면 신발을 벗고 코드를 인간적으로 삽입하십시오 .

 //+------------------------------------------------------------------+
//|                                                                  |
//|                 Copyright © 2000-2007, MetaQuotes Software Corp. |
//|                                         http://www.metaquotes.ru |
//+------------------------------------------------------------------+
// хххххххххххх
// 2009.12 - добавлены фибо уровни, "nen"(ом) c форума MQL.

#property copyright ""
#property link "ххххх"
#property link "хххххх"
#property description "ххххххххх"
#property strict
 

안녕하세요 사람들!

이 표시기를 켰을 때 차트에 아무 것도 표시되지 않는 이유를 말씀해 주시겠습니까?

오류 없이 컴파일되고 rsi_channel이 폴더에 있습니다... 이해가 안 됩니다(

파일: