错误、漏洞、问题 - 页 2531

 
Aleksey Vyazmikin:

很遗憾,我们甚至不敢参加测试。在我看来,这个话题很有意思,因为事实证明,不同的处理器处理不同的任务是不同的,但目前还没有足够的统计数据。

我的稀有度处理器只留在我手中,放在博物馆里,几乎没有人对它感兴趣。

 
Aleksey Vyazmikin:

很遗憾,你甚至不敢参加测试。

想在第一天运行一个测试,但这个话题已经发展到好几页了,第一版测试代码中的一些bug......没有再看下去,我自己的兴趣所在

我想我需要一个清晰的手册(有图片),以及对用户做什么的最低限度的思考,然后用户的活动可能会出现

 
Igor Makanu:

我想在第一天就进行测试,但这个话题发展到好几页,第一版测试代码的一些错误......我不想再读下去了,对自己的兴趣感兴趣了

我想我需要一个清晰的手册(有图片),以及对用户做什么的最低限度的思考,然后用户活动可能会出现

而论坛本身对于这样的事情是非常不舒服的,我们需要话题的作者有机会在任何时期结束时编辑第一篇帖子,所有必要的、相关的信息都在这里,而不是在大量的信息中搜索。在这种形式下,它只是一个供人玩弄的线。

 

这里有一个问题。

我需要存储一个指向double[]类型数组的指针(通常,指标),以便可以在程序中引用它。

标准的开发者建议要么在整个函数层次结构中传递对这个数组的引用,在绝对没有必要的地方把输入参数弄得杂乱无章,要么在每次勾选时 把整个数组复制到自己身上,然后使用对其内部数组的引用,这样可以在函数层次结构中传递和记忆并使用。

在我看来,这两种解决方案都非常难看。通过整个调用树传递一个引用已经很难看了,当你考虑到我们不知道在什么时候可能需要访问数组时,这就变得非常愚蠢了。

在每次打勾时复制整个数组,当有一个源头时,也是一种心态,最重要的是,它失去了生产力。

有人遇到过这个问题吗?如何绕过这个愚蠢的限制?

我记得有一次,我想,fxsaber 建议用一些萨满教的动作来实现地址复制的功能,但我找不到了。

谁能建议什么?

 
Vict:

我的稀有度处理器只在我手中,而且是在博物馆里,对任何人来说都很难有兴趣。

评估进展总是很有趣。


伊戈尔-马卡努

我想在第一天就进行测试,但这个话题已经发展到好几页了,第一版测试代码的一些错误......我没有继续读下去,而是忙于自己的兴趣爱好了

我想我需要一个清晰的手册(有图片),以及对用户做什么的最低限度的思考,然后用户的活动可能会出现

那里不应该有任何错误,其他的都运行良好。现在有一张截图,显示了策略测试器 应该如何设置。

我认为设置优化器一点都不难......现在那里不清楚的是--让我给你一个提示。


胜利

而论坛本身对于这样的事情是很不适应的,我们需要主题的作者能够在任何时期结束时编辑第一篇帖子,所有必要的、相关的信息都在这里,而不是在大量的帖子中搜索。在这种形式下,它只是一个供人玩弄的线。

我们没有另一个论坛,我在有信息时定期更新结果--这并不难找。

 
Georgiy Merts:

这里有一个问题。

我需要存储一个指向double[]类型数组的指针(通常,指标),以便可以在程序中引用它。

标准的开发者建议要么在整个函数层次结构中传递对这个数组的引用,在绝对没有必要的地方把输入参数弄得杂乱无章,要么在每次勾选时 把整个数组复制到自己身上,然后使用对其内部数组的引用,可以在函数层次结构中传递并记忆和使用。

在我看来,这两种解决方案都非常难看。通过整个调用树传递一个引用已经很难看了,当你考虑到我们不知道在什么时候可能需要访问数组时,这就变得非常愚蠢了。

在每次打勾时复制整个数组,当有一个源头时,也是一种心态,最重要的是,它失去了生产力。

有人遇到过这个问题吗?如何绕过这个愚蠢的限制?

我记得有一次,我想,fxsaber 建议用一些萨满教的动作来实现地址复制的功能,但我找不到了。

谁能建议什么?

如果我们谈论的是mql5,我们可以把指标包装在一个类中,如果有必要,可以把它拉出来,在这个类中,我们组织复制和存储必要的数据到需要的ngbin,并控制它在每个tick的单一更新。我是这样做的。
 
Vladimir Simakov:
如果我们谈论的是mql5,那么,作为一个替代方案,我们把指标变成一个类,如果有必要,获取它并使用它来存储和复制必要的数据到需要的ngbin,并控制它在每个tick的单一更新。我是这样做的。

这就是我自己通常做的事...

但它对指标缓冲区不起作用。还是我错过了什么,它可以以某种方式进行?

 
Georgiy Merts:

但用指示器缓冲器,包边并没有消失。

它总是这样。
 
Georgiy Merts:

但对于指示器缓冲区来说,包装并没有通过。还是我错过了什么,能否以某种方式进行?

一切正常,但作为指标缓冲区 的数组应该用公共修改器描述

我为MQL4创建了一个HMA指标--在一个子窗口中有4个指标。

CHMA *hma[4];
int OnInit()
  {
//--- indicator buffers mapping
   int i=0;
   hma[0] = new CHMA(4,PeriodInd1,Method1,Price1,Shift1);
   hma[1] = new CHMA(3,PeriodInd2,Method2,Price2,Shift2);
   hma[2] = new CHMA(2,PeriodInd3,Method3,Price3,Shift3);
   hma[3] = new CHMA(1,PeriodInd4,Method4,Price4,Shift4);

   IndicatorBuffers(16);
   IndicatorSetDouble(INDICATOR_MINIMUM,0.0);
   IndicatorSetDouble(INDICATOR_MAXIMUM,5.0);
   IndicatorSetInteger(INDICATOR_HEIGHT,IndHeight);
   while(i<8)       { SetIndexBuffer(i,hma[int(i/2)].Uptrend); SetIndexBuffer(i+1,hma[int(i/2)].Dntrend); i+=2; 			}
   for(i=0;i<4;i++) { SetIndexBuffer(i+8,hma[i].ExtMapBuffer); SetIndexBuffer(i+12,hma[i].vect); 					}
   for(i=0;i<8;i++) { SetIndexStyle(i,DRAW_ARROW,EMPTY,ArrowWidth, i%2==0 ? ArrowColor1 : ArrowColor2); SetIndexArrow(i,ArrowCode); 	}
   for(i=8;i<17;i++){ SetIndexStyle(i,DRAW_NONE);											}
   IndicatorShortName("");
   IndicatorDigits(0);
//---
   return(INIT_SUCCEEDED);
  }

和类本身,其中旧指标的主体只是被复制了。

class CHMA
  {
private:
   int               period_,shift_,p,level_;
   ENUM_APPLIED_PRICE price_;
   ENUM_MA_METHOD    method_;
   double            GetWMA(int x,int per){ return(iMA(NULL,0,per,0,method_,price_,x+shift_)); }
public:
   double            ExtMapBuffer[],vect[],Uptrend[],Dntrend[];
                     CHMA(int level,int period,ENUM_MA_METHOD method,ENUM_APPLIED_PRICE price,int shift);
   void              calcind(int lim,int prevcalculated);
   int               lastvalue();
  };

黄色是旧指标的缓冲区,我根本不想改变旧指标的代码,我只是把它复制到类中,这花了我不到一个小时。

 
TheXpert:
总是这样。

你是什么意思?你可以将一个类成员 声明为一个指标数组?

我现在就去看看。

嗯...对...

好吧,那么--一切都简单多了,问题也就毫无悬念地解决了--我们将类成员声明为指示器数组,并传递一个指向这个类的指针供记忆。当然,这个解决方案不是很好,但在没有指向数组的指针的情况下,它是可以的。