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

 
Alexey Kozitsyn:

有几种方法可以获得当前的价格。

1.对于任何符号:如果你想获得有保证的当前价格,在使用前用正确的标识符调用SymbolInfoDouble()

2.对于当前的符号,你也可以通过预定义的变量Bid和Ask获得当前价格。它们可能会过时,所以如果OnTick()正在运行,你应该用RefreshRates()刷新它们。

谢谢你!
 
编译器警告:

"由于类型转换可能导致数据丢失"

我如何克服这个警告?
string singleElement+=CharToString(StringGetCharacter(stringOfSymbols,i));
 
Maksym Mudrakov:
编译器警告:

"由于类型转换可能导致数据丢失" 我如何克服这个警告?


string singleElement+=CharToString(StringGetCharacter(stringOfSymbols,i));

你需要知道由函数返回的值的确切类型,并使用显式转换。https://www.mql5.com/ru/docs/basis/types/casting

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:
你没有一个完整的模板--你可能还没有在向导中设置指标缓冲区,计算的数据将被写入其中。

但大多数指标的基本原则如下。

//+------------------------------------------------------------------+
//| 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[])
  {
//---
   if(rates_total<1) return(0);              // проверка достаточности данных для расчёта индикатора, если не достаточно - выходим
                                             // если для расчёта требуются некое количество баров слева от индекса цикла, ...
                                             // ... то проверять нужно это количество, а не 1
  
   //--- Действия для полного перерасчёта индикатора
   int limit=rates_total-prev_calculated;    // количество посчитанных уже баров
   if(limit>1) {                             // если количество больше 1, значит имеем новые данные, и нужно полностью пересчитать индикатор
      limit=rates_total-1;                   // задаём количество требуемых для расчёта баров равным количеству баров в истории,
                                             // если для расчёта требуются некое количество баров слева от индекса цикла, ...
                                             // ... то это количество тоже нужно вычесть из rates_total чтобы не выйти за пределы массива
                                             // так же тут нужно при необходимости произвести инициализацию буферов индикатора
      }
  
   //--- Основной цикл индикатора
   for(int i=limit; i>=0; i--) {
      // тут выполняем нужные расчёты и записываем их результат в нужные буферы, например:
      ExtMapBuffer[i]=(open[i]+high[i]+low[i]+close[i])/4.0;   // Выведем на график среднюю цену каждой свечи (OHLC/4.0)
      }
  
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Artem,编译器中出现了一个错误。'ExtMapBuffer' - 未声明的标识符

 
Andrey Koldorkin:
Artem,编译器给出了一个错误。'ExtMapBuffer' - 未声明的标识符

当然会的。我是突然间写的。而在写这个例子之前,我告诉你,模板中没有指定外部变量(没有必要),也没有指定显示指标计算 的缓冲区。当然,有一些指标不使用缓冲器的输出,但在你的情况下不是这样。

这就是为什么我加入了这个缓冲区。你应该重新创建模板,但你应该对这个简单的动作更负责任,并问自己--"但是向导问我什么,它需要什么?
 
你好!大约四个月前,我开始使用Kovalev的教程学习MQL4。我也有视频。我在看视频,研究教程,复制那里使用的代码。我知道这是一个非常严肃的问题,需要时间来掌握它。但我确切地知道我需要练习。我需要简单的任务,并写出它们,有人检查它们,然后我将能够更进一步!另一个问题是,书和视频已经更新,我甚至重复书中的代码,编译它,我得到错误,我看起来像一只羊在一个新的门......,这是悲伤的!
 
FOTOGRAF14:
你好!大约四个月前,我开始使用Kovalev的教程学习MQL4。我也有视频。我看视频,研究教程,我重复那里使用的代码。我知道这是一个非常严肃的问题,需要时间来掌握它。但我确切地知道我需要练习。我需要简单的任务,并写出它们,有人检查它们,然后我将能够更进一步!另一个问题是,书和视频已经更新,我甚至重复书中的代码,编译它,我得到错误,我看起来像一只羊在新门......,这是悲伤的!

阅读一次文档。教科书在某些地方已经过时了。文件将对此有所帮助。关于任务--解决课本中描述的相同任务。读一读问题,看一看解决方案,重复一遍。以此类推,直到你掌握了它的窍门。最好是将任务尽可能地接近你想学习的任务,以便自己实施。

当然,都是IMHO。

 
Sergey Gritsay:
对我来说,它编译得很好。

好吧,你想解释一下为什么这样的物体没有被区分出来吗?

如果你改变了对象的类型,属性将以2个标签或趋势线的形式折叠起来

 
Alexey Kozitsyn:

阅读一次文档。教科书在某些地方已经过时了。文件将对此有所帮助。关于任务--解决课本中描述的相同任务。读一读问题,看一看解决方案,重复一遍。以此类推,直到你掌握了它的窍门。最好是将任务尽可能地接近你想学习的任务,以便自己实施。

当然,都是IMHO。

谢谢你!

 
trader781:

好吧,你想解释一下为什么这样的物体没有被区分出来吗?

如果你改变了对象的类型,属性将以2个标签或趋势线的形式折叠起来

R 哪些对象是没有区别的?以及如果你改变了对象类型,属性就会崩溃,这是什么意思?
原因: