新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1398

 
Andrey Sokolov:

谢谢你。所以它只在mt5中出现。如果有人知道如何从EA中添加一个指标,请告诉我。

你也可以将指标和专家保存在一个模板上,随着功能的运行,将为你安装一个专家和指标。

//+------------------------------------------------------------------+
//|                                                  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/ru/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/ru/chart_operations/chartapplytemplate

mt5 文件https://www.mql5.com/ru/docs/chart_operations/chartapplytemplate

谢谢你的回答。但我需要的是没有任何前奏的情况。

 

MT4中有趣的小故障


如果你用按下的cntrl按钮在图表中创建了一个对象的副本,专家顾问中会捕捉到id ==CHARTEVENT_OBJECT_CREATE 事件。

如果我从专家顾问中删除这个对象,就会弹出错误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()),添加你的指标

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()),添加你的指标

MT4必须!
 
Sergey Likho:

MT4中有趣的小故障


如果你用按下的cntrl按钮在图表中创建了一个对象的副本,专家顾问中会捕捉到id ==CHARTEVENT_OBJECT_CREATE 事件。

如果我从专家顾问中删除这个对象,就会弹出错误4202 - 对象不存在。同时,该对象已经在图表上。


该怎么做?我如何删除该对象?

这不是一个故障,这是一个特点)
,用户用鼠标拿着对象--不能删除它。

等到鼠标按钮被释放后,再将其删除。

 
Taras Slobodyanik:

这不是一个故障,而是一个功能)
,用户用鼠标拿着一个物体--没有办法删除它。

等到鼠标按钮被释放,然后再删除。

非常感谢您!这真的是一个错误))。梳理了一下。现在一切都正常了!

 
大家好!
,谁可以帮助调整一个指标的代码...
1.反转菲波,即菲波向形成的之字形棍子 拉伸
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.转动菲波,即菲波向形成的棒状 人字形拉伸
2.添加参数 "将警报设置为指定水平....",即我手动指出我希望它嗡嗡作响的水平并显示警报点...

应该会有类似1-2-3的结果

提前感谢 ....

截图上的例子,代码附在




//+------------------------------------------------------------------+
//||
//| Copyright © 2000-2007, MetaQuotes Software Corp.
//| http://www.metaquotes.ru |
//+------------------------------------------------------------------+
// хххххххх
// 2009.12 - 增加了Fibo水平,"nen"(由)来自MQL论坛。

#财产版权""
#属性链接 "ххххх"
#属性链接 "XXXXX"
#财产描述 "xxxxxxxxx"
#属性严格

对于初学者来说,删除你的欺骗行为,以人性化的方式粘贴代码

//+------------------------------------------------------------------+
//|                                                                  |
//|                 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在文件夹中......不明白(

附加的文件: