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

 
Константин:
@Artyom Trishkin

你能给我一些商业建议吗?

我可以给你很多关于火鸡的不同信息。

首先,它是一种野鸡鸟。这是饮食上的肉。我把它喂给我的猫。他说这很好吃...

 
Константин:

你能不能给我一个线索,说明问题?

说到这里,你为什么要从一个指标中运行脚本?

 
Mihail Matkovskij:

至于说,谁让你这么傻,从一个指标上运行脚本?:)

而最重要的是,为什么?

我想在图表上一个按钮,这样我就可以通过按一个按钮来运行一个脚本,其参数取自指标。

 
Константин:

我想在图表上一个按钮,这样我就可以通过按下按钮来运行脚本,参数取自指标。

你把按钮的代码写在指标代码中,并把脚本代码作为一个函数整合在指标代码中。按下按钮 - 调用函数,在其中传递指标参数。

 
Константин:

我想在图表上一个按钮,这样我就可以通过按下按钮来运行脚本,参数取自指标

如果问题出在创建按钮本身,那就在这里。

//+------------------------------------------------------------------+
//|                                                  ClickButton.mq5 |
//|                                      Copyright 2020, © Cyberdev. |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, © Cyberdev."
#property version   "1.00"
#property indicator_chart_window

#property indicator_plots 0

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
#include <ChartObjects\ChartObjectsTxtControls.mqh>

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CChartObjectButton button;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit() {
  button.Create(0, "pushBtn", 0, 30, 30, 80, 21);
  button.SetString(OBJPROP_TEXT, "Push my");
  button.SetInteger(OBJPROP_BGCOLOR, clrDodgerBlue);
  button.Color(clrWhite);
  return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[]) {
//---
//--- 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_CLICK) {
    if(sparam == button.Name()) {
      Alert("Button \""+sparam+"\" clicked!"); // Вместо этого функция с кодом...
      button.State(0);
      ChartRedraw(0);
    }
  }
}
//+------------------------------------------------------------------+
 
Mihail Matkovskij:

如果问题出在创建按钮本身,那就在这里。

谢谢,我想我已经搞清楚了按钮的问题,但我还没有搞清楚如何附加脚本。该脚本位于C:Users\...\MQL4\Scripts\Order.ex4

 
另一个问题。我在Windows上使用一个小平板电脑,没有鼠标,图形上的按钮 对我来说是一个方便的解决方案。是否可以让键盘命令Ctrl+F5在按下图形上的按钮时执行,这将更方便我查看以下配置文件。
 
Константин:

谢谢,我想我已经弄明白了这个按钮,但我还没有弄清楚如何附加脚本。该脚本位于C:\Users\...\MQL4\Scripts\Order.ex4

给脚本指定一个快捷方式,并使用WinAPI进行模拟。但我没有在MQL 程序中做过这样的事情。因此,试着在谷歌上搜索"SendInput User32.dll WinAPI"。

 

下午好!

我在纠结一个问题,请你告诉我如何解决这个问题?

其思路如下: 在蜡烛的前一个最大值处画一条线。我想让这条线根据之前的最大值进行移动。

void OnTick()
  {
//---
   double   o1 = iOpen(Symbol(),Period(),1);
   double   h1 = iHigh(Symbol(),Period(),1);
   double   l1 = iLow(Symbol(),Period(),1);
   double   c1 = iClose(Symbol(),Period(),1);
   double   c0 = iClose(Symbol(),Period(),0);
   double   rt = 0;
   double   rs1 = 0;


rt=MathAbs(c1-o1)/_Point; //размер тела свечи
rs1=MathAbs(h1-c1)/_Point;// размер верхней тени свечи


if (rs1>=rt) // условие для построения уровней (если верхняя тень предыдущей свечи, больше, или равна телу этой же всечи, то...   
{
double PRH=iHigh(Symbol(),_Period,1); // то это будет максимум
ObjectCreate(0,"HL",OBJ_HLINE,0,_Period,PRH); // и строим по этому максимуму, горизонтальную линию
Comment("ЦЕНА МАКС =======",PRH,"\n"); // комментарий пред. максимума
}
}
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
При создании пользовательского индикатора можно указать один из 18 типов графического построения (способа отображения на главном окне графика или в подокне графика), значения которых указаны в перечислении ENUM_DRAW_TYPE. В зависимости от стиля рисования, может потребоваться от одного до четырех буферов значений (отмеченных как INDICATOR_DATA...
 
Alexey Belyakov:

下午好!

我在纠结一个问题,请告诉我如何解决它。

其思路如下: 在蜡烛的前一个最大值处画一条线。我想让这条线根据之前的最大值进行移动。

有2种选择
1.你必须在绘制之前删除该对象。
2.在创建一个对象后设置价格
原因: