ICustom函数 - 页 8 123456789101112131415...23 新评论 druelus 2008.11.30 10:26 #71 zupcon 2008.11.30 10:34 #72 看看MQL帮助中的iCustom函数,它正是你所要求的。 druelus 2008.11.30 10:42 #73 就这样吧! 谢谢! [删除] 2008.12.14 15:12 #74 习俗 你好。 有时候,如果指标是作为调用iCustom的结果而运行的,那么我的指标的操作需要稍有不同,而如果指标是附在图表上的,则通常会运行。 在MQL中是否有一个简单的函数 或方法,可以在一个指标中使用,以确定该指标是否因为附在图表上而被明确地运行,或者该指标是否因为调用iCustom而运行? 作为一种权宜之计,我在我的指标中加入了一个名为 "自定义 "的布尔参数,默认值为false。如果我调用iCustom来运行指标,那么我就把这个参数设置为真。这样我就可以在我的指标中知道,指标的运行是否是对iCustom的调用的结果。 当然,一定有一些函数,比如IsCustom(),如果指标是通过iCustom运行的,则返回真,否则返回假。 有没有人有一个优雅的、简单的方法来确定一个指标是否是通过iCustom调用而运行的? 请注意。 劳伦斯。 95032792 2008.12.27 04:40 #75 谢谢大家的帮助! aj bamben 2009.01.01 23:27 #76 icustom问题 我一直想做一个指标,只通过icustom调用另一个指标。我做了这行代码。 double COG=iCustom(NULL,0, "COGpoint1",50,3000,0,true)。 我试着把这行代码放在不同的地方,我还玩了一下双倍数的名称,我一直在阅读和阅读很多教程。我想,也许我必须在开始时放一些东西,比如缓冲区的数量!也许它不应该是一个双数? 现在的情况是,我在编译时遇到了错误。 'init' - 预计是逗号或分号 'init'--不允许在全局范围内表达。 因为我觉得我读过的教程(我想我都读过了)都给了我icustom的代码行,但仅仅有这一行是不行的,我知道它必须为每个指标 进行修改,但解释中缺少一些东西。 bamben 2009.01.02 00:31 #77 我在这方面进行了一次重大尝试,我为自己感到相当自豪!我从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); } //+------------------------------------------------------------------+ ICustom function [警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 艾略特波 bamben 2009.01.02 00:41 #78 这是我得到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--。 让我们试试吧! bamben 2009.01.02 00:54 #79 LOL LOL LOLLLLLLLL哈哈哈!哦,我的上帝 好吧,我已经取得了进展,我的指标有一半在屏幕上(只有指标的红色部分,笑,绿色部分在哪里?)这是我第一次有一半工作,虽然我不能相信,哈哈哈!有没有人知道我做错了什么? bamben 2009.01.02 01:35 #80 嗯,我在后面加了数字0、1、2、3做实验。我不知道为什么?但它起到了作用,现在我有一条平坦的红线和绿色!!!!。 耶!但这是不对的,可能更糟糕,这很奇怪!请人帮助我......每个人都在睡觉,除了我!"。 123456789101112131415...23 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
看看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做实验。我不知道为什么?但它起到了作用,现在我有一条平坦的红线和绿色!!!!。
耶!但这是不对的,可能更糟糕,这很奇怪!请人帮助我......每个人都在睡觉,除了我!"。