新人对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的值是 "合乎逻辑 "的,对吗?或者说不是吗?

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