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

 
Aleksey Mavrin:

需要 )

阿列克谢,谢谢你!

请告诉一个没有经验的人:
,MQL5/Sounds文件夹应该(可能)在我们的生活中发挥什么作用?(我的问题在第1221页的顶部)

 

你能告诉我为什么只有在新的刻度线到来时,柱子才会改变它在图表上的位置?MT5,Just2Trade 6月5日的构建

#include <Controls\Dialog.mqh>
#include <Controls\Button.mqh>
CAppDialog Main;
CBmpButton nadpr, nadlos, nadot;
CBmpButton podpr, podlos, podot;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);
   Main.Create(0,"Main",0,50,50,260,130);
   Main.Run();
      
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Main.Destroy(reason);
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // идентификатор события   
                  const long& lparam,   // параметр события типа long 
                  const double& dparam, // параметр события типа double 
                  const string& sparam)  // параметр события типа string
{
  Main.OnEvent(id,lparam,dparam,sparam);
}
 
Nikita Chernyshov:

你能告诉我为什么只有在新的刻度线到来时,柱子才会改变它在图表上的位置?MT5,Just2Trade 6月5日的构建

比较你的代码和来自标准[data folder]\MQL5\Experts\Examples\Controls\Controls.mq5的面板例子。

 

下午好,给行家们一个问题。

我试图建立这样一个结构--一个函数,四个变量作为参数由链接输入,还有一个数组,这四个变量的计算数据将在函数中获得。程序中有两个这样的数组(将被传入函数)--之字形的上端和下端。 该函数应计算出绘制TrendLine的点。

问题是--如何检查两个数组中的哪一个在特定的迭代中被使用,以对计算应用+或-?

如果表述得很别扭,请再问,我会很高兴地解释。这里附的是一个施工大纲。

//+------------------------------------------------------------------+ 
//| Вычисляем значения точек привязки трендовых линий                | 
//+------------------------------------------------------------------+ 
void CalculateTrendPoints(datetime &time_1, double &price_1, 
                          datetime &time_2, double &price_2, double &zigbuf[])  
{
   int ind_time_1, ind_time_2;
   int size_zigbuf = ArraySize(zigbuf);
   for(int i = 0; i < size_zigbuf; i++){if(zigbuf[i] != EMPTY_VALUE)break;}
      price_1    = zigbuf[i];
      ind_time_1 = i;
   for(int i = ind_time_1 + 1; i < size_zigbuf; i++){if(zigbuf[i] != EMPTY_VALUE)break;}
      price_2    = zigbuf[i];
      ind_time_2 = i;

   //Дальше будут расчеты, в которых в зависимости от того для чего используется функция
   //(построение ТрЛайн для верхних пиков или для нижних)будет применяться 
+ или - , < или >. 
   //Думаю что легче всего понять данное конкретное применение по тому, какой массив зашел в параметрах (&zigbuf[]), 
   //Вопрос не сложный - как это написать???   
} 

这意味着zigbuf[] 参数将只有两个选项可供替换-- ZigzagPeakBuffer[]或ZigzagBottomBuffer[]。我怎样才能在函数中检查哪个选项是当前设置的?


 

到目前为止,我已经发明了确定哪一个数组的方法--通过比较发现的值,哪一个符合,那一个就是我们的。但肯定有一个更好、更短的解决方案。

知识渊博--请告诉我们!!!。

//+------------------------------------------------------------------+ 
//| Вычисляем значения точек привязки трендовых линий                | 
//+------------------------------------------------------------------+ 
void CalculateTrendPoints(datetime &time_1, double &price_1, 
                          datetime &time_2, double &price_2, double &zigbuf[])  
{
   int ind_time_1 = 0;
   int ind_time_2 = 0;
   int size_zigbuf = ArraySize(zigbuf);
   for(int i = 0; i < size_zigbuf; i++)
      {
         if(zigbuf[i] != EMPTY_VALUE)
            price_1    = zigbuf[i];
            ind_time_1 = i;
            break;
      }
   for(int i = ind_time_1 + 1; i < size_zigbuf; i++)
      {
         if(zigbuf[i] != EMPTY_VALUE)
            {
               if(zigbuf[i] == ZigzagPeakBuffer[i] && zigbuf[i] > price_1)
                  {
                     price_2    = zigbuf[i];
                     ind_time_2 = i;
                     break;
                  }
               if(zigbuf[i] == ZigzagBottomBuffer[i] && zigbuf[i] < price_1)
                  {
                     price_2    = zigbuf[i];
                     ind_time_2 = i;
                     break;
                  }
            }
      }
   //Дальше будут расчеты, в которых в зависимости от того для чего используется функция
   //(построение ТрЛайн для верхних пиков или для нижних)будет применяться + или - , < или >.
   //Думаю что легче всего понять данное конкретное применение по тому, какой массив зашел в параметрах (&zigbuf[]), 
   // Вопрос не сложный - как это написать???   
}
 

大家好))。


问题:OBJ_FIBO 在绘图时没有在图形(OBJPROP_TOOLTIP)上给出一个弹出窗口。所有的东西都是通过OBJPOP_TXT/来组织图形化的,在FIBO中如何以及是否有可能通过工具提示来制作一个弹出窗口?

目的:当把鼠标悬停在飞博水平上时,弹出一个像HLINE(作为一个例子)的窗口。

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
При создании графического объекта функцией ObjectCreate() необходимо указать тип создаваемого объекта, который может принимать одно из значений перечисления ENUM_OBJECT. Дальнейшие уточнения свойств созданного объекта возможно с помощью функций по работе с графическими объектами.
 
kopeyka2:

大家好))。


问题:OBJ_FIBO 在绘图时没有在图形(OBJPROP_TOOLTIP)上给出一个弹出窗口。所有的东西都是通过OBJPOP_TXT/来组织图形化的,在FIBO中如何以及是否有可能通过工具提示来制作一个弹出窗口?

目的:当把鼠标悬停在Fibo水平上时,弹出一个像HLINE(作为一个例子)的窗口。

使用OBJPROP_TEXT属性

ObjectSetString(chart_ID,name,OBJPROP_TEXT,"Это всплывающая подсказка");
 
我如何摆脱我不使用的演示产品? 我不断收到系统发出的信息 "新版本........"。
[删除]  
Sergey Voytsekhovsky:

到目前为止,我已经发明了确定哪一个数组的方法--通过比较发现的值,哪一个符合,那一个就是我们的。但肯定有一个更好、更短的解决方案。

知道的人--请告诉我!!!。

为什么你要编造自己的问题?他们将是足够的,因为它是。

只要做两个独立的功能。

 
你能告诉我如何从一个集合文件中获得一个MqlParam 数组吗