新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 737 1...730731732733734735736737738739740741742743744...1953 新评论 novichok2018 2019.01.16 15:12 #7361 Alexey Viktorov: NewsArr数组 在第二维中的维度 是多少?不幸的是,我不明白。什么是第二维度? 啊,我想我明白了:NewsArr的值为0、1、2和3。这个? 这必须是:字符串NewsArr[4][1000]。 Alexey Viktorov 2019.01.16 15:51 #7362 novichok2018:不幸的是,我不明白。什么是第二维度? 啊,我想我明白了:NewsArr的值为0、1、2和3。这个? 这必须是:字符串NewsArr[4][1000]。第一维和 第二维。 但这可能是错误的答案。 novichok2018 2019.01.16 16:01 #7363 Alexey Viktorov:第一维和 第二维。 但你一定是回答错了什么。我在哪里可以找到第二维的维度? 还是第一维的维度是4,第二维的维度是1000? Alexey Viktorov 2019.01.16 16:10 #7364 novichok2018:那么你在哪里寻找第二维度的维度呢? 还是第一个维度是4,第二个维度是1000?是的,但这个帖子里有些东西是混乱的 关于交易、自动交易系统和策略测试的论坛 新手对MQL4的任何问题,对算法和代码的帮助和讨论 novichok2018, 2019.01.16 15:52 可能是一个愚蠢的问题,因为没有人回答,但还如何处理EA在编译后停止和恢复的问题? 平台给出的信息是:数组超出范围(284,17)。 第284行:NewsArr[0][NomNews]=StringSubstr(TEXT,sh,sh2-sh);第17位用NomNews打开一个方括号,它由0全局启动。我把0改为1,但无济于事。 把if(NomNews==300)break; 300这一行改成了360000,但没有 用。 我编译了它--它在几分钟内工作正常。那该怎么做呢?当第二维度的值的数量为1000和 if(NomNews==300)break; 在第二维中不可能有数组超限。 Ilya Prozumentov 2019.01.16 16:31 #7365 psyman:我没有锚点,只有垂直运动,我把水平的一次设置在屏幕的宽度上。从另一边算起,这不是一个问题,但令人惊讶的是,同一个动作在不同的职能部门有不同的表现。 还有一个问题--如果我想把Bid作为标签文本输出,我应该用哪个函数来做最合适--OnChartEvent还是OnCalculate?OBJ_LABEL有一个锚点,即使你没有设置它。 默认情况下,它是左上角。Bid是在OnCalculate中改变的,你可以在那里改变标签中的文字。 novichok2018 2019.01.16 18:08 #7366 Alexey Viktorov:是的,但这个信息中有一些令人困惑的地方 当第二维度的值的数量为1000和 在第二维中不能有一个数组超出范围。 不,似乎没有混淆。以下是复制的信息: 2019.01.16 20:14:11.110 OnNews_M5_EURUSD EURUSD,M5: array out of range in 'OnNews_M5_EURUSD.mq4' (284,17)。我在上面展示了第284行。 Artyom Trishkin 2019.01.16 18:15 #7367 novichok2018:不,我不认为我有什么错。以下是复制的信息: 2019.01.16 20:14:11.110 OnNews_M5_EURUSD EURUSD,M5: array out of range in 'OnNews_M5_EURUSD.mq4' (284,17)。我在上面展示了第284行。17号位置用NomNews打开一个方括号,由0 全局启动。 所以,你有一个零维数组的第二维单元尺寸... novichok2018 2019.01.16 18:33 #7368 Artyom Trishkin: 所以你的数组单元在第二维的大小是零...这里是NomNews的所在地。 datetime TimeNewsFunck(int nomf){string s=NewsArr[0][nomf]。string time=StringConcatenate(StringSubstr(s,0,4),".",StringSubstr(s,5,2),".",StringSubstr(s,8,2)," ",StringSubstr(s,11,2),":",StringSubstr(s,14,4) )。return((datetime)(StringToTime(time)+GMTplus*3600))}//345678901234567890////////////////////////////////////////////////////////////////////////////////空白更新新闻()。{string TEXT=ReadCBOE()。int sh = StringFind(TEXT, "pageStartAt>")+12;int sh2= StringFind(TEXT,"</tbody>")。TEXT=StringSubstr(TEXT,sh,sh2-sh)。sh=0。while(!IsStopped()){sh = StringFind(TEXT, "event_timestamp",sh)+17;sh2= StringFind(TEXT, "onclick",sh)-2;if(sh<17 || sh2<0)break;NewsArr[0][NomNews]=StringSubstr(TEXT,sh,sh2-sh)。sh = StringFind(TEXT,flagCur,sh)+10;sh2= sh+3。if(sh<10 || sh2<3)break;NewsArr[1][NomNews]=StringSubstr(TEXT,sh,sh2-sh)。如果(OnlySymbolNews && StringFind(ValStr,NewsArr[1][NomNews])<0)继续。sh = StringFind(TEXT, "title",sh)+7;sh2= StringFind(TEXT, "Volatility",sh)-1;如果(sh<7 || sh2<0)休息。NewsArr[2][NomNews]=StringSubstr(TEXT,sh,sh2-sh)。if(StringFind(NewsArr[2][NomNews], "High")>=0 && !HighNews)继续。if(StringFind(NewsArr[2][NomNews], "Moderate")>=0 && ! MidleNews)继续。if(StringFind(NewsArr[2][NomNews], "Low")>=0 && !LowNews)继续。sh=StringFind(TEXT, "left event",sh)+12;int sh1=StringFind(TEXT, "Speaks",sh);sh2=StringFind(TEXT,"<",sh)。if(sh<12 || sh2<0)break;if(sh1<0 || sh1>sh2)NewsArr[3][NomNews]=StringSubstr(TEXT,sh,sh2-sh)。否则NewsArr[3][NomNews]=StringSubstr(TEXT,sh,sh1-sh)。NomNews++。if(NomNews==300)break;}} 值从0到300。全局设置为4? Any questions from newcomers 为什么新闻指标在Windows 7中不起作用? Why is the news novichok2018 2019.01.16 18:56 #7369 novichok2018: 值从0到300。我应该把它全局设置为4吗?它仍然在12分钟时给出一个信息。 Ilya Prozumentov 2019.01.16 19:24 #7370 novichok2018:在运行到第12分钟时仍然给出了一个信息。从这些可以看出,NomNews进入While循环时已经处于大于999的状态。那么你需要找出造成这种情况的原因,并在某处重置这个变量。 要检查这一点,请将其写在循环的开头。 if(NomNews > 999) { Print(NomNews); break; } 1...730731732733734735736737738739740741742743744...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
NewsArr数组 在第二维中的维度 是多少?
不幸的是,我不明白。什么是第二维度?
啊,我想我明白了:NewsArr的值为0、1、2和3。这个?
这必须是:字符串NewsArr[4][1000]。
不幸的是,我不明白。什么是第二维度?
啊,我想我明白了:NewsArr的值为0、1、2和3。这个?
这必须是:字符串NewsArr[4][1000]。
第一维和 第二维。
但这可能是错误的答案。第一维和 第二维。
但你一定是回答错了什么。我在哪里可以找到第二维的维度?
还是第一维的维度是4,第二维的维度是1000?那么你在哪里寻找第二维度的维度呢?
还是第一个维度是4,第二个维度是1000?是的,但这个帖子里有些东西是混乱的
关于交易、自动交易系统和策略测试的论坛
新手对MQL4的任何问题,对算法和代码的帮助和讨论
novichok2018, 2019.01.16 15:52
可能是一个愚蠢的问题,因为没有人回答,但还如何处理EA在编译后停止和恢复的问题?
平台给出的信息是:数组超出范围(284,17)。
第284行:NewsArr[0][NomNews]=StringSubstr(TEXT,sh,sh2-sh);第17位用NomNews打开一个方括号,它由0全局启动。
我把0改为1,但无济于事。
把if(NomNews==300)break; 300这一行改成了360000,但没有 用。
我编译了它--它在几分钟内工作正常。那该怎么做呢?
当第二维度的值的数量为1000和
在第二维中不可能有数组超限。我没有锚点,只有垂直运动,我把水平的一次设置在屏幕的宽度上。从另一边算起,这不是一个问题,但令人惊讶的是,同一个动作在不同的职能部门有不同的表现。
还有一个问题--如果我想把Bid作为标签文本输出,我应该用哪个函数来做最合适--OnChartEvent还是OnCalculate?
OBJ_LABEL有一个锚点,即使你没有设置它。 默认情况下,它是左上角。Bid是在OnCalculate中改变的,你可以在那里改变标签中的文字。
是的,但这个信息中有一些令人困惑的地方
当第二维度的值的数量为1000和
在第二维中不能有一个数组超出范围。不,似乎没有混淆。以下是复制的信息: 2019.01.16 20:14:11.110 OnNews_M5_EURUSD EURUSD,M5: array out of range in 'OnNews_M5_EURUSD.mq4' (284,17)。
不,我不认为我有什么错。以下是复制的信息: 2019.01.16 20:14:11.110 OnNews_M5_EURUSD EURUSD,M5: array out of range in 'OnNews_M5_EURUSD.mq4' (284,17)。
17号位置用NomNews打开一个方括号,由0 全局启动。
所以,你有一个零维数组的第二维单元尺寸...
所以你的数组单元在第二维的大小是零...
这里是NomNews的所在地。
datetime TimeNewsFunck(int nomf)
{
string s=NewsArr[0][nomf]。
string time=StringConcatenate(StringSubstr(s,0,4),".",StringSubstr(s,5,2),".",StringSubstr(s,8,2)," ",StringSubstr(s,11,2),":",StringSubstr(s,14,4) )。
return((datetime)(StringToTime(time)+GMTplus*3600))
}
//345678901234567890////////////////////////////////////////////////////////////////////////////////
空白更新新闻()。
{
string TEXT=ReadCBOE()。
int sh = StringFind(TEXT, "pageStartAt>")+12;
int sh2= StringFind(TEXT,"</tbody>")。
TEXT=StringSubstr(TEXT,sh,sh2-sh)。
sh=0。
while(!IsStopped())
{
sh = StringFind(TEXT, "event_timestamp",sh)+17;
sh2= StringFind(TEXT, "onclick",sh)-2;
if(sh<17 || sh2<0)break;
NewsArr[0][NomNews]=StringSubstr(TEXT,sh,sh2-sh)。
sh = StringFind(TEXT,flagCur,sh)+10;
sh2= sh+3。
if(sh<10 || sh2<3)break;
NewsArr[1][NomNews]=StringSubstr(TEXT,sh,sh2-sh)。
如果(OnlySymbolNews && StringFind(ValStr,NewsArr[1][NomNews])<0)继续。
sh = StringFind(TEXT, "title",sh)+7;
sh2= StringFind(TEXT, "Volatility",sh)-1;
如果(sh<7 || sh2<0)休息。
NewsArr[2][NomNews]=StringSubstr(TEXT,sh,sh2-sh)。
if(StringFind(NewsArr[2][NomNews], "High")>=0 && !HighNews)继续。
if(StringFind(NewsArr[2][NomNews], "Moderate")>=0 && ! MidleNews)继续。
if(StringFind(NewsArr[2][NomNews], "Low")>=0 && !LowNews)继续。
sh=StringFind(TEXT, "left event",sh)+12;
int sh1=StringFind(TEXT, "Speaks",sh);
sh2=StringFind(TEXT,"<",sh)。
if(sh<12 || sh2<0)break;
if(sh1<0 || sh1>sh2)NewsArr[3][NomNews]=StringSubstr(TEXT,sh,sh2-sh)。
否则NewsArr[3][NomNews]=StringSubstr(TEXT,sh,sh1-sh)。
NomNews++。
if(NomNews==300)break;
}
}
值从0到300。全局设置为4?
值从0到300。我应该把它全局设置为4吗?
它仍然在12分钟时给出一个信息。
在运行到第12分钟时仍然给出了一个信息。
从这些可以看出,NomNews进入While循环时已经处于大于999的状态。那么你需要找出造成这种情况的原因,并在某处重置这个变量。
要检查这一点,请将其写在循环的开头。