初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1307

 
你好!

我把一个指标从MQL4转移到MQL5,不明白为什么它不能工作。

void GetDellName(string name_n = " ")
  {
   string vName;
   for(int i=ObjectsTotal()-1; i>=0; i--)
     {
      vName = ObjectName(i);
      if(StringFind(vName,name_n) !=-1)
         ObjectDelete(vName);
     }
  }

MQL5中的MetaEditor抱怨说。


'ObjectsTotal' - 错误的参数计数

'ObjectName' - 错误的参数计数

ObjectDelete' - 错误的参数计数

在MQL4中一切正常,没有错误。

请帮助我理解

 
Sprut 185:
你好!

我把一个指标从MQL4转移到MQL5,不明白为什么它不能工作。


MQL5中的MetaEditor抱怨说。


'ObjectsTotal' - 错误的参数计数

'ObjectName' - 错误的参数计数

ObjectDelete' - 错误的参数计数

在MQL4中一切正常,没有错误。

请帮助我理解

1.请正确粘贴代码。当你编辑你的信息时,按下按钮编码 ,在弹出的窗口中粘贴代码(我第一次编辑你的信息)。

2.仔细阅读帮助。例如,ObjectsTotal

int  ObjectsTotal(
   long  chart_id,           // идентификатор графика
   int   sub_window=-1,      // индекс окна
   int   type=-1             // тип объекта     
   );
Документация по MQL5: Графические объекты / ObjectsTotal
Документация по MQL5: Графические объекты / ObjectsTotal
  • www.mql5.com
ObjectsTotal - Графические объекты - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Sprut 185:

这个怎么样?- 删除所有水平线和趋势线

//+------------------------------------------------------------------+
//|                                                  GetDellName.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   GetDellName();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int GetDellName(void)
  {
   int nHLines=ObjectsTotal(0,-1,OBJ_HLINE),
       nTrendLines=ObjectsTotal(0,-1,OBJ_TREND),i;
   string objName;
   for(i=0; i<nHLines; i++)
     {
      objName=ObjectName(0,i,0,OBJ_HLINE);
      ObjectDelete(0,objName);
     }
   for(i=0; i<nTrendLines; i++)
     {
      objName=ObjectName(0,i,0,OBJ_TREND);
      ObjectDelete(0,objName);
     }
   return(GetDellName());
  }
//+------------------------------------------------------------------+

-----------------------------------------------------\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\------------------------------------------------------

或者像这样删除所有对象

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int GetDellName(void)
  {
   int ObjectsName=ObjectsTotal(0,-1,-1),i;
   string objName;
   for(i=0; i<ObjectsName; i++)
     {
      objName=ObjectName(0,i,0,-1);
      ObjectDelete(0,objName);
     }
   return(GetDellName());
  }
//+------------------------------------------------------------------+

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

或者像这样--如阿列克谢-维克多罗夫 所说。

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int GetDellName(void)
  {
   ObjectsDeleteAll(0,-1,-1);
//--- "clear" comment
   Comment("");
   return(false);
  }
//+------------------------------------------------------------------+
 
SanAlex:

这个怎么样?- 删除所有水平线和趋势线

为什么会有一个循环?

int  ObjectsDeleteAll(
   long  chart_id,            // идентификатор графика
   int   sub_window=-1,       // индекс окна
   int   type=-1              // тип объекта для удаления
   );
 
Alexey Viktorov:

为什么这里会有一个循环?

老实说!?- 我不知道!- 只是为了在早晨占据一些时间。

 
SanAlex:

这个怎么样?- 删除所有水平线和趋势线

-----------------------------------------------------\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\------------------------------------------------------

或者像这样删除所有对象

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

或者像阿列克谢-维克多罗夫 说的那样。

也可以这样说

//+------------------------------------------------------------------+
//|                                                  GetDellName.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

string   m_name[]= {"1 имя объекта","2 имя объекта","3 имя объекта","4 имя объекта","5 имя объекта","6 имя объекта"};
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   GetDellName();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int GetDellName(void)
  {
   for(int i=0; i<ArraySize(m_name); i++)
     {
      ObjectDelete(0,m_name[i]);
     }
   return(false);
  }
//+------------------------------------------------------------------+

或像这样

//+------------------------------------------------------------------+
//|                                                     FILTER_1.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//---
sinput string InpName_1 = "HorizontalTrend Line_1"; // FILTER_1
sinput string InpName   = "HorizontalTrend Line";   // FILTER
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//---
   EventSetMillisecondTimer(1);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   EventKillTimer();
   GetDellName("");
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick(void)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTimer(void)
  {
   MqlRates rates[],rates_1[];
   int start_pos=0,count=1;
   if(CopyRates(Symbol(),Period(),start_pos,count,rates)!=count)
     {
      return;
     }
   if(CopyRates(Symbol(),Period(),start_pos,count,rates_1)!=count)
     {
      return;
     }
//---
   double price_line=0.0;
   if(ObjectFind(0,InpName)>=0)
     {
      long object_type=ObjectGetInteger(0,InpName,OBJPROP_TYPE);
      if(object_type==OBJ_HLINE)
         price_line=ObjectGetDouble(0,InpName,OBJPROP_PRICE);
      else
         if(object_type==OBJ_TREND)
            price_line=ObjectGetValueByTime(0,InpName,rates[0].time,0);
      if(price_line>0.0)
        {
         if(rates[0].open<price_line)
           {
            Alert("1");
            GetDellName(InpName);
           }
        }
     }
//---
   double price_line_1=0.0;
   if(ObjectFind(0,InpName_1)>=0)
     {
      long object_type_1=ObjectGetInteger(0,InpName_1,OBJPROP_TYPE);
      if(object_type_1==OBJ_HLINE)
         price_line_1=ObjectGetDouble(0,InpName_1,OBJPROP_PRICE);
      else
         if(object_type_1==OBJ_TREND)
            price_line_1=ObjectGetValueByTime(0,InpName_1,rates_1[0].time,0);
      if(price_line_1>0.0)
        {
         if(rates_1[0].open>price_line_1)
           {
            Alert("2");
            GetDellName(InpName_1);
           }
        }
     }
//---
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int GetDellName(string objName)
  {
   int nHLines=ObjectsTotal(0,-1,OBJ_HLINE),
       nTrendLines=ObjectsTotal(0,-1,OBJ_TREND),i;
   for(i=0; i<nHLines; i++)
     {
      objName=ObjectName(0,i,0,OBJ_HLINE);
      ObjectDelete(0,objName);
     }
   for(i=0; i<nTrendLines; i++)
     {
      objName=ObjectName(0,i,0,OBJ_TREND);
      ObjectDelete(0,objName);
     }
   return(false);
  }
//+------------------------------------------------------------------+
 

需要帮助设置MT5 .

1.问题 在MT5中,我已经切换到DEMO账户,但下单的按钮没有激活,在底部可以看到没有与服务器连接,2019年和2020年的合同代号从你的数据库中加载到列表中,但没有实际的合同。

 
gorod258:
需要帮助从头开始设置MT5。

https://www.metatrader5.com/ru/terminal/help/startworking/settings

Настройки платформы - Начало работы - Справка по MetaTrader 5
Настройки платформы - Начало работы - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая платформа обладает множеством настроек, что позволяет организовать работу в ней так, как это удобно именно вам. Выполните команду...
 

我预先设置了它,但由于某些原因,部分功能不能工作。

1.问题 在MT5中,我已经切换到DEMO账户,但下单的按钮没有激活,你可以在底部看到没有与服务器连接,2019年和2020年的合同代号从你的数据库中加载到列表中,但没有实际的合同。

你能帮忙吗?

 
SanAlex:

老实说!?- 我不知道!- 只是在早上做一些事情。

好吧,无论如何他都会删除它,不附带任何条件)。