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

 
Iosebi Tavadze:
也许我走错了线,愿诸神原谅我。我需要写一个指标,它将从安装在地下室的四或五个指标的组合中给出一个信号。或一个现成的顾问。可能的建议请!!!!!!!!!!

如果你需要有人为你写,请到这里

如果你想自己做,请告诉我们你不能做什么,并公布你的代码。

 
simeon068 :
我怎样才能将专家顾问添加到mql5文件夹中,并使其显示在顾问部分?

在终端,在 "文件 "菜单中,选择 "打开数据目录" - 探索器将打开。在其中,进入MQL5 / Experts文件夹 - 将您的顾问放在其中或任何子文件夹中。然后在终端导航器的右键菜单中选择 "更新"。

 

谁能提供建议!!!什么是警告,如何修复它?

快照3

在这个地方

// если активны входящие параметры, использующие значение текущей цены по инструменту,
// тогда пытаемся получить текущие значения
   if(hide_PRICE_HIGH>0 || hide_PRICE_LOW>0 || hide_SPREAD>0)
     {
      SymbolInfoTick(name, lastme);
      if(lastme.bid==0)
        {
         Alert("("+name+") Получить значение BID не удалось. Некоторые функции фильтрации могут не работать.");
        }
     }
// Скрыть символы, у которых спред:
   if(hide_SPREAD>0 && lastme.bid>0)
     {
      switch(hide_SPREAD)
        {
         // если текущий спред больше 0.05% от цены - пропускаем символ
         case spread_b05:
            if(((SymbolInfoInteger(name, SYMBOL_SPREAD)*SymbolInfoDouble(name, SYMBOL_POINT))/lastme.bid)*100 > 0.05)
              {
               isskip=true;
              }
            break;
         // если текущий спред больше 0.1% от цены - пропускаем символ
         case spread_b1:
            if(((SymbolInfoInteger(name, SYMBOL_SPREAD)*SymbolInfoDouble(name, SYMBOL_POINT))/lastme.bid)*100 > 0.1)
              {
               isskip=true;
              }
            break;
         // если текущий спред больше 0.15% от цены - пропускаем символ
         case spread_b15:
            if(((SymbolInfoInteger(name, SYMBOL_SPREAD)*SymbolInfoDouble(name, SYMBOL_POINT))/lastme.bid)*100 > 0.15)
              {
               isskip=true;
              }
            break;
         // если текущий спред меньше 0.15% от цены - пропускаем символ
         case spread_l15:
            if(((SymbolInfoInteger(name, SYMBOL_SPREAD)*SymbolInfoDouble(name, SYMBOL_POINT))/lastme.bid)*100 < 0.15)
              {
               isskip=true;
              }
            break;
         // если текущий спред меньше 0.1% от цены - пропускаем символ
         case spread_l1:
            if(((SymbolInfoInteger(name, SYMBOL_SPREAD)*SymbolInfoDouble(name, SYMBOL_POINT))/lastme.bid)*100 < 0.1)
              {
               isskip=true;
              }
            break;
         // если текущий спред != 0.01 - пропускаем символ
         case spread_c1:
            if(SymbolInfoInteger(name, SYMBOL_SPREAD)*SymbolInfoDouble(name, SYMBOL_POINT) > 0.01)
              {
               isskip=true;
              }
            break;
         // если текущий спред > 0.03 - пропускаем символ
         case spread_c3:
            if(SymbolInfoInteger(name, SYMBOL_SPREAD)*SymbolInfoDouble(name, SYMBOL_POINT) > 0.03)
              {
               isskip=true;
              }
            break;
         // если текущий спред > 0.07 - пропускаем символ
         case spread_c7:
            if(SymbolInfoInteger(name, SYMBOL_SPREAD)*SymbolInfoDouble(name, SYMBOL_POINT) > 0.07)
              {
               isskip=true;
              }
            break;
         // если текущий спред > 0.1 - пропускаем символ
         case spread_c10:
            if(SymbolInfoInteger(name, SYMBOL_SPREAD)*SymbolInfoDouble(name, SYMBOL_POINT) > 0.1)
              {
               isskip=true;
              }
            break;
        }
     }
 
Alexsandr San:

谁能提供建议!!!什么是警告,如何修复它?

在这个地方


我想我把它修好了--只是我不知道这是否正确?把它放在那里。

更正的快照

 
Alexsandr San:

谁能提供建议!!!什么是警告,如何修复它?

就在那里


你可能在使用一个未初始化的lastme变量。你在没有初始化的情况下声明了它。它不保证被SymbolInfoTick()所填充。

马上声明一个带有初始化的变量:MqlTick lastme={0};

 
Artyom Trishkin:

有可能使用一个未初始化的lastme变量。你在没有初始化的情况下声明了它。它不保证被SymbolInfoTick()所填充。

马上声明一个带有初始化的变量:MqlTick lastme={0};

非常感谢!警告已经消失了。身体健康,万事如意!!!

--------------------------

我把它放回了里面--如你所示。


很好的工具,我从这里下载了它https://www.mql5.com/ru/articles/5614

附加的文件:
finder.mq5  296 kb
finder.mq4  296 kb
 

你能告诉我如何从图书馆索取数据吗?

我正试图创建一个具有数据输入界面的猫头鹰

看起来像这样

输入领域代码

//+------------------------------------------------------------------+
//| Создаёт поле ввода 1                                             |
//+------------------------------------------------------------------+
bool CProgram::CreateSpinEdit1(const int x_gap,const int y_gap,string text)
  {
//--- Сохраним указатель на окно
   m_spin_edit1.WindowPointer(m_window);
//--- Координаты
   int x=m_window.X()+x_gap;
   int y=m_window.Y()+y_gap;
//--- Значение
   double v=(m_spin_edit1.GetValue()==WRONG_VALUE) ? 0 : m_spin_edit1.GetValue();
//--- Установим свойства перед созданием
   m_spin_edit1.XSize(204);
   m_spin_edit1.YSize(24);
   m_spin_edit1.EditXSize(80);
   m_spin_edit1.MaxValue(10000);
   m_spin_edit1.MinValue(0);
   m_spin_edit1.StepValue(10*Point);
   m_spin_edit1.SetDigits(Digits);
   m_spin_edit1.SetValue(v);
   m_spin_edit1.ResetMode(true);
   m_spin_edit1.AreaColor(clrWhite);
//--- Создадим элемент управления
   if(!m_spin_edit1.CreateSpinEdit(m_chart_id,m_subwin,text,x,y))
      return(false);
//--- Добавим объект в общий массив групп объектов
   CWndContainer::AddToElementsArray(0,m_spin_edit1);
   return(true);
  }

我怎样才能查询到?

m_spin_edit1.GetValue()
 
MakarFX:

如何申请?

大概是这样的。

имя_объекта. m_spin_edit1.GetValue()

 
Igor Makanu:

我想是的。

对象名称是什么意思?

我必须这样做。

   double OrderBuy = m_spin_edit1.GetValue();

但在这种情况下,错误

'm_spin_edit1' - 未声明的标识符 TestLibrary.mq4 56 20

 
MakarFX:

对象名称是什么意思?

我怀疑我能解释,如果你问的是这个问题的话

一个物体是...比方说,一个类型为的变量

在你的代码部分,有一个类CProgram

它必须写在代码的某个地方

CProgram MyProgram;

而你将需要调用

 double OrderBuy = MyProgram.m_spin_edit1.GetValue();