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

 
Alekseu Fedotov:

就这么简单。

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));

它是这样的。


阿列克谢-费多托夫, 不幸的是,这不是它。你用TF获得条形号码,然后你用同样的TF,但你需要另一个(这就是问题)。我们需要用TF得到条形图的编号(例如30),然后用TF(1440)得到MA,从这个条形图的TF30开始。 就像你现在(14.30)想得到TF1440的MA。现在--不是问题,但要把它转移到几天前,那就是一个问题。

 
STARIJ:
是的,我们应该使用M1,和M5,....- 来检查。也许使用插值法?mt5有一个tick历史。如果你让我知道利润在哪里,我会再看一下。

我需要回顾性地做技术分析,就像现在发生的一样,看一下结果。这就好比我昨天用TF 1d在14.30做了MA的技术分析,今天我通过昨天的MA得到了价格走势的结果。 如果我今天用TF 1440,从昨天的角度看,技术分析的数据将是不同的,因此预计结果也应该是不同的。

 
Roman Sharanov:

帮助,我需要从上一个蜡烛的高点到它上面的200p点画一个矩形,并提前一个柱子计时。

我写了代码,但我不明白为什么矩形的左点不移动?右边的那个滑到了海的后面。

函数的非预期行为...早些时候,当我试图创建一个以已经存在的对象命名的对象时,返回了一个错误,该对象没有将现有的参数变为新的参数。但现在,很明显,做出了改变,每次high[0]被改变或出现新的柱状物时,high[1]已经有了不同的值,在创建新的矩形时,其中一个参数发生了变化。

解决的方法很简单:在创建对象之前检查其存在性。

 
STARIJ:

它移动



不,我没有用这个代码画任何东西

 
Roman Sharanov: 不,它没有用这个代码画任何东西。

看看我的整个文件。

附加的文件:
PR.mq4  3 kb
 
STARIJ:

看一下我的文件


哦,我明白了,你有MQL4 :)
按时间序列做了数组,成功了,我还是不明白为什么它对我不起作用。

 
Boss11: 我需要回顾性地做技术分析,就像现在发生的一样,看一下结果。也就是说,就像我昨天用TF 1d在14.30做了一个MA的技术分析,今天我通过昨天的MA得到了价格走势的结果。 如果我今天用TF 1440,从昨天的角度看,技术分析的数据就会不同,因此预计结果也应该不同。

对于TF1440,一切都很清楚。但对于M1,正如你所写的,有很大的误差空间?

 
STARIJ:

用TF1440一切都很清楚。但用M1就像你写的那样,有很大的误差?


我没有用M1试过,但我认为错误率会更低。M1->M5将比M30->1d更准确。

 

请告知一个具体问题的答案。我正在重做布林。

改了几行,不画条。这是什么,对数吗?

波动率公式来自https://research-journal.org/economical/analiz-razlichnyx-metodov-ocenki-istoricheskoj-volatilnosti-dlya-opcionnoj-torgovli/

int start()
  {
   int    i,k,counted_bars=IndicatorCounted();
   double deviation;
   double sum,oldval,newres,oldpos;
//----
   if(Bars<=BandsPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=BandsPeriod;i++)
        {
         MovingBuffer[Bars-i]=EMPTY_VALUE;
         UpperBuffer[Bars-i]=EMPTY_VALUE;
         LowerBuffer[Bars-i]=EMPTY_VALUE;
        }
//----
   int limit=Bars-counted_bars;
   if(counted_bars>0) limit++;
   for(i=0; i<limit; i++)
      MovingBuffer[i]=iMA(NULL,0,BandsPeriod,BandsShift,MODE_EMA,PRICE_WEIGHTED,i);
//----
   i=Bars-BandsPeriod+1;
   if(counted_bars>BandsPeriod-1) i=Bars-counted_bars-1;
   while(i>=0)
     {
      sum=0.0;
      k=i+BandsPeriod-1;
      oldval=MovingBuffer[i];
      oldpos=i;
      while(k>=i)
        {
         //newres=Close[k]-oldval;
         //sum+=newres*newres;
          sum+=log(fabs(High[k]/Close[k]))*log(fabs(High[k]/Open[k]))+log(fabs(Low[k]/Close[k]))*log(fabs(Low[k]/Open[k]));
         k--;
        }
      deviation=BandsDeviations*MathSqrt(fabs(sum/BandsPeriod));
      UpperBuffer[i]=oldval+deviation;
      LowerBuffer[i]=oldval-deviation;
      i--;
     }
附加的文件:
 

请告诉我如何删除一个图形对象。有一些垂直线,其名称是由变量值构建的。

string name=="test1"; string Vertline="line_"+name; ObjectCreate(0,VertLine,OBJ_VLINE,0,time,cena); 我怎样才能只删除名称为test1的垂直线?