ICustom函数 - 页 8

 
 

看看MQL帮助中的iCustom函数,它正是你所要求的。

 

就这样吧!

谢谢!

 

习俗

你好。

有时候,如果指标是作为调用iCustom的结果而运行的,那么我的指标的操作需要稍有不同,而如果指标是附在图表上的,则通常会运行。

在MQL中是否有一个简单的函数 或方法,可以在一个指标中使用,以确定该指标是否因为附在图表上而被明确地运行,或者该指标是否因为调用iCustom而运行?

作为一种权宜之计,我在我的指标中加入了一个名为 "自定义 "的布尔参数,默认值为false。如果我调用iCustom来运行指标,那么我就把这个参数设置为真。这样我就可以在我的指标中知道,指标的运行是否是对iCustom的调用的结果。

当然,一定有一些函数,比如IsCustom(),如果指标是通过iCustom运行的,则返回真,否则返回假。

有没有人有一个优雅的、简单的方法来确定一个指标是否是通过iCustom调用而运行的?

请注意。

劳伦斯。

 

谢谢大家的帮助!

aj

 

icustom问题

我一直想做一个指标,只通过icustom调用另一个指标。我做了这行代码。

double COG=iCustom(NULL,0, "COGpoint1",50,3000,0,true)。

我试着把这行代码放在不同的地方,我还玩了一下双倍数的名称,我一直在阅读和阅读很多教程。我想,也许我必须在开始时放一些东西,比如缓冲区的数量!也许它不应该是一个双数?

现在的情况是,我在编译时遇到了错误。

'init' - 预计是逗号或分号

'init'--不允许在全局范围内表达。

因为我觉得我读过的教程(我想我都读过了)都给了我icustom的代码行,但仅仅有这一行是不行的,我知道它必须为每个指标 进行修改,但解释中缺少一些东西。

 

我在这方面进行了一次重大尝试,我为自己感到相当自豪!我从Codersguru那里得到了一些代码,我把它改成了一个指标。我从Codersguru那里得到了一些代码,我把它改成了一个指标。lol它看起来不错,编译时没有错误(第一次!!!!!),但是......当你把它添加到图表中时,它使metatrader "没有反应"。

我改变了所有指标的缓冲区名称(从val1, val2, val3, val4.到value1, value2...等),因为我认为它们相互干扰,因为我更好地看了Codersguru的代码(他做了一个用icustom调用supertrend的代码),他改变了缓冲区的名称,所以我认为一定是这个原因,但没有仍然没有反应。

//+------------------------------------------------------------------+

//| COG call.mq4 !

//| |

//| |

//+------------------------------------------------------------------+

#属性 indicator_separate_window

#属性 indicator_buffers 4

#属性 indicator_color1 Lime

#属性 indicator_color2 红色

#属性 indicator_color3 CLR_NONE

#属性 indicator_color4 CLR_NONE #属性 indicator_color4 CLR_NONE

//---- 缓冲区

double value1[];

double value2[];

double value3[];

double value4[];

//+------------------------------------------------------------------+

//|自定义指标 初始化函数

//+------------------------------------------------------------------+

int init()

{

//---- 指标

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1,Lime);

SetIndexBuffer(0,value1);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1,Red);

SetIndexBuffer(1,value2);

SetIndexStyle(2,DRAW_NONE);

SetIndexBuffer(2,value3);

SetIndexStyle(3,DRAW_NONE);

SetIndexBuffer(3,value4);

//----

return(0);

}

//+------------------------------------------------------------------+

//|自定义指标去初始化函数|

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//|自定义指标迭代函数|

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted()。

//----,检查是否有错误

如果(counted_bars<0)返回(-1)。

//---- 最后一个被计算的柱子将被重新计算。

如果(counted_bars>0) counted_bars--;

int pos=Bars-counted_bars;

while(pos>=0)

{

value1[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true)。

value2[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true);

value3[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true);

value4[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true);

}

return(0);

}

//+------------------------------------------------------------------+

 

这是我得到Codersguru编写的代码的地方。

https://www.mql5.com/en/forum/173108

我注意到我的代码中遗漏了一个部分,即两端的pos和pos--。

value1[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos)。

value2[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos);

value3[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos);

value4[pos]=iCustom(NULL,0, "COGpoint1",50,3000,0,true,pos);

pos--。

让我们试试吧!

 

LOL LOL LOLLLLLLLL哈哈哈!哦,我的上帝

好吧,我已经取得了进展,我的指标有一半在屏幕上(只有指标的红色部分,笑,绿色部分在哪里?)这是我第一次有一半工作,虽然我不能相信,哈哈哈!有没有人知道我做错了什么?

 

嗯,我在后面加了数字0、1、2、3做实验。我不知道为什么?但它起到了作用,现在我有一条平坦的红线和绿色!!!!。

耶!但这是不对的,可能更糟糕,这很奇怪!请人帮助我......每个人都在睡觉,除了我!"。