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

 
Roman:

真的很方便...

在不同的时间范围内打印。

因为预定义变量_Period 输出的值是。

_Period变量存储的是当前图表的时间框架的值。

而这个时间框架是由ENUM_TIMEFRAMES 枚举中与图表周期相对应的常量值定义的。

好了,解决吧。

//+------------------------------------------------------------------+
//|                                         TestTimeframe_Period.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                             https://mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://mql5.com/ru/users/artmedia70"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print
     (
      "Значение предопределённой переменной _Period на графике ",TimeframeDescription(Period())," = ",(string)(int)_Period,"\n",
      "Значение константы перечисления ENUM_TIMEFRAMES ",EnumToString(Period())," = ",(string)(int)Period(),"\n",
      "Период графика, соответствующий константе перечисления ENUM_TIMEFRAMES ",EnumToString(Period()),", со значением ",(string)(int)Period()," = ",TimeframeDescription(Period())
     );
  }
//+------------------------------------------------------------------+
//| Возвращает описание таймфрейма                                   |
//+------------------------------------------------------------------+
string TimeframeDescription(const ENUM_TIMEFRAMES timeframe)
  {
   return StringSubstr(EnumToString((timeframe>PERIOD_CURRENT ? timeframe : (ENUM_TIMEFRAMES)Period())),7);
  }
//+------------------------------------------------------------------+
Документация по MQL5: Предопределенные переменные / _Period
Документация по MQL5: Предопределенные переменные / _Period
  • www.mql5.com
Предопределенные переменные / _Period - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Roman:

我没有使用mql4 )),没有习惯它。
为什么我们要再除以60呢?
参考文献中哪里有这么说?
这已经是你的拐杖绕过了 错误
现在检查一下你的拐杖,在所有的时间范围

一个错误?所以你认为拥有M1、M2、M3、M4、M5、M6,然后是M10的时间框架也是一个错误?

你为什么不要求开发人员消除错过时限的 错误 呢?

m7, m8, m9, m11, m13, m14, m16, m17, m18, m19, m21, m22, m23, m24, m25, m26, m27, m28, m29, m31 - m59, n1_m1, n1_m2, n1_m3, -- , --, hundred_years ?

为什么转移常数的内部表示法突然变成 了一个错误

没有三百卢布的纸币难道不会让你感到困扰吗?

 
Artyom Trishkin:

一个错误?所以你认为拥有M1、M2、M3、M4、M5、M6,然后是M10的时间框架也是一个错误?

你为什么不要求开发人员消除错过时限的 错误 呢?

m7, m8, m9, m11, m13, m14, m16, m17, m18, m19, m21, m22, m23, m24, m25, m26, m27, m28, m29, m31 - m59, n1_m1, n1_m2, n1_m3, -- , --, hundred_years ?

为什么枚举常量的内部表示法突然变成 了一个错误

你不为缺少三百卢布的纸币而烦恼吗?

你能告诉我16385的值是否与H1图表周期 值相对应?
以及所有其他高于H1的周期值。
伊戈尔甚至向你展示了二进制格式,而我的下一篇文章也是如此,只是格式不同。

你的方向完全不同,不要提你没有说过的东西。
困扰我的是,主持人用他的拐杖套住了虫子的嘴!
而不是为他们的淘汰做贡献。

这是给你的另一个错误。

Print(PeriodSeconds(PERIOD_MN1)*1000);

而在明尼苏达州的图上也是如此。

Print(PeriodSeconds(PERIOD_CURRENT)*1000);
 
Roman:

请告诉我,16385的值是否与H1图表周期 值相符?
以及所有其他高于H1的周期值。

你的方向完全不同,不要提那些没有被谈论过的东西。
让我烦恼的是,主持人正在用他的拐杖洗出虫子!
而不是促成他们的淘汰。
这是给你的另一个错误。

你没有时间去研究帮助吗?

任何你不理解的东西都是你认为开发者应该修复的错误?

或者,在这种情况下,你应该学会阅读,而不是把责任推给版主?

Print((string)(uint)PeriodSeconds(PERIOD_MN1)*1000)

你为什么要溢出来

所以要自己打印出来。

Print
  (
   "(int)PeriodSeconds(PERIOD_MN1) = ",(int)PeriodSeconds(PERIOD_MN1),
   ", (ulong)PeriodSeconds(PERIOD_MN1)*1000 = ",(ulong)PeriodSeconds(PERIOD_MN1)*1000,
   ", INT_MAX = ",INT_MAX
  );

并请纠正你自己思维中的错误。

如果你要的是毫秒,就用ulong 表示。

 
Artyom Trishkin:

你没有时间去研究帮助吗?

任何你不理解的东西都是你认为开发者应该修复的错误?

或者,在这种情况下,你最好学会阅读,而不是把责任推给版主?

你为什么要溢出来

所以要自己打印出来。

并请纠正你自己思维中的错误。

拥挤,是的,那是一个疏忽,我没有考虑到这一点。在此表示感谢。
但你的例子不能编译。

因为它打印得很好,猜测你什么时候需要一个字符串,什么时候不需要))

Print((uint)PeriodSeconds(PERIOD_MN1)*1000);


而关于_Period变量,在H1上面有一些问题。

 
Roman:

请告诉我,16385的值是否与H1图表的周期 值相符?
以及所有其他高于H1的周期值。
伊戈尔甚至向你展示了二进制格式的数值,接下来是我的帖子,你在那里看到了另一种格式的相同数值。

你的方向完全不同,不要提你没有说过的东西
困扰我的是,主持人用他的拐杖套住了虫子的嘴!
而不是为他们的淘汰做贡献。

这是给你的另一个错误。

而在明尼苏达州的图表上也是如此。

1.是的,与常数的值 相对应。

2.而其他的都对应于常数 的值。

试着把它打印出来。

Print("SYMBOL_BID=",SYMBOL_BID); 

你认为当前的投标价格会打印出来给你,还是别的什么?

那么你为什么期望从

Print("PERIOD_H1=",PERIOD_H1);

你会得到像H1或60这样的东西吗?

而Igor没有 为我打印出来,而是向你展示了ENUM_TIMEFRAMES枚举的常量值的二进制格式的内部表示。

你声称你给我看的枚举常量的值是一个错误,我的解释是一个拐杖。事实并非如此--这只是你对简单基础知识的无知。

我现在告辞了--学习基础知识,请不要在错误和开发人员的拐杖中显示你的无知--抛出一个空白是不好的。是的,你选择了一些 "紧箍咒",而忘记了原来你不知道的事情。

你会想明白的,而你的草图将为其他同样 "有知识 "的人保留。它是一种害虫...

 
Roman:

溢出,是的,反应过激,没有考虑到这一点。谢谢你。
但你的样本将无法编译。

但它打印得很好,所以猜测你什么时候需要一个字符串,什么时候不需要))


而关于_Period变量,H1上面肯定有问题。

我的意思是,你说的 "不能编译 "是什么意思?从论坛复制到脚本,并进行了编译。


而_Period变量返回当前图形的ENUM_TIMEFRAMES枚举常量的值为int。 也就是说,不是分钟数,不是秒数,而是对应于当前图形的ENUM_TIMEFRAMES中的常数值。

 
Roman:

但它的打印效果很好,所以猜测你什么时候需要一个字符串,什么时候不需要))

你不需要猜测。你必须思考并了解正在做的事情和目的是什么。什么时候需要写什么东西,什么时候不需要。

 
Artyom Trishkin:

那么,为什么你会期望

你会得到像H1或60这样的东西吗?

因为H1以下的分钟时间段会返回正确的数值。
正如帮助中所描述的,它们返回的是时间框架的值,而不是一个随机常数。

Print("PERIOD_M1=",PERIOD_M1);
Print("PERIOD_M5=",PERIOD_M5);
Print("PERIOD_M30=",PERIOD_M30);
Print("PERIOD_H1=",PERIOD_H1);
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_M1=1
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_M5=5
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_M30=30
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_H1=16385

这就是为什么从更高的时间框架中期待这一点是合乎逻辑的,继续以分钟为单位的序列。
PERIOD_H1=60

等。

 
Roman:

因为H1以下的分钟时间段会返回正确的数值。
正如帮助中描述的那样,它们返回的是时间框架值,而不是任意的常数。

这就是为什么从更高的时间框架中期待这一点是合乎逻辑的,继续以分钟为单位的序列。
PERIOD_H1=60

等。

...继续创作邪恶的歌曲,期待着共产主义,壕气的品牌和***的收集......

在期望返回预期的 "逻辑 "值时,不使用常量值是合乎逻辑的。

让我再一次(最后一次)提醒你SYMBOL_BID这个常数。出于某种原因,期望从它那里得到当前买入价而不是1的值是 "合乎逻辑 "的,对吗?或者说不是吗?

就这样了。我已经厌倦了甘草,我没有从事教学工作,就像它一样。

原因: