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

 
Maxim Kuznetsov:

请看oanda api - 如果我没有看错的话,图片上是PositionBook。

谢谢你

 
Artyom Trishkin:

所以你必须禁用自动滚动的图形。并记住,这是一个异步命令。

残缺的....

 
Сергей Таболин:

残缺的....

那么你需要在你自己的代码中寻找。

 

我试图在MT5中从较早的时期获取MA指标数据。

//OnInit
 if((slowMovingHandleHigherTF=iMA(_Symbol, HighMovingsTF, SlowMovingPeriod_HigherTF, 0, MA_Method, MA_Apply_To))==INVALID_HANDLE) {
      PrintFormat("Slow moving (HigherTF) handle troubles");
      return (INIT_FAILED);
   }
//OnCalculate
 if(!FillArrayFromBuffer(slowMovingHandleHigherTF,SlowValuesHigherTF,0,40)) Print("Beda");

但我得到错误4806(未找到所需数据)。当我从当前的时间框架中拿出来时,一切都很好。它需要数据。但我对更高的那个人有问题。 请告知如何解决这个问题

 
Artyom Trishkin:

那么你需要在你自己的代码中寻找。

你能告诉我我哪里错了吗?

void OnStart()
{
   ArraySetAsSeries(rates,true);
   ChartSetInteger(ChartID(),CHART_AUTOSCROLL,false);
   

   for(int i = 0; i < in_range; i++)
   {

   // Тут рассчитываю X
      if(X)       {          ChartNavigate(ChartID(),CHART_END,-i);          if(MessageBox(ask,"ASK",MB_OKCANCEL) == IDOK)          {             ObjectCreate(ChartID(),"SigDN_"+IntegerToString(i),OBJ_VLINE,0,rates[i].time,rates[i].open);             //return;             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_COLOR,clrRed);             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_SELECTABLE,true);             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_SELECTED,false);             ObjectSetInteger(ChartID(),"SigDN_"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);             Print("SigDN_",i);          }       }    } }

我在一开始就在H2上运行了这个脚本。

就像我之前写的那样,它工作得很好,然后,从某种程度上说,图表被定位在末端,出现MessageBox。如果我看不到找到的数字,为什么要回应一个请求?

 

2361
从H1期开始,一个变量或函数输出奇怪的值。

Print(_Period);
Print(Period());
H1
16385
16385
H4
16388
16388

等。

 
Roman:

2361
从H1期开始,一个变量或函数输出奇怪的值。

等。

他们的 "陌生感 "是什么?

 
Artyom Trishkin:

他们的 "陌生感 "是什么?

变量_Period和Period() 到M30(包括M30),输出以分钟为单位的值。
如果时期是M1,那么1
如果周期M2,那么2
...
如果期间M30,那么30

符合逻辑的是,每小时的时间将是60分钟。
两小时的时间 120
三小时180
等。

但从H1开始,显示的是错误的数值。

 
Roman:

_Period变量和Period()函数,到M30为止,都是以分钟为单位输出数值。
如果是M1时期,则为1
如果周期M2,那么2
...
如果M30的周期为30

符合逻辑的是,每小时的时间将是60分钟。
两小时的时间 120
三小时180
等。

但从H1开始,显示的是错误的数值。

EnumToString(Period())

 
Сергей Таболин:

EnumToString(Period())

帮助说,应该返回时间框架值,而不是用EnumToString() 转换的标识符
_Period变量返回int。
ENUM_TIMEFRAMES Period()也意味着将返回int。

原因: