初学者的问题 MQL5 MT5 MetaTrader 5 - 页 784

 
Aleksey Vyazmikin:

请帮助我编造一个函数。

我有一个当前的TF和一个估计的TF,该函数应该返回两个TF在任何组合中的差异,如果测量是以条为单位的话

计算TF 15 15 15 60 60 60 240 240 240
当前TF 15 5 1 15 5 1 60 15 5
Nbar的差异 1 3 15 4 12 60 4 16 48

如何正确实施?


我是这样做的。

int TFk()
{
   int K=0;
   K=TF_transfer(TF)/TF_transfer(Period());
//   Print(TF_transfer(TF),"   ",TF_transfer(Period()));
//Print (K);
   if   (K<1)return(1);
   else      return(K);
}


int TF_transfer(ENUM_TIMEFRAMES tf)
  {
   if (tf==PERIOD_CURRENT) return(0);
   if (tf==PERIOD_M1) return(1);
   if (tf==PERIOD_M5) return(5);
   if (tf==PERIOD_M15) return(15);
   if (tf==PERIOD_M30) return(30);
   if (tf==PERIOD_H1) return(60);
   if (tf==PERIOD_H4) return(240);
   if (tf==PERIOD_D1) return(1440);
   if (tf==PERIOD_W1) return(10080);
   if (tf==PERIOD_MN1) return(43200);  
   if (tf==PERIOD_M2) return(2);
   if (tf==PERIOD_M3) return(3);
   if (tf==PERIOD_M4) return(4);
   if (tf==PERIOD_M6) return(6);
   if (tf==PERIOD_M10) return(10);
   if (tf==PERIOD_M12) return(12);
   if (tf==PERIOD_H2) return(120);
   if (tf==PERIOD_H3) return(180);  
   if (tf==PERIOD_M6) return(360);
   if (tf==PERIOD_H8) return(480);
   if (tf==PERIOD_H12) return(720);
   return(1);
  }

问题是,我需要这个指标的幸福,但它不想正确地初始化自己,并对这个代码

int OnInit()
  {
   Print ("K=",TFk()," Период=",Period());

return(INIT_SUCCEEDED); }

它的反应是这样的。

2017.09.22 14:23:27.742 donchian_channel_prognoz_MTF (Eu Splice,M5) K=3 Period=5

2017.09.22 14:23:27.776 donchian_channel_prognoz_MTF (Eu Splice,M5) test

2017.09.22 14:23:27.790 donchian_channel_prognoz_MTF (Eu Splice,M15) K=1 Period=15

最让人困惑的是,它打印的测试已经在OnCalculate的正文中了!这让人很不解。

if(BarsCalculated(handle)<0) {Print ("test");return(0);}

第一次的时间框架定义正确,但第二次就不正确了......

我不知道有什么好奇怪的...

虽然我知道,这是由指标调用 的指标...绕着圈子跑...
 
Aleksey Vyazmikin:

我是这样做的

问题是,我需要这个幸福的指标,但它很奇怪,不想正确地初始化,以回应这个代码

它的反应是这样的。

2017.09.22 14:23:27.742 donchian_channel_prognoz_MTF (Eu Splice,M5) K=3 Period=5

2017.09.22 14:23:27.776 donchian_channel_prognoz_MTF (Eu Splice,M5) test

2017.09.22 14:23:27.790 donchian_channel_prognoz_MTF (Eu Splice,M15) K=1 Period=15

最让人困惑的是,它打印的测试已经在OnCalculate的正文中了!这让人很不解。

第一次的时间框架定义正确,但第二次就不正确了......

我不知道这些奇迹是什么。

虽然我知道,这是从指标中调用指标...绕着圈子跑...

为什么我必须经历所有这些麻烦?

这不是更容易吗?

K = PeriodSeconds(TF)/PeriodSeconds(Period());
 
Alexey Viktorov:

怎么会有这么多的曲折呢?

这不就更容易了吗?


所以这个主题是为初学者准备的,这就是为什么我不知道这种可能性,谢谢你指出来。

 

你能告诉我现在有两个TF的iBarShift 功能最可靠吗?

我有一个任务,比如说,在一个分钟条上找到上层TF的指标值,比如说,M15。时间框架可以是任何,这使解决方案变得复杂。

在一个小时的时间里,我完成了这个结构,但如果它是M15,那么我就很困惑了......。

 
Aleksey Vyazmikin:

你能告诉我现在有两个TF的iBarShift功能最可靠吗?

我有一个任务,比如说,在一个分钟条上找到上层TF的指标值,比如说,M15。时间框架可以是任何,这使解决方案变得复杂。

对于一个小时的TF,我确实通过结构,但如果它是M15,我在这里感到困惑......

旋转这个脚本:搜索最近的酒吧

 
Vladimir Karputov:

旋转这个脚本:搜索最近的酒吧


谢谢你。

 
Aleksey Vyazmikin:

所以,这个主题是为初学者准备的,这就是为什么我不知道这个功能,谢谢你的提示。

Aleksey, mql4很久以前就有了。


阿列克谢-维亚兹米 金。

你能告诉我现在有两个TF的iBarShift功能最可靠吗?

我有一个任务,比如说,在一分钟内找到上层TF的指标值,比如说M15。时间框架可以是任何,这使解决方案变得复杂。

对于一个小时的TF,我确实通过结构,但如果是M15,我在这里感到困惑......

在这种情况下,你应该试着忘记在mql4中对条形图的编号。在mql5中,所有的事情几乎都是通过酒吧时间解决的。在紧急情况下,你可以使用Bars()函数

int  Bars(
   string           symbol_name,     // имя символа
   ENUM_TIMEFRAMES  timeframe,       // период
   datetime         start_time,      // с какой даты
   datetime         stop_time        // по какую дату
   );
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov:
Alexei, mql4已经有很长一段时间了。

显然,这表明我对mql4也不了解,我从未声称过......

阿列克谢-维克多罗夫

在这种情况下,尽量忘掉mql4中的bar numbering。在mql5中,所有的事情几乎都是通过酒吧时间解决的。在紧要关头,尝试使用Bars()函数

你确定是四舍五入吗?

假设M1的时间是14:44,但我需要14:30(M15的第一条)。

 
Aleksey Vyazmikin:

显然,这表明我对mql4也不是很了解,而我从未声称过...

你确定四舍五入的问题吗?

假设m1的时间是14:44,我需要得到14:30的时间(m15的第一条)。

这是另一个系列的东西。你需要在14:44从14:30的M15栏期中得到什么?拿出函数Copy****,在其中放入PERIOD_M15 和时间14:44,看看你得到什么。而当结果与你预期的不一样时,那么问题就会不同。

 
Alexey Viktorov:

这是另一个系列的东西。你需要在14:44从14:30的M15栏期中得到什么?拿出函数Copy****,在其中放入PERIOD_M15 和时间14:44,看看你得到什么。而当结果与你预期的不一样时,那么问题就会不同。


是的,这是我工作的方向。总之,我得到了一些帮助。也谢谢你。