参考指标数组。
Results 1 to 5 of 5

Thread: 参考指标数组。

  1. #1
    是否可以引用已经在指标中初始化的数组。类似于iCustom函数,可能传递窗口索引,指标名称和缓冲区/数组索引。

    我有一个指标可以创建6个缓冲区/数组。然后我有一些其他指标可以运行重复代码,以产生这些相同缓冲区中的2或3个。一切工作正常,但我发现它在性能上可能是昂贵的,我赢得的细节目前还没有进入。

    如果我理解正确,iCustom及其参数实际上会运行代码(在其自己的线程中)来产生所需的返回值,这很好,但如果我目前主要关心的是性能,那么这不是我所需要的。

    我所追求的是能够引用已经初始化的指标的特定数组。在这种情况下,引用将来自安装在同一窗口中的不同指示符。但是,如果它可以从其他地方引用,它会很方便,因为我在其他指示器分开的子窗口中再次复制代码以生成1或2个基本指示器的缓冲区。

    我已阅读了一堆文章,但没有找到我需要的内容。我不认为这是可能的,因为这肯定是一个有据可查的策略,可以部分克服每个指标的8个缓冲限制。 (为什么他们有这个?)

    嗯#8230 ;.或者我在这里回答我自己的问题#8230;是重新设计我的指标以利用一系列iCustom呼叫#8230;的解决方案。 Hmnmmmm#8230;复杂而且可能超出了我的新手编程技能。

    任何想法/提示或果断#8220;否#8230;它可以完成#8221;将不胜感激。对不起,如果这个问题已被解决之前和/或显示我对MQL的无知。

    非常感谢任何答复。

  2. #2
    确认您的指标仅针对已更改的蜡烛进行计算。最大的表现杀手之一是指标,每滴答滴答地通过每一个蜡烛。

  3. #3

    Quote Originally Posted by ;
    确认您的指标仅针对已更改的蜡烛进行计算。最大的表现杀手之一是指标,每滴答滴答地通过每一个蜡烛。
    感谢您的回复。是的,使用counts_bars = IndiorCounted()等。我很欣赏在我没有发布任何内容时很难对代码发表评论....但是我想我只是希望能有一个快速而简单的答案....是的....你这样做。我相信基本代码是可以的......我会在需要时发布它......但是我相信基本代码是好的,因为写了它..... haha​​hahah。我遇到的问题比其他任何问题都更具理论性......我发现我复制了很多代码来重现已经在指标中产生的值......如果我能够引用该值,而不是一次又一次地运行代码....就像我说的......我的代码运行良好,但是当我在这里调整它并调整它时,试验了使用相同基本inidior缓冲区的其他指标。 ..这个问题一直在为我提供....促使我花了几个小时在这里和在tsd帮助文件和文章,看看是否有解决方案,我相信是一个共同的问题。基本上......可以从一个指标中的一个初始化数组引用另一个单独的指标。有问题的指标是将一篮子货币对绘制为单一货币对......即,它汇总每个货币对的HLOC并将其绘制为蜡烛。也许我没有足够清楚地解释它。但我不能想到一个更好的方式来解释它,而不是发布页面和代码页。 ================================================== ==============这里有一些代码段可以帮助解释我的意思....如果需要,我可以发布这些指标,但这需要一些时间,因为我已经做出了相当多的基本篮子指标的修改允许我快速加载不同的篮子......但我相信你会看到我的意思是关于线程问题。 int start(){int counted_bars = IndiorCounted();双ch,cl,cb,co; if(counts_barslt; 0)return(-1);/----最后一个计数的小节将被重新计数if(counts_barsgt; 0)counts_bars--; int pos = Bars-counted_bars;当(posgt; = 0){ch = gethigh(Pair1,Tperiod,pos) gethigh(Pair2,Tperiod,pos) gethigh(Pair3,Tperiod,pos) gethigh(Pair4,Tperiod,pos) gethigh(Pair5, Tperiod,pos) gethigh(Pair6,Tperiod,pos) gethigh(Pair7,Tperiod,pos) gethigh(Pair8,Tperiod,pos); cl = getlow(Pair1,Tperiod,pos) getlow(Pair2,Tperiod,pos) getlow(Pair3,Tperiod,pos) getlow(Pair4,Tperiod,pos) getlow(Pair5,Tperiod,pos) getlow ,Tperiod,pos) getlow(Pair7,Tperiod,pos) getlow(Pair8,Tperiod,pos); cb = getbid(Pair1,Tperiod,pos) getbid(Pair2,Tperiod,pos) getbid(Pair3,Tperiod,pos) getbid(Pair4,Tperiod,pos) getbid(Pair5,Tperiod,pos) getbid ,Tperiod,pos) getbid(Pair7,Tperiod,pos) getbid(Pair8,Tperiod,pos); co = getopen(Pair1,Tperiod,pos) getopen(Pair2,Tperiod,pos) getopen(Pair3,Tperiod,pos) getopen(Pair4,Tperiod,pos) getopen(Pair5,Tperiod,pos) getopen ,Tperiod,pos) getopen(Pair7,Tperiod,pos) getopen(Pair8,Tperiod,pos);.................................................这些然后将值传递给一系列缓冲区并用于绘制一个蜡烛。所谓的功能如下: - ........................................... ...... double gethigh(string c,int tf,int ni){if(StringLen(c)lt; 6)return(0); RefreshRates(); double chigh = iHigh(c,tf,ni)/MarketInfo(c,MODE_POINT);回报(Chigh的); } double getlow(string c,int tf,int ni){if(StringLen(c)lt; 6)return(0); RefreshRates(); double clow = iLow(c,tf,ni)/MarketInfo(c,MODE_POINT);返回(克洛); } double getbid(string c,int tf,int ni){if(StringLen(c)lt; 6)return(0); RefreshRates(); double cbid = iClose(c,tf,ni)/MarketInfo(c,MODE_POINT);回报(CBID); } double getopen(string c,int tf,int ni){if(StringLen(c)lt; 6)return(0); RefreshRates(); double copen = iOpen(c,tf,ni)/MarketInfo(c,MODE_POINT);返回(C打开); } ================================================= ========所以现在假设我想为篮子产生一个RSI指标或者Stochs指标....而不必重复代码来重现缓冲区,比如......出价(对于RSI)。 ...或高,低,出价缓冲区(用于Stochs)是可以引用原始指标在...子窗口1,指标= BasketBars,缓冲区1,数组元素27或其他。希望你能看到我要去的地方。在通用的MQL编程中是否存在缺少可以减少我目前使用的所有冗余/重复代码的内容。正如我所说....我的指标工作正常.....但我有这种唠叨的感觉,我失去了一些东西,可以使整个事情变得更容易和可能更快。我明白能够引用原始指标......在这种情况下不会导致更快的性能,因为原始指标和RSI篮指标中的两个缓冲区都只是修改了最新更改的蜡烛,正如您所指出的那样。 ......但理论上......有可能。由于我的策略的最终结果是为8个篮子中的每一个使用多个时间范围,每个时间范围都使用RSI和Stochs,每个时间范围有3个不同的时间段......所以即使在一个实例中,性能增加可能可以忽略不计,总的来说它可能是显着的。再次感谢任何帮助或提示....我感谢。

  4. #4

    Quote Originally Posted by ;
    我看到你在问什么,不幸的是你不能从运行指标中引用缓冲区。这实际上是很好的,而MT4不是很好。大声笑!
    谢谢。我不这么认为。哦,好吧....至少我不再想知道了。队友的欢呼声。

  5. #5
    我看到你在问什么,不幸的是你不能从运行指标中引用缓冲区。这实际上是很好的,而MT4不是很好。大声笑!您唯一的希望就是iCustom函数,您可以在其中分别引用每个缓冲区。

發布權限

  • 您不可發布新主題
  • 您不可回复
  • 您不可發布附件
  • 您不可編輯您的帖子
  •  
  • BB代碼是打開的
  • 表情符號是打開的
  • [IMG]代碼是打開的
  • [視頻]代碼是打開的
  • HTML代碼是關閉的
forex-pedia網站使用cookie 文字跟蹤
forex-pedia.com網站使用cookie 文字跟蹤,某些設定已經固定。您可以點擊此處閱讀我們的Cookie使用說明。 請點擊右鍵接受我們的cookies。如果您選擇繼續使用forex-pedia.com網站,我們將認為您接受我們的cookies。