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

 
Boss11:

日安,亲爱的论坛用户。

请帮助我完成以下任务。

我需要在mt4中使用mql获得指标数据,例如1d时间框架的MA5,截止到前天14.30的数据。

也就是说,如果我在前天14:30运行iMA脚本,不会出现任何问题,但今天我如何得到它。

至少告诉我哪里可以挖

这非常简单。你需要设置7个参数来计算iMA。第一个参数,即符号的名称,是很明显的。作为第二个,时间框架,设置为M1。第三个参数--周期--根据需要设置多少次,多少天是超过一分钟的。第四个参数 - shift = 0。接下来的两个参数--平均数的方法和价格类型--你知道。最后一个是栏位号,如果你知道你需要的时间,请计算栏位号。就这样吧!通过对M5和M15的时间框架进行计算,对其进行反复检查。也许甚至是为了M30。

 
STARIJ:

这非常简单。为了计算iMA,需要7个参数。第一个参数,即符号的名称,是很明显的。作为第二个参数,时间框架,设置为M1。第三个参数--周期--根据需要设置多少次,多少天是超过一分钟的。第四个参数 - shift = 0。接下来的两个参数--平均数的方法和价格类型--你知道。最后一个是栏位号,如果你知道你需要的时间,请计算栏位号。就这样吧!通过对M5和M15的时间框架进行计算,对其进行反复检查。也许甚至是为了M30。

不幸的是,这并不容易。如果我们采取MA5,时间框架1440(1天),选择第2条(前天),我们将得到最后一根蜡烛的开盘或收盘的MA5,但不是14.30时刻。而这正是我们需要说明的。再一次。技术指标是由几个蜡烛图计算出来的,它们在00.00开盘(如果我们说的是一天),它们在23.59收盘,但最后一个蜡烛图(如果是0条)没有收盘,我们取0条的最后价格来计算它。如果MA是在零条上,这很容易,但如果不是零条而是前一天的中间,我们应该怎么做?在TF1440中,我们如何计算前一天的МА?

 
Artyom Trishkin:

非常感谢您!我将着手写代码 :)我会让你知道结果的。

 
Boss11:

不幸的是,这并不容易。如果我们采取MA5,时间框架1440(1天),选择第2条(前天),我们将得到最后一根蜡烛的开盘或收盘的MA5,但不是14.30时刻。而这正是我们需要说明的。再一次。技术指标是由几个蜡烛图计算出来的,它们在00.00开盘(如果我们说的是一天),在23.59收盘,但最后一个蜡烛图(如果是0条),并没有收盘,0条的最后价格被用来计算它。如果MA是在零条上,这很容易,但如果不是零条而是前一天的中间,我们应该怎么做?如何在TF1440中计算前一天的МА?


它非常简单

void OnStart()
  {
// Формируем время  
   Alert("14.30  позавчерашнего дня = ",StrToTime(TimeToStr(iTime(NULL,1440,2),TIME_DATE)+" "+"14:30"));

//14.30  позавчерашнего дня
   datetime time=StrToTime(TimeToStr(iTime(NULL,1440,2),TIME_DATE)+" "+"14:30");

//Бар 14.30  позавчерашнего дня
   int     shift=iBarShift(NULL,0,time);

//Машка 14.30  позавчерашнего дня  
   double ma=iMA(NULL,0,13,0,MODE_SMMA,PRICE_MEDIAN,shift);

   Alert("Машка 14.30  позавчерашнего дня = ",DoubleToString(ma,Digits));
}

像这样

 

是否知道如何通过脚本来组织信号的发送?

 

我需要有识之士的帮助

我有一个EA的源代码,它在2014年编译过,一切正常。

我决定写一个新的账户并在上面编译EA,但它不想编译。

我得到了23个像这样的错误 ( } )

我应该做什么,自2014年以来有什么变化?

 
Boss11:

不幸的是,这并不容易。如果我们采取MA5,时间框架1440(1天),选择第2条(前天),我们将得到最后一根蜡烛的开盘或收盘的MA5,但不是14.30时刻。而这正是我们需要说明的。再一次。技术指标是由几个蜡烛图计算出来的,它们在00.00开盘(如果我们说的是一天),它们在23.59收盘,但最后一个蜡烛图(如果是0条)没有收盘,我们取0条的最后价格来计算它。如果MA是在零条上,这很容易,但如果不是零条而是前一天的中间,我们应该怎么做?如何在TF1440中计算前一天的МА?

这非常简单。为了计算iMA,需要7个参数。第一个参数,即符号的名称,是很明显的。作为第二个参数,时间框架,设置为M1。第三个参数--周期--根据需要设置多少次,多少天是超过一分钟的。第四个参数 - shift = 0。接下来的两个参数--平均数的方法和价格类型--你知道。最后一个是栏位号,如果你知道你需要的时间,请计算栏位号。就这样吧!通过对M5和M15的时间框架进行计算,对其进行反复检查。也许甚至是为了M30。
 

你好。感谢STARIJArtyom Trishkin 的最后咨询。但由于我仍然是个新手,所以出现了其他问题。例如,以下内容。我使用以下函数只在一个栏里开一个头寸。

void Fun_New_Bar()                              // Ф-ия обнаружения нового бара   
  {                                             
   static datetime New_Time=0;                  // Время текущего бара  
   New_Bar=false;                               // Нового бара нет  
   if(New_Time!=Time[0])                        // Сравниваем время  
     {  
      New_Time=Time[0];                         // Теперь время такое  
      New_Bar=true;                             // Поймался новый бар  
     }  
  }

而一个问题立即出现了:为什么我每次访问函数时都需要将一个静态变量"发送到时间的起点"?毕竟,它在第一次调用时就自己接受了零值,然后让它存储上一个零条的值直到下一次调用,而不是被重置为零。也许这个简单的功能可以被简化。然而,我自己也害怕把它搞砸了。关于这个函数还有一个问题:是不是表达式New_Time=Time[0]; 并没有捕捉到新条形图打开时的毫秒? 然后会发生什么? 谢谢。

 
novichok2018:

你好。也感谢STARIJ 的最后一次咨询。但由于我仍然是个新手,所以出现了其他问题。例如,以下内容。我使用以下函数只在一个栏里开一个头寸。

随即产生了一个问题:为什么我每次访问函数时都需要将一个静态变量"发送到时间的起点"?毕竟,它在第一次调用时就自己接受了零值,然后让它存储上一个零条的值直到下一次调用,而不是被重置为零。也许这个简单的功能可以被简化。然而,我自己也害怕把它搞砸了。关于这个函数还有一个问题:是不是表达式New_Time=Time[0]; 并没有捕捉到新条形图打开时的毫秒? 然后会发生什么? 谢谢。

而且你可以读取一个静态变量被初始化的次数。而问题本身将因其荒谬性而消失;)
 
novichok2018:

你好。感谢STARIJArtyom Trishkin 的最后咨询。但由于我仍然是个新手,所以出现了其他问题。例如,以下内容。我使用以下函数只在一个栏里开一个头寸。

而一个问题立即出现了:为什么我每次访问函数时都需要将一个静态变量"发送到时间的起点"?毕竟,它在第一次调用时就自己接受了零值,然后让它存储上一个零条的值直到下一次调用,而不是被重置为零。也许这个简单的功能可以被简化。然而,我自己也害怕把它搞砸了。关于这个函数,我还有一个问题:New_Time=Time[0]; 这个表达式不可能捕捉到新的条形图打开时的毫秒吗? 然后会发生什么? 谢谢。


关于第二个问题。

如果第一个钩子没有抓住,第二个钩子就会抓住。