[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 556

 
orb:

帮助!!!。

https://www.mql5.com/ru/forum/137960


当然,最好是切换到读/写阵列

1.不要每次迭代都将数组的大小改变为1,最好不要太频繁,例如必要时以50或100的增量增加。

2.你最好使用DoubleToStr()来打印支票。

3.我不明白为什么要用一个字符串变量来阅读

 
Vinin:


当然,最好是切换到读/写阵列

1.不要每次迭代都改变数组大小为1,最好不要太频繁,例如必要时以50或100的增量增加。

2.最好使用DoubleToStr()进行检查打印。

3.我不明白为什么要用一个字符串变量来阅读

1.否则就不工作了,它写的是空行,就像4个柱子,每次都要更新。

2.好的。

3.一个特殊的建议,现在它能正确地读取所有的东西。但事实证明,有一个空行是多余的,还有一个额外的运行。但价值不在那里,所以它相应地填充了空行。

 
orb:

1.否则就不工作了。它写的是空行,就像你每次都要更新4个列一样。

2.好的。

3.一个特殊的建议,现在它读取所有的东西都是正确的。但事实证明,一个空行是额外的,而一个额外的运行.和值是不存在的,分别是空行被填充。


有了这种方法,就会有大的刹车。
 
Vinin:

有了这种方法,就会有大的刹车。

我明白了,到目前为止,我这样写比较容易。

你能告诉我如何摆脱 "while "被执行一次的情况吗?

 
orb:

我明白了,到目前为止,我这样写比较容易。

我如何摆脱而被执行一次?



我无法摆脱它。但我没有使用字符串变量
 
明白了。那么,ArrayResize();的应用能否小于循环计数器,会不会从数组中删除这个字符串?
 
orb:
明白了。那么,ArrayResize();的应用是否可以小于循环次数,是否会从数组中删除这个字符串?

是的,会的。

你越是不经常使用这个功能,它的工作速度就越快。预留100个元素,通过控制数组超限进行读取。如果有必要,再增加100个元素的阵列。同时,你要保持实际下载的元素数量。在完全下载完数组后,你会做一个新的ArrayResize(),但要按实际下载的元素数量。

但处理数组的函数工作起来更正确。你应该首先将数组的元素 数量保存到一个文件中,然后再保存数组本身

先读取元素的数量,设置数组的大小。下载阵列。而且没有循环

 
Vinin:

是的,会的。

你越是不经常使用这个功能,它的工作速度就越快。预留100个元素,通过控制数组超限进行读取。如果有必要,再增加100个元素的阵列。同时,你要保持实际下载的元素数量。在完全下载完数组后,你会做一个新的ArrayResize(),但要按实际下载的元素数来做。

但处理数组的函数工作起来更正确。你应该首先将数组的元素数量保存到一个文件中,然后再保存数组本身

先读取元素的数量,设置数组的大小。下载阵列。而且没有循环

谢谢!我会记住这一点,以备将来之用。
 

请告知如何正确解决这个问题。

有一个旧TF到当前TF的支持/阻力水平的预测。有必要确定哪个水平是最后被价格测试的。我试图通过旗帜来做。

int start()
{ 
      int limit;
      int counted_bars=IndicatorCounted();
      if(counted_bars>0) counted_bars--;

      limit=Bars-counted_bars;
      if(limit>barsToProcess)
         limit=barsToProcess;

     for(int i=0;i<limit;i++)

{
 
  bool flag_R[], flag_S[], S[];

   double Level_Re = iCustom(NULL,0,"........",0,i); // для каждого бара получаем значения со старшего ТФ
   double Level_Su = iCustom(NULL,0,"........",1,i); // для каждого бара получаем значения со старшего ТФ

{
   if (iHigh(Symbol(),0,i)>=Level_Re)              // проверяем тестирование ценой уровня Re
   {flag_R[i]=true; flag_S[i]=false; S[i]=true;}   // выставляем флаги
   
   if (iLow(Symbol(),0,i)<=Level_Su)               // проверяем тестирование ценой уровня Su
   {flag_R[i]=false; flag_S[i]=true; S[i]=true;}   // выставляем флаги


   if (S[i]==false) {flag_R[i]=flag_R[i+1]; flag_S[i]=flag_S[i+1];} // если тестирования не было - берем предыдущее значение

   if (flag_R[0]==true) Print("Re zone tested"); if (flag_S[0]==true) Print("Su zone tested");
   
}
}

return(0);
}

但日志没有显示任何东西....。[例如,如果我设置Print(Level_Re),然后运行整个数组,日志将停止在最后一个条形的水平值,即水平本身的计算是正确的,但与标志的东西不工作我....。]

错误是什么?或者说什么是最好的方法?

 
alkador:

到T-G

像这样试试吧。

datetime expiration=TimeCurrent()+MaxSecLiveTime。

OrderSend(Symbol(), OP_BUYSTOP, Lots(), PriceBuy, 0, 0, 0, EA_Comment, Magic, expiration, CLR_NONE) 。


和有什么区别。

extern int MaxSecLiveTime = 120;
OrderSend(Symbol(), OP_BUYSTOP, Lots(), PriceBuy, 0, 0, 0, EA_Comment, Magic, TimeCurrent()+MaxSecLiveTime, CLR_NONE);