mql5语言的特点、微妙之处以及技巧 - 页 57

 
A100:

执行中难以发现的错误的礼物

::CopyTicks比Copyticks好在哪里?

而为什么结果总是-1。这些错误应该在编译时报告

所以,一切都符合逻辑。ERR_INVALID_ARRAY得到一个错误

CopyTicks的类型正好是,只要其大小等于sizeof(MqlTick)。当然,确切地说,这个尺寸可以在编译时检查。

嗯,自定义的CopyTicks服从所有的MQL规则。


后裔数组不能转换为祖先数组。但是逐个元素,是的。这是ArrayCopy的一个限制,如果能去掉就更好了。

 

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

初学者的问题 MQL5 MT5 MetaTrader 5

fxsaber, 2017.10.19 21:13

// Возвращает true, если нет бара с таким временем ("дырка")
bool IsHole( const string Symb, const ENUM_TIMEFRAMES TimeFrame, const datetime time )
{
  return(Bars(Symb, TimeFrame, SeriesInfoInteger(_Symbol, PERIOD_CURRENT, SERIES_FIRSTDATE), time) +
         Bars(Symb, TimeFrame, time, SeriesInfoInteger(_Symbol, PERIOD_CURRENT, SERIES_LASTBAR_DATE)) ==
         SeriesInfoInteger(_Symbol, PERIOD_CURRENT, SERIES_BARS_COUNT));
}

无需访问服务器即可工作。

 
A100:

以难以捉摸的执行错误为形式的礼物

不幸的是,在下一个版本中,这个礼物将被关闭。

 
你是否还打算在这个账户上工作?
Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Каждый скрипт и каждый эксперт работает в собственном отдельном потоке. Все индикаторы, рассчитываемые на одном символе, даже если они запущены на разных графиках, работают в одном потоке. Таким образом, все индикаторы на одном символе делят между собой ресурсы одного потока. В одном потоке с индикаторами также последовательно выполняются...
 

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

图书馆:专家

fxsaber, 2017.10.31 01:27

一个小小的提示--在OBJ_CHART对象上运行EA/脚本。

因此,正在运行的EA挂掉了,没有以任何方式执行。但是,这些脚本工作得非常好。因此,它提供了一些机会。

例如,我们可以在图表上使用指标中的订单函数,其中已经有一个正在运行的专家顾问。而且我们不需要打开任何新的辅助图表。

 
fxsaber:

你已经使用了一个提示,尽管该指标可以在没有提示的情况下通过事件进行交易。


 
Vitaly Muzichenko:

你已经使用了一个提示器,尽管该指标可以在没有它的情况下进行交易,通过事件

这需要一个 "嗅探器 "EA平行运行,即需要一个辅助图表。

例子中的情况有些不同:有一个图表,一些EA已经在上面运行。而我们希望有时通过指标传递OrderSend 而不打开新的指标。

当然,在没有DLL的情况下,市场可以通过它。

 
fxsaber:

这需要一个 "分接 "EA并联运行,即需要一个辅助图表。

例子中的情况有些不同:有一个图表,一些EA已经在上面运行。而我们希望有时通过指标传递OrderSend而不打开新的指标。

当然,在没有DLL的情况下,市场可以通过它。

在视频中,没有DLL也能工作。专家顾问在任何图表上只需要一个,它可能在当前图表上。

 
维塔利-穆齐琴科

你只需要在任何图表上有一个专家顾问,你也可以在当前图表上有一个

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

mql5语言的特殊性、微妙性和技巧性

fxsaber, 2017.10.31 06:08

这个例子的情况略有不同:一个图表,上面已经有一些EA在运行。而且我想通过指标运行OrderSend,而有时不开新的。

 
// Сохранение Bitmap-объекта в bmp/gif/png-файле (прозрачность не учитывается)
bool BitmapObjectToFile( const long chartID, const string ObjName, const string FileName, const bool FullImage = false )
{  
  const ENUM_OBJECT Type = (ENUM_OBJECT)ObjectGetInteger(chartID, ObjName, OBJPROP_TYPE);  
  bool Res = (Type == OBJ_BITMAP_LABEL) || (Type == OBJ_BITMAP);
             
  if (Res)
  {
    const string Name = __FUNCTION__ + (string)MathRand();

    ObjectCreate(chartID, Name, OBJ_CHART, 0, 0, 0);
    ObjectSetInteger(chartID, Name, OBJPROP_XDISTANCE, -1 e3);
    
    const long chart = ObjectGetInteger(chartID, Name, OBJPROP_CHART_ID);
        
    Res = ChartSetInteger(chart, CHART_SHOW, false) && ObjectCreate(chart, Name, OBJ_BITMAP_LABEL, 0, 0, 0) &&
          ObjectSetString(chart, Name, OBJPROP_BMPFILE, ObjectGetString(chartID, ObjName, OBJPROP_BMPFILE)) &&
          (FullImage || (ObjectSetInteger(chart, Name, OBJPROP_XSIZE, ObjectGetInteger(chartID, ObjName, OBJPROP_XSIZE)) &&
                         ObjectSetInteger(chart, Name, OBJPROP_YSIZE, ObjectGetInteger(chartID, ObjName, OBJPROP_YSIZE)) &&
                         ObjectSetInteger(chart, Name, OBJPROP_XOFFSET, ObjectGetInteger(chartID, ObjName, OBJPROP_XOFFSET)) &&
                         ObjectSetInteger(chart, Name, OBJPROP_YOFFSET, ObjectGetInteger(chartID, ObjName, OBJPROP_YOFFSET)))) &&
                         ChartScreenShot(chart, FileName, (int)ObjectGetInteger(chart, Name, OBJPROP_XSIZE),
                                                          (int)ObjectGetInteger(chart, Name, OBJPROP_YSIZE));
    ObjectDelete(chartID, Name);
  }                    

  return(Res);
}


应用

// Сохраняет в png-файлах все Bitmap-объекты текущего чарта
void OnStart()
{  
  for (int i = ObjectsTotal(0) - 1; i >= 0; i--)
  {
    const string Name = ObjectName(0, i);
    
    BitmapObjectToFile(0, Name, (string)ChartID() + "\\" + Name + ".png");    
  }      
}


SZY 还实现了BMP->GIF/PNG转换器。