[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 11

 
Fox_RM:

我试着用NewBar() 函数在一个新条上开单。如果是用于此目的?

例如, 如果(NewBar())i++; 类似这样。

我没有注意到NewBar,对不起。

然后改变以下内容。如果你只在一个新的条形图上开立交易,你就不需要在每个刻度上计算整个指标。

因此,在检查开启交易的条件之前,移动整个指标计算,并且不要计算你需要的条数(如果我没有弄错的话,是20条)。


因此,策略如下。

1)新酒吧? 不--步行

2)是的--计算我们需要的一切(MA,指标,其他条件的一切)。

3) 检查条件 - 不 - 走

4)是的--以当前价格(分别是卖出价或买入价)开盘。

 
ilunga:

NewBar没有注意到,我很抱歉。

然后改变以下内容。如果你只在一个新的条形图上开仓交易,你就不需要在每个刻度上计算整个指标。

因此,在检查交易开盘条件之前,移动整个指标的计算,不计算多少条,而是计算你需要的条数(如果我没弄错的话,是20条)。

这是正确的20。我大致上明白了如何做。请解释一下我的计算和专家顾问的20条计算之间的区别。

我只是想了解错误的本质。

 
Fox_RM:
大家好!
我决定重写我的专家顾问指标的代码,以跟踪
我决定改变我的指标的代码,以跟踪其信号的操作。
我在编译时没有错误,在策略测试器中也没有错误。

我不知道如何使用它。

Z.U.我相信有很多愚蠢的错误,请拍空。

例如,按照你看到的情况重写代码比在这里整理 "你在跳什么舞 "更容易。

  ArrayResize(MA1,Bars);ArrayResize(MA2,Bars);

我还没有遇到过EA中的指标所使用的功能会如何运作。

  int counted_bars=IndicatorCounted();  

但是,如果 "不管",你组织的循环。

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

其中limit = Bars - counted_bars,在第2个tick将取一个等于0的值,然后通过代码将被分配一个值。OPA - 这是一个新的编程世界。

  if(limit>0) limit=0;

...试着这样写这个条件,如果它没有破坏整个策略的话。

  if(limit<=0) limit=1;
 
Fox_RM:

即用这个条件来重新计算酒吧?

但在我的指标中,每一个刻度都会计算TP_UP和 TP_DN 数组。因此,必须首先计算它们。


同样,OP_BUY的开盘价=Ask,OP_SELL=Bid。

而你有Close[i]。

 
Fox_RM:

这是正确的20。我大致了解如何做到这一点。请解释一下我的计算和专家顾问的20条计算之间的区别。

我只是想了解错误的本质。

整个指标的计算 中没有这样的错误。只要想想什么是更快的。

1)每一个刻度线都要计算条数(大约10000条)。

2)每分钟数20个小节1次(甚至更多)。

 
Fox_RM:
大家好!
我决定重写我的专家顾问指标的代码,以跟踪
我决定改变我的指标的代码,以追踪其信号的处理。
我在编译时没有错误,在策略测试器中也没有错误。

我不知道如何使用它。

Z.I.我相信有很多错误和愚蠢的,请射空。

不是主要的,但为了简化代码,这个结构。

  ArrayResize(TP_UP,20);ArrayResize(TP_DN,20); 
  ArrayResize(TP_UPMin,20);ArrayResize(TP_DNPl,20);

应该用一个具有维度的简单数组声明来代替。

double delta,price,old_price,col_bar,sum_tick,sum_pip,TP_UP[20],TP_DN[20],TP_UPMin[20],TP_DNPl[20];
 
Fox_RM:

这是正确的20。我大致了解如何做到这一点。请解释一下我的计算和专家顾问的20条计算之间的区别。

我只是想了解错误的本质。

这些都是主要的{FUNDAMENTAL编程原则--不要做没有意义的事情!:)))
 
Fox_RM:
还有一个问题与图书馆的运作有关。
我创建了库文件,编译了它,一切都没有错误。
我把这个函数导入到指标代码中,进行了编译,一切也都正常了。
当我启动指标时,要导入的函数没有被执行,当我用

指标代码,一切正常。下面是库的代码。

这是指标代码中的一个调用。

//+------------------------------------------------------------------+
//|                                                         lib1.mq4 |
//|                                         Copyright © 2012, Fox.RM |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Fox.RM"
#property link      "http://www.metaquotes.net"
#property library
//+------------------------------------------------------------------+
//| My function                                                      |
//+------------------------------------------------------------------+
double Sredn(double & ArrSr[])
{
double a=1,c,step=1/20;
for (int i=0;i<=20;i++)
{if (ArrSr[i]==0){a*=1;}else{a*=MathAbs(ArrSr[i]);}}
c=MathPow(a, step);
  return(c);
}
//+------------------------------------------------------------------+
 
Zhunko:

瓦迪姆,你把这么小的(&),你不能直接看到它!...!:)))

我想知道作者(在作者的版本中)这个功能是如何在一个地方执行的,而不是在另一个地方执行的!我不知道。;)

 
Fox_RM:

这是正确的20。我大致了解如何做到这一点。请解释一下我的计算和专家顾问的20条计算之间的区别。

我只是想了解错误的本质。

顺便说一下,我注意到你声明的工作数组大小为20。

  ArrayResize(TP_UP,20);ArrayResize(TP_DN,20); 
  ArrayResize(TP_UPMin,20);ArrayResize(TP_DNPl,20);

而你的库计算了21个元素。

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

我可以假设,循环应该从1开始。

for (int i=1;i<=20;i++)