[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 371

 
Fox_RM:

实际上没有区别,只是获得A和B控制点的过程略有不同。我已经用数组试过了。

那么在A和B之间,我也必须在小节中循环。我看不出有别的办法,所以我才问。

也许有人能给我一个提示。也许代码编写的逻辑有问题?


1.避免换行,将代码排列成阶梯状。

2.使用结构化的if(...)代替重复的短条件语句...否则...

3.将图形对象形成函数的调用 从内循环(主刹车)中取出。

 
Chiripaha:

这一个。



...或更好的是,这其中的一个。

if (AOBuffer3[i]<=0){
   ExtMapBuffer1[i] =  nSum; Vol_Arr[i] =  Volume[i]*Point*coaf;
}
else{
   ExtMapBuffer1[i] = -nSum; Vol_Arr[i] = -Volume[i]*Point*coaf;
}
 
tara:

...或更好的是,其中之一。

是的,我同意。

我把我所有的建议都收集在 "老 "评论中(如果有的话)。- 它可能不是很 "正确",但也不会分散。

我认为问题在于文本的积累--反映在主要评论中(不知道如何链接到它--对不起)。

 
tara:

3.把图形对象形成的函数调用从内部循环(主制动)中取出。

现在,我也想知道--你是如何做到的?(实施)

Hm....正是如此!- 它是可以叠加的。而中间值并不重要。

      if (shift_up > shift_dn)
       {
        for (int dn_br = shift_dn; dn_br <= shift_up; dn_br++)            //-------------- Перебор значений внутри основного цикла
          {
           Vol_AO_up += Volume[dn_br]; 
          }   
         ObjectDelete ("Awesome_super_volumes"+up_koaf);        // Заодно и удалить старый текст, чтобы не копился
         SetText("Awesome_super_volumes"+up_koaf, DoubleToStr(Vol_AO_up,0), AO_time_dn, AO_dn, Blue);
       }

那么就不会有一大堆人了......

 

我的init函数中有这个调用。

GetMarketInfo();

这个功能在这里。

//+-------------------------------------------------------------------------------------+
//| Сбор рыночных данных                                                                |
//+-------------------------------------------------------------------------------------+
void GetMarketInfo()
{
   gd_spread = MarketInfo(Symbol(),MODE_SPREAD) * Point;
   gd_stopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL)  * Point;
   gd_tickSize = MarketInfo(Symbol(),MODE_TICKSIZE);
}

变量gd_spread,gd_stopLevel,gd_tickSize 我到现在为止都是全局声明的。现在我决定编写一些使用这些变量的库。事实证明,我把这些变量移到了头文件中。所以,为了避免在库的编译中出现错误,我应该把GetMarketInfo() 函数也转移到库中,对吗?

 
hoz:

我的init函数中有这个调用。

这个功能在这里。

变量gd_spread,gd_stopLevel,gd_tickSize 我到现在为止都是全局声明的。现在我决定编写一些使用这些变量的库。事实证明,我把这些变量移到了头文件中。所以,为了避免在库的编译中出现错误,我应该把GetMarketInfo() 函数也转移到库中,对吗?

绝对不要在init中调用这个函数--传播和停止水平可能在时间上有所不同
 
artmedia70:
当然不是在初始阶段--传播和停止平移可以随着时间的推移而改变。


我认为应该摒弃inite,以避免在实际交易中出现问题。如果连接被DC切断,然后出现,重新初始化将不会发生,这将导致在实际交易中的错误和问题,对吗?

那么,我们应该怎么做呢?在每个函数中不断地调用一些函数,这些函数将返回这些市场变量?

 
hoz:


我认为应该放弃启动,这样在实际交易中就不会出现故障。毕竟,如果连接被直流切断,然后出现,重新初始化将不会发生,而且在实际工作中已经导致错误和故障,对吗?

那么,该怎么做呢?在每个函数中不断调用一些函数,这些函数将返回这些市场变量?

这类信息应分为可改变的和不可改变的。

不可变的数据可以写在任何地方,因为即使连接中断,数据仍将是相关的。- 当然,最好不要在开始时,以免给猫头鹰带来不必要的负担。

但是变量可以通过函数调用(如果使用了库)或者只是在启动函数时更新它们。

 

这也是事实。大脑总是在思考生产力,在这个时候,头脑还不太知道如何做得最好。我有一个脾气......一个双胞胎 :(

对,你必须一次把一个和另一个分开。

不过,话说回来。如果市场环境变量gd_stopLevelgd_tickSize 被用于不同的功能(修改功能、订单发送功能等),那么在库函数中不断调用 获得指定值的函数 就不太合理。是否有一些方法来统一这一点?毕竟,与点差不同,止损和跳动大小将始终是相同的。

 
hoz:

这也是事实。大脑总是在思考生产力,在这个时候,头脑还不太知道如何做得最好。我有一个脾气......一个双胞胎 :(

对,你必须一次把一个和另一个分开。

不过,话说回来。如果市场环境变量gd_stopLevel,gd_tickSize 被用于不同的函数(修改函数,订单发送等),那么在库函数中不断调用获得指定值的函数是不太合理的。是否有一些方法来统一这一点?毕竟,与价差不同,止损和跳动大小将始终是相同的。

Artem已经说过,水平面也可以浮动--它不是一个恒定的值- 而刻度线的大小是,是的,是一个常数。

为了统一--再次将其分为2个函数--MarketInfoConst和MarketInfoImage(变量)。一个放在Inite,另一个放在Start(s)的开头。而且将有可能把它组合成一个图书馆。

生产力(猫头鹰优化)的问题是不同的。我个人并不把所有这些功能都塞进猫头鹰。我只是在需要的时候采取参数。是的,我必须写更多的代码,但猫头鹰处理的 "多余 "的库的东西较少,因为MarketInfo的所有东西在猫头鹰中可能都是必要的。