给MQL专家的一个问题 - 页 16 1...9101112131415161718 新评论 Nestradamus 2014.02.16 12:19 #151 artmedia70: 有这样一个符号吗? 非常感谢!我永远不会发现这样的故障......他们在教科书中写了很多废话,而我只是不看就照抄... khorosh 2014.02.17 13:08 #152 能否请你告诉我错误在哪里?为什么结果会不同? //+------------------------------------------------------------------+ //| TestFr.mq4 | //| Copyright 2013, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- double FrUpz=0; double FrUp1 = GetFractal("0", 0, 1, MODE_UPPER); double FrUp2 = GetFractal("0", 0, 2, MODE_UPPER); double FrUp3 = GetFractal("0", 0, 3, MODE_UPPER); Print("# FrUp1=",FrUp1); Print("# FrUp2=",FrUp2); Print("# FrUp3=",FrUp3); for(int z=1;z<=3;z++) { FrUpz = GetFractal("0", 0, z, MODE_UPPER); Print("z=",z," FrUpz=",FrUpz); } } //+------------------------------------------------------------------+ //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru & khorosh | //+----------------------------------------------------------------------------+ //| Версия : 08.02.2009 | //| Описание : Возвращает фрактал по его номеру. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" или NULL - текущий символ) | //| tf - таймфрейм ( 0 - текущий ТФ) | //| nf - номер фрактала ( 0 - последний) | //+----------------------------------------------------------------------------+ double GetFractal(string sy="0", int tf=0, int nf=0, int mode=MODE_UPPER) { if (sy=="" || sy=="0") sy=Symbol(); double f=0; int i, k=iBars(sy, tf), kf; for (i=3; i<k; i++) { if(mode==MODE_LOWER){ f=iFractals(sy, tf, MODE_LOWER, i); if (f!=0) { kf++; if (kf>nf) return(iLow(sy,tf,i)); } } if(mode==MODE_UPPER){ f=iFractals(sy, tf, MODE_UPPER, i); if (f!=0) { kf++; if (kf>nf) return(iHigh(sy,tf,i)); } } } Print("GetFractalBar(): Фрактал не найден"); return(-1); } 结果。 2014.02.17 19:56:38.828 TestFr EURUSD,M15: z=3 FrUpz=1.37083 2014.02.17 19:56:38.828 TestFr EURUSD,M15: z=2 FrUpz=1.37083 2014.02.17 19:56:38.828 TestFr EURUSD,M15: z=1 FrUpz=1.37104 2014.02.17 19:56:38.828 TestFr EURUSD,M15: # FrUp3=1.37056 2014.02.17 19:56:38.812 TestFr EURUSD,M15: # FrUp2=1.37162 2014.02.17 19:56:38.812 TestFr EURUSD,M15: # FrUp1=1.37083 Victor Nikolaev 2014.02.17 14:48 #153 khorosh: 能否请你告诉我错误在哪里?为什么结果会不同? 结果。 2014.02.17 19:56:38.828 TestFr EURUSD,M15: z=3 FrUpz=1.37083 2014.02.17 19:56:38.828 TestFr EURUSD,M15: z=2 FrUpz=1.37083 2014.02.17 19:56:38.828 TestFr EURUSD,M15: z=1 FrUpz=1.37104 2014.02.17 19:56:38.828 TestFr EURUSD,M15: # FrUp3=1.37056 2014.02.17 19:56:38.812 TestFr EURUSD,M15: # FrUp2=1.37162 2014.02.17 19:56:38.812 TestFr EURUSD,M15: # FrUp1=1.37083 为了便于控制,对该函数稍作修改,以返回条形号码 //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru & khorosh | //+----------------------------------------------------------------------------+ //| Версия : 08.02.2009 | //| Описание : Возвращает фрактал по его номеру. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" или NULL - текущий символ) | //| tf - таймфрейм ( 0 - текущий ТФ) | //| nf - номер фрактала ( 0 - последний) | //+----------------------------------------------------------------------------+ double GetFractal(string sy="0",int tf=0,int nf=0,int mode=MODE_UPPER) { if(sy=="" || sy=="0") sy=Symbol(); double f=0; int i,k=iBars(sy,tf),kf; for(i=3; i<k; i++) { if(mode==MODE_LOWER) { f=iFractals(sy,tf,MODE_LOWER,i); if(f!=0) { kf++; // if(kf>nf) return(iLow(sy,tf,i)); if(kf>nf) return(i); } } if(mode==MODE_UPPER) { f=iFractals(sy,tf,MODE_UPPER,i); if(f!=0) { kf++; // if(kf>nf) return(iHigh(sy,tf,i)); if(kf>nf) return(i); } } } Print("GetFractalBar(): Фрактал не найден"); return(-1); } //+------------------------------------------------------------------+ 结果 2014.02.17 21:45:57.409 TestFr GBPUSD,H1: z=3 FrUpz=9.0 2014.02.17 21:45:57.409 TestFr GBPUSD,H1: z=2 FrUpz=9.0 2014.02.17 21:45:57.409 TestFr GBPUSD,H1: z=1 FrUpz=13.0 2014.02.17 21:45:57.409 TestFr GBPUSD,H1: # FrUp3=24.0 2014.02.17 21:45:57.409 TestFr GBPUSD,H1: # FrUp2=17.0 2014.02.17 21:45:57.409 TestFr GBPUSD,H1: # FrUp1=13.0 Victor Nikolaev 2014.02.17 14:51 #154 增加了所有变量的明确初始化 double GetFractal(string sy="0",int tf=0,int nf=0,int mode=MODE_UPPER) { if(sy=="" || sy=="0") sy=Symbol(); double f=0; int i=0,k=iBars(sy,tf),kf=0; for(i=3; i<k; i++) { if(mode==MODE_LOWER) { f=iFractals(sy,tf,MODE_LOWER,i); if(f!=0) { kf++; // if(kf>nf) return(iLow(sy,tf,i)); if(kf>nf) return(i); } } if(mode==MODE_UPPER) { f=iFractals(sy,tf,MODE_UPPER,i); if(f!=0) { kf++; // if(kf>nf) return(iHigh(sy,tf,i)); if(kf>nf) return(i); } } } Print("GetFractalBar(): Фрактал не найден"); return(-1); } 结果 2014.02.17 21:50:09.462 TestFr GBPUSD,H1: z=3 FrUpz=24.0 2014.02.17 21:50:09.462 TestFr GBPUSD,H1: z=2 FrUpz=17.0 2014.02.17 21:50:09.462 TestFr GBPUSD,H1: z=1 FrUpz=13.0 2014.02.17 21:50:09.462 TestFr GBPUSD,H1: # FrUp3=24.0 2014.02.17 21:50:09.462 TestFr GBPUSD,H1: # FrUp2=17.0 2014.02.17 21:50:09.462 TestFr GBPUSD,H1: # FrUp1=13.0 需要向开发商展示。 职能部门有些不对劲 Eugene Krasnov 2014.02.17 16:10 #155 我注意到,该代码Print(ChartID()," ",ChartGetInteger(ChartID(),CHART_HEIGHT_IN_PIXELS,0))放在指标中会产生奇怪的结果。例如,如果打开图表标签,指标已被重置,主图表窗口的高度结果是正确的。然而,只要我离开 "本地 "图表,结果就会因为某种原因变成等于75(当然,在其他情况下,结果可能不同),但图表ID值保持不变。当我回到 "本地 "图形时,高度值变得正确。恳请开发者和 "知情者 "解释一下这里的特殊性是什么。这真的是它的本意吗!?我不相信! 如果是这种情况,请提出代码,当任何标签打开时,为本地图表提供正确的高度值。 khorosh 2014.02.17 18:04 #156 Vinin: 增加了所有变量的明确初始化 结果 2014.02.17 21:50:09.462 TestFr GBPUSD,H1: z=3 FrUpz=24.0 2014.02.17 21:50:09.462 TestFr GBPUSD,H1: z=2 FrUpz=17.0 2014.02.17 21:50:09.462 TestFr GBPUSD,H1: z=1 FrUpz=13.0 2014.02.17 21:50:09.462 TestFr GBPUSD,H1: # FrUp3=24.0 2014.02.17 21:50:09.462 TestFr GBPUSD,H1: # FrUp2=17.0 2014.02.17 21:50:09.462 TestFr GBPUSD,H1: # FrUp1=13.0 需要向开发商展示。 职能部门有些不对劲 谢谢你对我的问题的关注。结果发现,原因只是因为函数中的两个变量没有被明确初始化。我必须查看金的所有功能,并修复它。 Рита 2014.02.18 05:19 #157 下午好。 EA代码涉及I.Kim的f-i。这涉及到调用 "安装 "的库。提供了 "外部aremeters "之后的代码。 //-- Подключаемые модули -- #include <stderror.mqh> #include <stdlib.mqh> 然而,意外地(在同样的mt4更新后--EA不工作),我注意到在 "EA属性 "窗口的 "依赖性 "选项卡中有一个奇怪的条目。 你能告诉我这个错误是什么意思以及如何解决吗(如果这两个库仍然存在于Include文件夹中)?Libraries文件夹与此有什么关系? Alexey Subbotin 2014.02.18 05:47 #158 Rita:下午好。EA代码涉及I.Kim的f-i。这涉及到调用 "安装 "的库。提供了 "外部aremeters "之后的代码。然而,意外地(在同样的mt4更新后--EA不工作),我注意到在 "EA属性 "窗口的 "依赖性 "选项卡中有一个奇怪的条目。你能告诉我这个错误是什么意思以及如何解决吗(如果这两个库仍然存在于Include文件夹中)?Libraries文件夹与此有什么关系? stderror.mqh从stdlib.ex4库中导入 ErrorDescription函数,该库位于Libraries文件夹中,与源代码一起。检查你那里是否有这个文件,如果没有,从任何其他终端获得它。 Рита 2014.02.18 06:19 #159 两个文件夹(Incloud和Libraries)都包含stdlib源。为了以防万一,我从Incloud文件夹中添加-复制了。 但在 "依赖 "选项卡中仍然显示上述错误。也许以某种方式改变这些函数的调用。而不是。 //-- Подключаемые модули -- #include <stderror.mqh> #include <stdlib.mqh> 以其他方式设置呼叫? 还是说现在在最新版本的mt4中无法使用I.Kim的功能? Vitalie Postolache 2014.02.18 06:57 #160 Rita: 两个文件夹(Incloud和Libraries)都包含stdlib源。为了以防万一,我从Incloud文件夹中添加-复制了。 但在 "依赖 "选项卡中仍然显示上述错误。也许以某种方式改变这些函数的调用。而不是。 以其他方式设置呼叫? 还是说现在在最新版本的mt4中无法使用I.Kim的功能? 确保在Libraries文件夹下有stdlib.ex4可执行文件,尽管它似乎不是Kim的,是交货时的标准文件。 另外,看看Kim函数从中获取了什么,并找出问题所在。 1...9101112131415161718 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
有这样一个符号吗?
能否请你告诉我错误在哪里?为什么结果会不同?
结果。
2014.02.17 19:56:38.828 TestFr EURUSD,M15: z=3 FrUpz=1.37083
2014.02.17 19:56:38.828 TestFr EURUSD,M15: z=2 FrUpz=1.37083
2014.02.17 19:56:38.828 TestFr EURUSD,M15: z=1 FrUpz=1.37104
2014.02.17 19:56:38.828 TestFr EURUSD,M15: # FrUp3=1.37056
2014.02.17 19:56:38.812 TestFr EURUSD,M15: # FrUp2=1.37162
2014.02.17 19:56:38.812 TestFr EURUSD,M15: # FrUp1=1.37083
能否请你告诉我错误在哪里?为什么结果会不同?
结果。
2014.02.17 19:56:38.828 TestFr EURUSD,M15: z=3 FrUpz=1.37083
2014.02.17 19:56:38.828 TestFr EURUSD,M15: z=2 FrUpz=1.37083
2014.02.17 19:56:38.828 TestFr EURUSD,M15: z=1 FrUpz=1.37104
2014.02.17 19:56:38.828 TestFr EURUSD,M15: # FrUp3=1.37056
2014.02.17 19:56:38.812 TestFr EURUSD,M15: # FrUp2=1.37162
2014.02.17 19:56:38.812 TestFr EURUSD,M15: # FrUp1=1.37083
为了便于控制,对该函数稍作修改,以返回条形号码
结果
2014.02.17 21:45:57.409 TestFr GBPUSD,H1: z=3 FrUpz=9.0
2014.02.17 21:45:57.409 TestFr GBPUSD,H1: z=2 FrUpz=9.0
2014.02.17 21:45:57.409 TestFr GBPUSD,H1: z=1 FrUpz=13.0
2014.02.17 21:45:57.409 TestFr GBPUSD,H1: # FrUp3=24.0
2014.02.17 21:45:57.409 TestFr GBPUSD,H1: # FrUp2=17.0
2014.02.17 21:45:57.409 TestFr GBPUSD,H1: # FrUp1=13.0
增加了所有变量的明确初始化
结果
2014.02.17 21:50:09.462 TestFr GBPUSD,H1: z=3 FrUpz=24.0
2014.02.17 21:50:09.462 TestFr GBPUSD,H1: z=2 FrUpz=17.0
2014.02.17 21:50:09.462 TestFr GBPUSD,H1: z=1 FrUpz=13.0
2014.02.17 21:50:09.462 TestFr GBPUSD,H1: # FrUp3=24.0
2014.02.17 21:50:09.462 TestFr GBPUSD,H1: # FrUp2=17.0
2014.02.17 21:50:09.462 TestFr GBPUSD,H1: # FrUp1=13.0
需要向开发商展示。 职能部门有些不对劲
我注意到,该代码
Print(ChartID()," ",ChartGetInteger(ChartID(),CHART_HEIGHT_IN_PIXELS,0))
放在指标中会产生奇怪的结果。例如,如果打开图表标签,指标已被重置,主图表窗口的高度结果是正确的。
然而,只要我离开 "本地 "图表,结果就会因为某种原因变成等于75(当然,在其他情况下,结果可能不同),但图表ID值保持不变。
当我回到 "本地 "图形时,高度值变得正确。
恳请开发者和 "知情者 "解释一下这里的特殊性是什么。这真的是它的本意吗!?我不相信!
如果是这种情况,请提出代码,当任何标签打开时,为本地图表提供正确的高度值。增加了所有变量的明确初始化
结果
2014.02.17 21:50:09.462 TestFr GBPUSD,H1: z=3 FrUpz=24.0
2014.02.17 21:50:09.462 TestFr GBPUSD,H1: z=2 FrUpz=17.0
2014.02.17 21:50:09.462 TestFr GBPUSD,H1: z=1 FrUpz=13.0
2014.02.17 21:50:09.462 TestFr GBPUSD,H1: # FrUp3=24.0
2014.02.17 21:50:09.462 TestFr GBPUSD,H1: # FrUp2=17.0
2014.02.17 21:50:09.462 TestFr GBPUSD,H1: # FrUp1=13.0
需要向开发商展示。 职能部门有些不对劲
下午好。
EA代码涉及I.Kim的f-i。这涉及到调用 "安装 "的库。提供了 "外部aremeters "之后的代码。
然而,意外地(在同样的mt4更新后--EA不工作),我注意到在 "EA属性 "窗口的 "依赖性 "选项卡中有一个奇怪的条目。
你能告诉我这个错误是什么意思以及如何解决吗(如果这两个库仍然存在于Include文件夹中)?Libraries文件夹与此有什么关系?
下午好。
EA代码涉及I.Kim的f-i。这涉及到调用 "安装 "的库。提供了 "外部aremeters "之后的代码。
然而,意外地(在同样的mt4更新后--EA不工作),我注意到在 "EA属性 "窗口的 "依赖性 "选项卡中有一个奇怪的条目。
你能告诉我这个错误是什么意思以及如何解决吗(如果这两个库仍然存在于Include文件夹中)?Libraries文件夹与此有什么关系?
stderror.mqh从stdlib.ex4库中导入 ErrorDescription函数,该库位于Libraries文件夹中,与源代码一起。检查你那里是否有这个文件,如果没有,从任何其他终端获得它。
两个文件夹(Incloud和Libraries)都包含stdlib源。为了以防万一,我从Incloud文件夹中添加-复制了。
但在 "依赖 "选项卡中仍然显示上述错误。也许以某种方式改变这些函数的调用。而不是。
以其他方式设置呼叫?
还是说现在在最新版本的mt4中无法使用I.Kim的功能?
两个文件夹(Incloud和Libraries)都包含stdlib源。为了以防万一,我从Incloud文件夹中添加-复制了。
但在 "依赖 "选项卡中仍然显示上述错误。也许以某种方式改变这些函数的调用。而不是。
以其他方式设置呼叫?
还是说现在在最新版本的mt4中无法使用I.Kim的功能?
确保在Libraries文件夹下有stdlib.ex4可执行文件,尽管它似乎不是Kim的,是交货时的标准文件。
另外,看看Kim函数从中获取了什么,并找出问题所在。