新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 282 1...275276277278279280281282283284285286287288289...1953 新评论 hamsteruser 2017.08.23 18:58 #2811 Алексей Барбашин: void OnTick() { int period = 15; int timeis = returntick(period, 1).curtime; Print("timeis=", TimeToStr(timeis,TIME_SECONDS)); 这就是我试图销毁指针的地方 }现在还不太清楚这里到底能摧毁什么。难怪内存会泄漏。什么是指针?指针是对存储创建的动态变量的内存地址的引用。基本上,你调用了获取类变量指针的程序,在这个程序中,类对象被创建,放在内存中,然后指针被返回到获取刻度的函数中,....在你退出该函数时被销毁。请注意,指针被销毁了,但内存没有被清空!而每一次新的勾选,都会有越来越多的内存被吞噬掉!为了避免在你的代码中出现这一点,你首先应该删除缩写,并将指针放到另一个变量中。TickReturn* temptick =returntick(period, 1);//获得指针并将其放入一个变量 int timeis = temptick.curtime; // 通过指针从对象中获取所需的值 ...... delete temptick; // 销毁指针并清除内存。而在销毁指针之前,最好先检查一下它是否正确,以避免出现删除错误。总的来说,我不会特别为指针和类而烦恼,因为事实上任务要简单得多,没有必要使用这个类。创建一个具有必要字段的结构,声明一个 具有该结构类型的全局变量,制作一个函数,在每次打钩时更新该结构中的信息,并使用它来收集你需要的东西,因为该变量将是全局的,你不需要在函数中使用它,也不需要指针。谢谢,我想起来为什么我改用速记了,这个变量在循环中没有更新(显然函数没有被调用),我必须为每个喷嚏做一个新的,然后把它杀掉。总之,把returntick换成switch比较容易。 MosheDayan 2017.08.24 07:17 #2812 Vitaly Muzichenko:向服务器发送一个带有账户号码的后置请求在服务器上,对照CSV文件中的所有行,检查传入的号码,如果有匹配的,就从文件中的这一行向终端发送一个响应。剩下的就是在终端读取服务器的响应,并在图表上显示。一般来说,在MySQL上实现这样的事情比在文件上更容易。谢谢你的回答,维塔利!我三天来一直在努力理解它,但什么也没说出来(我是个初学者--在我职业生涯的初期)......你能更详细地描述一下吗?我只是想给你一个例子...对我的不理解表示抱歉... MosheDayan 2017.08.24 08:15 #2813 还有一个问题...我想让Beam从当前价格--到一天结束时的水平(23:59)(white2)画一条线,但它画到了一天结束时(按要求),但没有画到水平(white2),而且深入到边界图。而我给它任何一个级别(红1,红2,等等),但它仍然向上或向下辐射到无限大。我是否写得正确,总是从High[0] 开始画梁,即随着 一个新的蜡烛图,它转移到一个新的蜡烛图(即跟随价格),或者它只画一次梁?级别是从CSV中获得的。请帮助...if(уровни==Daily) { double red1 = d_input[0]; double red2 = d_input[1]; double blue1 = d_input[2]; double blue2 = d_input[3]; double white = d_input[4]; double signal= d_input[5]; double z_1 = d_input[6]; double z_2 = d_input[7]; double white2 = d_input[8]; t0 = дата_уровней + 1*PeriodSeconds(PERIOD_M1); t1 = дата_уровней + 24*PeriodSeconds(PERIOD_H1); Draw_Level("red1", red1, c_day_1, STYLE_SOLID, 2); Draw_Level("red2", red2, c_day_1, STYLE_SOLID, 2); Draw_Level("blue1", blue1, c_day_2, STYLE_SOLID, 2); Draw_Level("blue2", blue2, c_day_2, STYLE_SOLID, 2); Draw_Level("white", white,c_day_3, STYLE_SOLID,2); Draw_Level("white2", white2,c_day_3, STYLE_DOT,0); Draw_Level("green1",z_1, c_day_4, STYLE_SOLID,2); Draw_Level("green2",z_2,c_day_3, STYLE_DOT,2); string name = "Ray"; int window = 0, time1 = (int)Time[0], time2 = (int)StrToTime(txt_data+" 23:59"); double price1 = High[0], price2= white2; ObjectCreate(name, OBJ_TREND, window, time1, price1, time2, price2); ObjectSet(name, OBJPROP_COLOR, clrAqua); ObjectSet(name, OBJPROP_RAY_RIGHT, false); ObjectSet(name,OBJPROP_WIDTH,1); ObjectSet(name,OBJPROP_STYLE,2); if(показ_не отработанных) if(!check_white_level(дата_уровней,white)) draw_line(t0,white,c_day_3); else(Draw_Level("white", white,c_day_3, STYLE_SOLID,1));// меняет толщину белой при достижении ценой } Konstantin Erin 2017.08.24 08:21 #2814 MosheDayan:还有一个问题...我想让Beam从当前价格--到一天结束时的水平(23:59)(white2)画一条线,但它画到了一天结束时(按要求),但没有画到水平(white2),而且深入到边界图。而我把它塞到任何一个级别(红1,红2,等等),但它仍然向上或向下辐射到无限大。从CSV得到的水平。请帮助我... 用Alert或Print 找出(检查)white2的值。 MosheDayan 2017.08.24 08:44 #2815 STARIJ: 使用警报或打印检查white2的值。 警报立即写下 "EURUSD ErrorFileOpen() for write",并且当日的所有水平都消失了...昨天的水平和以前所有的水平都还在......。所以...光斑上的光束从它应该出现的地方开始,一直到昨天的white2水平,但在一天结束时没有,今天垂直向下,我可以直观地看到它停在昨天的white2水平。 Konstantin Erin 2017.08.24 09:14 #2816 MosheDayan: 我试着用Alert来检查,结果马上写出 "EURUSD Error FileOpen() for writing",而且当天的所有级别都消失了......昨天的水平和以前所有的水平都还在......。所以...现场的光束从它应该开始的地方开始,到了昨天白2的水平,但在一天结束时没有,今天垂直向下可以直观地看到它停在昨天白2的水平。你为什么需要访问文件? 你有white2的值,在使用它之前用Alert("white2 = ", white2)输出。 MosheDayan 2017.08.24 09:22 #2817 STARIJ:为什么要引用文件? 你有white2的值,在使用它之前用Alert("white2 = ", white2)输出。谢谢你的澄清....下面是它的内容。white2 = 0.0p.s. 我才是那个愚蠢的人...White2 = 0.0是针对CSV中没有水平的其他货币对。但在CSV里有欧元兑美元的水平,Alert显示了它们的昨天(white2 1.1720)和今天(white2 1.1810)。这条射线从它应该开始的地方开始,但它到了昨天的白色2的水平,即1.1720,而不是今天的白色2的水平,即1.1810,它没有到一天的结束时间23:59,但今天它停止在昨天的白色2,即1.1720。 buyanov 2017.08.25 06:37 #2818 难以理解的东西描述了一个函数int IsBelow//>>>>>>>>>>>>>>>>>>>>>{Alert("beg IsBelow")。Alert("NextTick=",NextTick)。//---------------------------//---------------------------Alert("NextTick=",NextTick)。Alert("end IsBelow")。}//>>>>>>>>>>>>>>>>>>>>>>>在分号前得到了一个信息,并扩展了身体{问题是哪一个分号是应该的?请解释... Aleksey Vyazmikin 2017.08.25 07:51 #2819 buyanov:难以理解的东西描述了一个函数int IsBelow//>>>>>>>>>>>>>>>>>>>>>{Alert("beg IsBelow")。Alert("NextTick=",NextTick)。//---------------------------//---------------------------Alert("NextTick=",NextTick)。Alert("end IsBelow")。}//>>>>>>>>>>>>>>>>>>>>>>>在分号前得到了一个信息,并扩展了身体{问题是哪一个分号是应该的?请解释...空白的IsBelow() Alexey Viktorov 2017.08.25 07:51 #2820 buyanov:难以理解的东西描述了一个函数int IsBelow//>>>>>>>>>>>>>>>>>>>>>{Alert("beg IsBelow")。Alert("NextTick=",NextTick)。//---------------------------//---------------------------Alert("NextTick=",NextTick)。Alert("end IsBelow")。}//>>>>>>>>>>>>>>>>>>>>>>>在分号前得到了一个信息,并扩展了身体{问题是哪一个分号是应该的?请解释... 答案就在这里 Функции - Основы языка - Справочник MQL4 docs.mql4.com Функции - Основы языка - Справочник MQL4 1...275276277278279280281282283284285286287288289...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
void OnTick() { int period = 15; int timeis = returntick(period, 1).curtime; Print("timeis=", TimeToStr(timeis,TIME_SECONDS)); 这就是我试图销毁指针的地方 }
现在还不太清楚这里到底能摧毁什么。难怪内存会泄漏。什么是指针?指针是对存储创建的动态变量的内存地址的引用。基本上,你调用了获取类变量指针的程序,在这个程序中,类对象被创建,放在内存中,然后指针被返回到获取刻度的函数中,....在你退出该函数时被销毁。请注意,指针被销毁了,但内存没有被清空!而每一次新的勾选,都会有越来越多的内存被吞噬掉!为了避免在你的代码中出现这一点,你首先应该删除缩写,并将指针放到另一个变量中。TickReturn* temptick =returntick(period, 1);//获得指针并将其放入一个变量 int timeis = temptick.curtime; // 通过指针从对象中获取所需的值 ...... delete temptick; // 销毁指针并清除内存。
而在销毁指针之前,最好先检查一下它是否正确,以避免出现删除错误。
总的来说,我不会特别为指针和类而烦恼,因为事实上任务要简单得多,没有必要使用这个类。创建一个具有必要字段的结构,声明一个 具有该结构类型的全局变量,制作一个函数,在每次打钩时更新该结构中的信息,并使用它来收集你需要的东西,因为该变量将是全局的,你不需要在函数中使用它,也不需要指针。
谢谢,我想起来为什么我改用速记了,这个变量在循环中没有更新(显然函数没有被调用),我必须为每个喷嚏做一个新的,然后把它杀掉。总之,把returntick换成switch比较容易。
向服务器发送一个带有账户号码的后置请求
在服务器上,对照CSV文件中的所有行,检查传入的号码,如果有匹配的,就从文件中的这一行向终端发送一个响应。剩下的就是在终端读取服务器的响应,并在图表上显示。
一般来说,在MySQL上实现这样的事情比在文件上更容易。
谢谢你的回答,维塔利!
我三天来一直在努力理解它,但什么也没说出来(我是个初学者--在我职业生涯的初期)......
你能更详细地描述一下吗?我只是想给你一个例子...
对我的不理解表示抱歉...
还有一个问题...
我想让Beam从当前价格--到一天结束时的水平(23:59)(white2)画一条线,但它画到了一天结束时(按要求),但没有画到水平(white2),而且深入到边界图。
而我给它任何一个级别(红1,红2,等等),但它仍然向上或向下辐射到无限大。我是否写得正确,总是从High[0] 开始画梁,即随着 一个新的蜡烛图,它转移到一个新的蜡烛图(即跟随价格),或者它只画一次梁?级别是从CSV中获得的。请帮助...
还有一个问题...
我想让Beam从当前价格--到一天结束时的水平(23:59)(white2)画一条线,但它画到了一天结束时(按要求),但没有画到水平(white2),而且深入到边界图。
而我把它塞到任何一个级别(红1,红2,等等),但它仍然向上或向下辐射到无限大。从CSV得到的水平。请帮助我...
使用警报或打印检查white2的值。
我试着用Alert来检查,结果马上写出 "EURUSD Error FileOpen() for writing",而且当天的所有级别都消失了......昨天的水平和以前所有的水平都还在......。所以...现场的光束从它应该开始的地方开始,到了昨天白2的水平,但在一天结束时没有,今天垂直向下可以直观地看到它停在昨天白2的水平。
你为什么需要访问文件? 你有white2的值,在使用它之前用Alert("white2 = ", white2)输出。
为什么要引用文件? 你有white2的值,在使用它之前用Alert("white2 = ", white2)输出。
谢谢你的澄清....下面是它的内容。white2 = 0.0
p.s. 我才是那个愚蠢的人...White2 = 0.0是针对CSV中没有水平的其他货币对。但在CSV里有欧元兑美元的水平,Alert显示了它们的昨天(white2 1.1720)和今天(white2 1.1810)。
这条射线从它应该开始的地方开始,但它到了昨天的白色2的水平,即1.1720,而不是今天的白色2的水平,即1.1810,它没有到一天的结束时间23:59,但今天它停止在昨天的白色2,即1.1720。
难以理解的东西
描述了一个函数
int IsBelow
//>>>>>>>>>>>>>>>>>>>>>
{
Alert("beg IsBelow")。
Alert("NextTick=",NextTick)。
//---------------------------
//---------------------------
Alert("NextTick=",NextTick)。
Alert("end IsBelow")。
}
//>>>>>>>>>>>>>>>>>>>>>>>
在分号前得到了一个信息,并扩展了身体{
问题是哪一个分号是应该的?
请解释...
难以理解的东西
描述了一个函数
int IsBelow
//>>>>>>>>>>>>>>>>>>>>>
{
Alert("beg IsBelow")。
Alert("NextTick=",NextTick)。
//---------------------------
//---------------------------
Alert("NextTick=",NextTick)。
Alert("end IsBelow")。
}
//>>>>>>>>>>>>>>>>>>>>>>>
在分号前得到了一个信息,并扩展了身体{
问题是哪一个分号是应该的?
请解释...
空白的IsBelow()
难以理解的东西
描述了一个函数
int IsBelow
//>>>>>>>>>>>>>>>>>>>>>
{
Alert("beg IsBelow")。
Alert("NextTick=",NextTick)。
//---------------------------
//---------------------------
Alert("NextTick=",NextTick)。
Alert("end IsBelow")。
}
//>>>>>>>>>>>>>>>>>>>>>>>
在分号前得到了一个信息,并扩展了身体{
问题是哪一个分号是应该的?
请解释...