新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 280 1...273274275276277278279280281282283284285286287...1953 新评论 Алексей Барбашин 2017.08.22 08:10 #2791 hamsteruser: *returntick也没有被销毁。我只是对交易终端 的排气感到困惑。这是在写未清除的记忆。给我所有你使用函数返回的指针的代码,以及你销毁指针的时刻。要帮助你真是太难了。 Алексей Барбашин 2017.08.22 10:54 #2792 Anatolij Povoroznyj:你好。请帮助我纠正代码。我需要EA不要开一系列的订单,而是在第一个事件中只开一个订单。现在它是这样工作的:当CCI向下穿过200线时,这就打开了一个BAY,然后如果CCI再次向下穿过200线,这就打开了另一个BAY,等等,等等,直到CCI向上穿过-200线,然后所有的BAY被关闭,一个Sell被打开。我想问的是: 当SSI从上到下越过200线时--第一个也是唯一一个BAI打开,其他BAI不应该打开,直到SSI从下到上越过-200线,在这种情况下,BAI被关闭,卖出被打开。(镜像卖出线和-200线)。增加一个功能,检查是否有任何相关类型的未结订单。也就是说,如果有订单,该函数将返回真,下一个订单将不会打开。 MMM1972 2017.08.22 16:47 #2793 也许这不是重点...关于MT4的一个愿望 我使用许多警报,它们都是为某些参数而设置的。 我将警报的寿命设置为必要的长度,并将其复活到新的目标价格。 由于我的终端机的警报日志不是按符号或事件分类的,所以每次寻找正确的警报是一件很麻烦的事。 如果能像 "交易 "标签那样有排序选项就更好了。 Koldun Zloy 2017.08.22 17:50 #2794 hamsteruser:有一个带指针的函数。我仍然在另一个函数中调用它。我怎样才能清除背后的记忆?在delete(TickReturn);我得到一个错误的操作数除外。TickReturn* rt = returntick( period, 1 ); int timeis = rt.curtime; delete rt; Artyom Trishkin 2017.08.22 18:12 #2795 MMM1972:也许这不是重点...关于MT4的一个愿望 我使用许多警报,它们都是为某些参数而设置的。 我将警报的寿命设置为必要的长度,并将其复活到新的目标价格。 由于我的终端机的警报日志不是按符号或事件分类的,所以每次寻找正确的警报是一件很麻烦的事。 如果能像 "交易 "标签那样有排序选项就更好了。MT4终端已不再开发。只有发现的bug才会被修复。 hamsteruser 2017.08.22 18:45 #2796 Алексей Барбашин: 给出你使用函数返回的指针的所有代码,以及你销毁指针的时刻。要帮助你真是太难了。记忆真的在流动。 class TickReturn { public: int curtime; double open; double close; double high; double low; double priceask; double pricebid; }; TickReturn *returntick(int period, int timeposition) { TickReturn *returntick = new TickReturn(); MqlRates rates[]; MqlTick last_tick; if(SymbolInfoTick(symbol,last_tick)){} else Print("SymbolInfoTick() failed, error = ",GetLastError()); //int timeposition=0; ArraySetAsSeries(rates,true); ArrayResize(rates,1); int copied=CopyRates(symbol,period,timeposition,1,rates); returntick.curtime = rates[0].time; returntick.open = rates[0].open; returntick.close = rates[0].close; returntick.high = rates[0].high; returntick.low = rates[0].low; returntick.priceask = last_tick.ask; returntick.pricebid = last_tick.bid; return(returntick); } void OnTick() { int period = 15; int timeis = returntick(period, 1).curtime; Print("timeis= ", TimeToStr(timeis,TIME_SECONDS)); Вот здесь пытаюсь уничтожить указатель. } Алексей Барбашин 2017.08.23 08:18 #2797 hamsteruser:记忆真的在流动。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; // 销毁指针并清除内存。而在销毁指针之前,最好先检查一下它是否正确,以避免出现删除错误。总的来说,我不会特别为指针和类而烦恼,因为事实上任务要简单得多,没有必要使用这个类。用需要的字段创建结构,用这个结构的类型声明全局变量,在每次打勾时,用函数来更新这个结构中的信息,并从中收集你需要的东西,因为变量是全局的,你不需要通过函数来运行它,也不需要指针。 Sergey Likho 2017.08.23 13:02 #2798 1.是否可以用mql4来禁用其他EA?2.要检查是否有一个专家顾问在一个给定的ChartId 上运行? Aleksey Vyazmikin 2017.08.23 13:07 #2799 Sergey Likho:1.是否可以用mql4来禁用其他EA?2.检查是否有一个专家顾问在给定的ChartId上运行?可以在EA代码内部禁用交易,并在一个外部文件中进行切换,那么另一个EA就可以通知任何EA不再需要交易了。 Sergey Likho 2017.08.23 13:09 #2800 Aleksey Vyazmikin: 你可以在EA代码内禁止交易,并在外部文件中进行切换,那么另一个EA就可以告诉任何EA不再需要交易了。这个想法正是,EA A将通过条件使EA B失效。 1...273274275276277278279280281282283284285286287...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
*returntick也没有被销毁。我只是对交易终端 的排气感到困惑。这是在写未清除的记忆。
给我所有你使用函数返回的指针的代码,以及你销毁指针的时刻。要帮助你真是太难了。
你好。请帮助我纠正代码。我需要EA不要开一系列的订单,而是在第一个事件中只开一个订单。
现在它是这样工作的:当CCI向下穿过200线时,这就打开了一个BAY,然后如果CCI再次向下穿过200线,这就打开了另一个BAY,等等,等等,直到CCI向上穿过-200线,然后所有的BAY被关闭,一个Sell被打开。
我想问的是: 当SSI从上到下越过200线时--第一个也是唯一一个BAI打开,其他BAI不应该打开,直到SSI从下到上越过-200线,在这种情况下,BAI被关闭,卖出被打开。(镜像卖出线和-200线)。
增加一个功能,检查是否有任何相关类型的未结订单。也就是说,如果有订单,该函数将返回真,下一个订单将不会打开。
也许这不是重点...
关于MT4的一个愿望
我使用许多警报,它们都是为某些参数而设置的。
我将警报的寿命设置为必要的长度,并将其复活到新的目标价格。
由于我的终端机的警报日志不是按符号或事件分类的,所以每次寻找正确的警报是一件很麻烦的事。
如果能像 "交易 "标签那样有排序选项就更好了。
有一个带指针的函数。
我仍然在另一个函数中调用它。
我怎样才能清除背后的记忆?
在delete(TickReturn);我得到一个错误的操作数除外。
也许这不是重点...
关于MT4的一个愿望
我使用许多警报,它们都是为某些参数而设置的。
我将警报的寿命设置为必要的长度,并将其复活到新的目标价格。
由于我的终端机的警报日志不是按符号或事件分类的,所以每次寻找正确的警报是一件很麻烦的事。
如果能像 "交易 "标签那样有排序选项就更好了。
MT4终端已不再开发。只有发现的bug才会被修复。
给出你使用函数返回的指针的所有代码,以及你销毁指针的时刻。要帮助你真是太难了。
记忆真的在流动。
记忆真的在流动。
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; // 销毁指针并清除内存。
而在销毁指针之前,最好先检查一下它是否正确,以避免出现删除错误。
总的来说,我不会特别为指针和类而烦恼,因为事实上任务要简单得多,没有必要使用这个类。用需要的字段创建结构,用这个结构的类型声明全局变量,在每次打勾时,用函数来更新这个结构中的信息,并从中收集你需要的东西,因为变量是全局的,你不需要通过函数来运行它,也不需要指针。
1.是否可以用mql4来禁用其他EA?
2.要检查是否有一个专家顾问在一个给定的ChartId 上运行?
1.是否可以用mql4来禁用其他EA?
2.检查是否有一个专家顾问在给定的ChartId上运行?
可以在EA代码内部禁用交易,并在一个外部文件中进行切换,那么另一个EA就可以通知任何EA不再需要交易了。
你可以在EA代码内禁止交易,并在外部文件中进行切换,那么另一个EA就可以告诉任何EA不再需要交易了。
这个想法正是,EA A将通过条件使EA B失效。