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

 
我的问题是,如果我的EA是在英镑图上,我想让它看到欧元图上的一条水平线,这不工作?
 
Aleksandr Egorov:
我的问题是,如果我的EA是在英镑图表上,我想让它看到欧元图表上的水平线,这就不能工作了?

请注意函数的第一个参数

string  ObjectName( 
   long  chart_id,           // идентификатор графика 
   int   pos,                // номер в списке объектов 
   int   sub_window=-1,      // номер окна 
   int   type=-1             // тип объекта 
   );

它存在于图形对象工作的所有功能中。

使用正确的标识符,你可以很容易地从任何图表中获得对象属性。

Документация по MQL5: Графические объекты / ObjectName
Документация по MQL5: Графические объекты / ObjectName
  • www.mql5.com
Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. Нужно иметь это обстоятельство в виду...
 
那么长是m5等0目前的图表,和字符串Sumbol如何?
 
Aleksandr Egorov:
我需要它在英镑和欧元的图表上,也许我不明白的东西。

不,没有时间框架 - 你需要一个图表ID:ChartID

选择之一:在带有线条的图表上运行一个脚本,打印出ChartID,然后你可以从另一个图表上访问线条属性。例如,如果它是一条水平线,那么通过ObjectGetDouble

 
Vladimir Karputov:

不,没有时间框架 - 你需要一个图表ID:ChartID

选择之一:在绘制直线的图表上,运行一个打印ChartID 的脚本,然后你可以从另一个图表上访问直线的属性。例如,如果它是一条水平线,那么通过ObjectGetDoubl感谢你

谢谢

 
Aleksandr Egorov:

谢谢

还有一个选择:你只需要知道图形对象的名称 和类型(你需要名称来搜索所有的图形,需要类型来准确找到正确的对象) ...

 
Aleksandr Egorov:

谢谢

变体#2:设置名称、对象类型和在哪个窗口中搜索("0"--在主窗口中)。搜索是在OnInit中进行的,如果找到了对象,我们将图表标识符 保存到m_obj_chart_id变量中。

//+------------------------------------------------------------------+
//|                                    Object from another chart.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//--- input parameters
input string      InpObjName     = "Object Name";  // Object: Name
input ENUM_OBJECT InpObjType     = OBJ_HLINE;      // Object: Type
input int         InpObjSubWindow= 0;              // Object: Window Index
//---
long     m_obj_chart_id=-1;   // Object ChartID
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

//--- variables for chart ID
   long currChart,prevChart=ChartFirst();
   int i=0,limit=100;
   Print("ChartFirst =",ChartSymbol(prevChart)," ID =",prevChart);
   while(i<limit)// We have certainly not more than 100 open charts
     {
      currChart=ChartNext(prevChart); // Get the new chart ID by using the previous chart ID
      if(currChart<0)
         break;          // Have reached the end of the chart list
      int total=ObjectsTotal(currChart,InpObjSubWindow,InpObjType);
      for(int j=0; j<total; j++)
         if(ObjectName(currChart,j,InpObjSubWindow,InpObjType)==InpObjName)
           {
            m_obj_chart_id=currChart;
            break;
           }
      prevChart=currChart;// let's save the current chart ID for the ChartNext()
      i++;// Do not forget to increase the counter
     }
//---
   if(m_obj_chart_id==-1)
      return(INIT_FAILED);
   else
      Print("Object Name ",InpObjName," found on chart ",m_obj_chart_id);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+
附加的文件:
 
如果我用指定的止损和止盈水平下市场订单(TRADE_ACTION_DEAL),但经纪人禁止设置带有SL或TP的订单,该订单是否会被取消或设置为零SL和TP?
 
Vladimir Karputov:

变体#2:指定名称、对象类型和在哪个窗口搜索("0"--在主窗口)。搜索是在OnInit中进行的,如果找到了对象,我们将图表标识符 保存到m_obj_chart_id变量中。

更加感谢你

 

关于交易、自动交易系统和策略测试的论坛

初学者的常见问题 MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.08.31 08:16


而你的错误是在开始的价格形成。

//--- start work
   double start_price_ask=m_symbol.Ask()-ExtUpGap;
   double start_price_bid=m_symbol.Bid()+ExtDownGap;

我建议分别为止损和限价挂单制定起始价格。

你好,弗拉基米尔!

请帮助我修改下面这个脚本的起始价格。

//--- start work


   double start_price_ask=0.0;
   double start_price_bid=0.0;
   if(InpPending==stop)
     {
      start_price_ask=m_symbol.Ask()+ExtUpGap;
      start_price_bid=m_symbol.Bid()-ExtDownGap;
     }
   else
      if(InpPending==limit)
        {
         start_price_ask=m_symbol.Ask()-ExtUpGap;
         start_price_bid=m_symbol.Bid()+ExtDownGap;
        }

脚本应该不是根据卖出价和买入价来下挂单,而是根据前一个柱子(蜡烛图)的高度和低度来下挂单。

真诚的,弗拉基米尔。