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

 
Artyom Trishkin:

做到这一点。然后是这里的代码。

顺便说一句,Artem。

眼前的任务带来了一个有趣的问题。

为了检查所有的东西,你需要一个 "导入数据 "程序。

也就是说,动态数 组应该从第三方来源加载自己的动态数据。

我不知道MT4/MT5是否有这个程序--或者没有?

如何在MT4/MT5中导入数据?

这有可能吗?

-------------------------------------------------------------------

我对导入动态数据感兴趣,而不只是从数组中读取数据。

---------------------------------------------------------------------------------------------------------------

顺便说一下,这就是http://tol64.blogspot.com/2015/12/easy-and-fast-gui-mql.html,这个进口的结构应该是这样的。

没有它,根本没有办法。

------------------------------------------------------------------------------------------

我在MT4/MT5或其扩展中没有看到导入。

给我进口!!!。

Библиотека "Easy And Fast GUI" для создания графических интерфейсов на MQL
  • tol64.blogspot.com
С этой статьи я начинаю еще одну серию, относящуюся к разработке графических интерфейсов. На текущий момент нет ни одной библиотеки кода, которая позволяла бы легко и быстро создавать качественные графические интерфейсы в MQL-приложениях. Я имею в виду графические интерфейсы, к которым мы все привыкли в известных операционных системах. Цель проекта — дать конечному пользователю такую возможность и научить это делать с помощью моей библиотеки. Я постарался сделать ее максимально понятной в изучении, с возможностями дальнейшего развития.
 
Aleksey Lebedev:

这是激烈的胡言乱语,值得载入论坛的史册。

"啊,穆萨!知道她很强壮。
"这是对大象的叫声!"

https://ru.wikisource.org/wiki/%D0%A1%D0%BB%D0%BE%D0%BD_%D0%B8_%D0%9C%D0%BE%D1%81%D1%8C%D0%BA%D0%B0_(%D0%9A%D1%80%D1%8B%D0%BB%D0%BE%D0%B2)

阿列克谢!

我会在论坛上把你剁成肉酱的!!。

对不起!

 

下午好!

你能告诉我如何通过从另一个通过iCustom调用的指标的缓冲区中复制数据来正确实现指标缓冲区 的填充吗?我们的想法是能够在当前仪器的窗口中调用基于另一个仪器的数据建立的相同指标。

结果是,数据缓冲区是空的,图表没有被绘制出来。缓冲区的颜色并不重要。

//---- indicator settings
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots   1
#property indicator_type1   DRAW_COLOR_HISTOGRAM
#property indicator_color1  Green,Red
#property indicator_style1  0
#property indicator_width1  3

//--- input data
input string OtherSymbol=""; //Название символа, по которому считать. Если пусто - текущий символ
//---- indicator buffers
double                    DataBuffer[];
double                    ColorsBuffer[];
//---- external indicator handle
int                       CustomHandle=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {  
   SetIndexBuffer(0,DataBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ColorsBuffer,INDICATOR_COLOR_INDEX);
   IndicatorSetString(INDICATOR_SHORTNAME,"PercentChangeHistogram");
   IndicatorSetInteger(INDICATOR_DIGITS,2);
//----
   if (OtherSymbol!="") //если есть имя другого символа, рекурсивно вызываем индикатор через iCustom 
      { 
      CustomHandle=iCustom(OtherSymbol,_Period,"PercentChangeHistogram","");
     if (CustomHandle==-1)
         {Alert ("iCustom function initialization failed!");
         return (INIT_FAILED);}
     }
   return (INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|  OnCalculate                                                     |
//+------------------------------------------------------------------+
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[])
  {
   if(rates_total<2)
      return(0);
   int start=prev_calculated-1;
   if(start<1) start=1;
   //---
   if (OtherSymbol=="")// если input переменная содержит пустую строку, заполняем индикаторный массив через простой расчет функцией CalculateData
                       // если input переменная содержит не пустую строку, пытаемся заполнить индикаторный массив копированием данных другого индикатора
   CalculateData(start,rates_total,open,close);
   else
   CopyBuffer(CustomHandle,0,start,rates_total-prev_calculated,DataBuffer);
   //---
   return(rates_total);
  }
  
...
 
Aleksey Lebedev:

这是个值得在论坛上大书特书的胡话。

阿列克谢!

你做交易员多久了?-

- 没有?

交易员习惯于推理,简单明了?

- 你有什么账户,阿列克谢--以正数或负数计算,多少年?

- 或者你根本就没有交易账户?

- 或者,你只是无脑,决定教其他交易者?

- 有很多这样的人。

--------------------------------------------------------------------------------------

- 我有一个交易员的账户,而且是一个好的账户。很久了,20年了,而且我不打算教任何人。

- 这就是矛盾之处。

 
neverness:

阿列克谢!

你做交易员多久了?-

- 没有?

交易员习惯于推理,简单明了?

- 你有什么账户,阿列克谢--以正数或负数计算,多少年?

- 或者你根本就没有交易账户?

- 或者,你只是无脑,决定教其他交易者?

- 有很多这样的人。

--------------------------------------------------------------------------------------

- 我有一个交易员的账户,而且是一个好的账户。很久了,20年了,而且我不打算教任何人。

- 这就是矛盾之处。

你得到的答案是关于技术方面的,它不应该与交易质量有任何联系。

 
Vitaly Muzichenko:

在技术方面已经给了你一个答案,它根本不应该与交易质量挂钩。

这是为什么呢?

还是你认为交易员是 "不识字的白痴",他们在市场上赌博和下注?

那么我就是他们中的一员。

只有我拿着dx的积分没有困难。你呢?- 什么,你有问题吗?

你显然不是一个交易员,就像这个论坛上的许多其他 "专家 "一样!

对于交易者来说,外汇市场是一头 "圣牛",它永远是正确的。

如果你能在这个市场上推动你的想法--你就是一个英雄。

如果市场推翻了你,那么你就知道等待你的是什么了!

--------------------------------------------------------------------------------------------------------

但在外汇市场上没有人被禁止--这又是一个悖论!!。

无论你是对是错--这并不重要!所有东西都是有偿的!!!"。

 
Artyom Trishkin:

再一次。仔细观察图片。


谢谢你提供的线索。

 
neverness:

这是为什么呢?

还是你认为交易员是 "不识字的白痴",他们在市场上赌博和下注?

那么我就是他们中的一员。

只有我拿着dx的积分没有困难。你呢?- 什么,你有问题吗?

你显然不是一个交易员,就像这个论坛上的许多其他 "专家 "一样!

对于交易者来说,外汇市场是一头 "圣牛",它永远是正确的。

如果你能在这个市场上推动你的想法--你就是一个英雄。

如果市场推翻了你,那么你就知道等待你的是什么了!

--------------------------------------------------------------------------------------------------------

但在外汇市场上没有人被禁止--这又是一个悖论!!。

无论你是对是错--这并不重要!所有东西都是有偿的!!!"。

你说的是数组,而你说的是外汇!然而,一个悖论!

 
neverness:


- 而且我有一个交易员的账户,而且是一个体面的账户。很长时间了,20年了,而且我不会去教别人。

- 这就是矛盾之处。

感觉你说的是你的年龄,而不是你的资历。
 

我读了你的信息,一切看起来都很好:-)但引起这种困惑的问题是什么?

通过SetIndexBuffer(1, tmp1) 声明一个数组并没有任何作用当然,我可以在同一个循环中增加数组大小,但我想知道一个更简单、更有效的方法。

原因: