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

 
HUNTERGOOD:

大家下午好。亲爱的程序员,请帮我插入一行,可以指定一个声音文件,对于每个Alert3.Lv1;2;3,触发你指定的不同声音。

大家下午好。亲爱的程序员,请帮助我在Alert3.Lv1;2;3的声音文件中插入一个字符串来触发不同的声音。

大家下午好。亲爱的程序员,请帮助我在Alert3.Lv1;2;3的声音文件中插入一个字符串来触发不同的声音。

开始制作,你会得到帮助。

开始制作,你会得到帮助。

开始制作,你会得到帮助。

 

帮助,溜冰鞋没有滑倒。

试图学习如何使用图形面板 并创建我自己的图形面板

我创建了2个矩形,1个主矩形,当移动面板时,面板上的所有对象都应该面向它的坐标。

我在ChartEvent中做了这样一个条件,现在当我移动主矩形时,第二个矩形在2-3秒后才移动,如何解决这个问题?
我还在条件中尝试了CHARTEVENT_MOUSE_MOVE,效果相同

input string ds;//Параметры заднего фона панели
input int x_offset_anchor=100;
input int y_offset_anchor=100;
int anchor_width=150;
int anchor_height=20;
int back_height=100;
input color anchor_color=clrBlue, back_color=clrAquamarine, clrBorder=clrAliceBlue;
input string ds2;//
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   RectLabelCreate(0,"Back_panel_anchor_point",0,x_offset_anchor,y_offset_anchor,anchor_width,anchor_height,anchor_color,BORDER_SUNKEN,CORNER_LEFT_UPPER,clrBorder,STYLE_SOLID,2,false,true,true,0);
   RectLabelCreate(0,"Back_panel",0,x_offset_anchor,y_offset_anchor+anchor_height,anchor_width,back_height,back_color,BORDER_SUNKEN,CORNER_LEFT_UPPER,clrBorder,STYLE_SOLID,1,false,false,true,0);
   
   
   
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);
//---
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason){
   ObjectsDeleteAll(0,-1,-1);
}  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   if(id == CHARTEVENT_OBJECT_DRAG && sparam == "Back_panel_anchor_point")
      {
         ObjectDelete(0,"Back_panel");
         RectLabelCreate(0,"Back_panel",0,ObjectGetInteger(0,"Back_panel_anchor_point", OBJPROP_XDISTANCE),ObjectGetInteger(0,"Back_panel_anchor_point", OBJPROP_YDISTANCE)+anchor_height,anchor_width,back_height,back_color,BORDER_SUNKEN,CORNER_LEFT_UPPER,clrBorder,STYLE_SOLID,1,false,false,true,0);
      }   
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+ 
//| Создает прямоугольную метку                                      | 
//+------------------------------------------------------------------+ 
bool RectLabelCreate(const long             chart_ID=0,               // ID графика 
                     const string           name="RectLabel",         // имя метки 
                     const int              sub_window=0,             // номер подокна 
                     const int              x=0,                      // координата по оси X 
                     const int              y=0,                      // координата по оси Y 
                     const int              width=50,                 // ширина 
                     const int              height=18,                // высота 
                     const color            back_clr=C'236,233,216',  // цвет фона 
                     const ENUM_BORDER_TYPE border=BORDER_SUNKEN,     // тип границы 
                     const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // угол графика для привязки 
                     const color            clr=clrRed,               // цвет плоской границы (Flat) 
                     const ENUM_LINE_STYLE  style=STYLE_SOLID,        // стиль плоской границы 
                     const int              line_width=1,             // толщина плоской границы 
                     const bool             back=false,               // на заднем плане 
                     const bool             selection=false,          // выделить для перемещений 
                     const bool             hidden=true,              // скрыт в списке объектов 
                     const long             z_order=0)                // приоритет на нажатие мышью 
  { 
//--- сбросим значение ошибки 
   ResetLastError(); 
//--- создадим прямоугольную метку 
   if(!ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0)) 
     { 
      Print(__FUNCTION__, 
            ": не удалось создать прямоугольную метку! Код ошибки = ",GetLastError()); 
      return(false); 
     } 
//--- установим координаты метки 
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); 
//--- установим размеры метки 
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); 
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); 
//--- установим цвет фона 
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); 
//--- установим тип границы 
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border); 
//--- установим угол графика, относительно которого будут определяться координаты точки 
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 
//--- установим цвет плоской рамки (в режиме Flat) 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 
//--- установим стиль линии плоской рамки 
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style); 
//--- установим толщину плоской границы 
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width); 
//--- отобразим на переднем (false) или заднем (true) плане 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 
//--- включим (true) или отключим (false) режим перемещения метки мышью 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); 
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); 
//--- установим приоритет на получение события нажатия мыши на графике 
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 
//--- успешное выполнение 
   return(true); 
  } 
 
Roman Sharanov:

帮助,溜冰鞋不滑了。

试图学习如何使用图形面板并创建我自己的图形面板。

我创建了2个矩形,1个主矩形,当移动它时,所有的面板对象都应该面向这个坐标。

我在ChartEvent中做了这样一个条件,现在当我移动主矩形时,第二个矩形在2-3秒后才移动,怎么做?
也试过在条件中使用CHARTEVENT_MOUSE_MOVE,效果相同。

创建一个对象 和它的移动之后,我需要做ChartRedraw()。

 
Vladislav Andruschenko:

创建一个对象 并移动它之后,你必须做ChartRedraw()。

是的,这就好了。所以不可能让它顺利地滑行,对吗?

更新了一个条件,只有当这个主矩形被选中时才会重绘,现在可以了,谢谢你的帮助!)

 

从另一个主题转帖。也许我会摇身一变,得到一些帮助。


<当地的专家让我想起了我的同学(哦,那是多久以前的事了)--他知道所有的规则,所有的公式,但是什么时候应用哪些,他不能马上想到,几乎所有的东西都要过一遍,这样他就永远跟不上分配的时间这里也是如此:他们知道很多,但他们看不到解决方案,他们只是凭 "直觉 "工作。在学院里,我们被教导要在没有数字和公式的情况下解决问题,只有这样你才会清楚地知道要应用哪些公式。新加入MKL4的人不了解语言的微妙之处,而这正是他们需要帮助的地方(不是指 "阅读教科书")。但没有人可以告诉你开仓/平仓的陷阱也许他们不知道?所以他们对我的问题听之任之......>。

 
问候,帮助把当前的价格 写进文件。
 
lil_lil:
问候,帮助把当前的价格 写进文件。

请看这里

 
Artyom Trishkin:

开始做,你会得到帮助。

开始做,你会得到帮助。

开始做,你会得到帮助。

我欣赏你的讽刺,只是不是好的方式。我应该开始做什么?如果我知道从哪里开始,从哪里开始,从哪里结束,我可能就不会对这个论坛上更有经验的坐家们的帮助感兴趣。我只是觉得一个精通这种活动的人,也就是编程,对我来说,在一些特定的地方放上一些字符串不是问题,这样我就可以在指示器中指出某个声音文件。你让我 "开始",我应该从哪些基础知识开始掌握这门伟大而不可捉摸的编码艺术,这样我就会知道我需要把这些相同的字符串正确地放在哪里? 以下是我的意思....

 
HUNTERGOOD:

我很欣赏你的讽刺,只是没有理由。我应该开始做什么?如果我知道从哪里开始,从哪里开始,从哪里结束,我可能就不会对这个论坛中更有经验的成员的帮助表现出兴趣。我只是觉得一个精通这种活动的人,也就是编程,对我来说,在一些特定的地方放上一些字符串不是问题,这样我就可以在指示器中指出某个声音文件。你让我 "开始",我应该从哪些基础知识开始掌握这门伟大而不可捉摸的编码艺术,这样我就会知道我需要把这些相同的字符串正确地放在哪里? 这就是我的意思....

指示器不工作,只有警报,只有1种声音。
 
Alexey Viktorov:

请看这里

谢谢你,那里的数值来自一个文件和一个时间,但我的任务是有时间限制的。

在每天开始的30分钟内,每120秒记录一次当前价格和时间。

不要覆盖以前的条目。


原因: