#include <Trade\Trade.mqh>
CTrade trader;
intOnInit()
{
trader.SetExpertMagicNumber(1);
return(INIT_SUCCEEDED);
}
voidOnDeinit(constint reason)
{
//---
}
voidOnTick()
{
for(int i=OrdersTotal()-1;i>=0;i--) // returns the number of current ordersif(OrderGetTicket(i)>0) // selects the pending order by index for further access to its propertiesif(OrderGetInteger(ORDER_MAGIC)==1)
trader.OrderDelete(OrderGetTicket(i));
}
EURUSD,H1: 21470549 ticks, 94233 bars generated. 63097850 total ticks for all symbols
EURUSD: generate 21470549 ticks in0:00:05.375, passed to tester 21470549 ticks
USDCAD: generate 20302871 ticks in0:00:05.062, passed to tester 20302871 ticks
USDJPY: generate 21324430 ticks in0:00:05.641, passed to tester 21324430 ticks
1450 Mb memory used including 18 Mb of history data, 1216 Mb of tick data
重点并没有改变--你正试图删除一个 在每个tick上都有一个票据 "0"的挂单。
还有,谁说你的挂单每一个刻度都是 "0 "刻度?你有没有检查过有多少个待处理订单?而你怎么知道....?
用哪个刻度是 "0"?OrderGetTicket(0)并不意味着选择了票数为0的订单,而是从索引为0的挂单列表中返回一个票数订单。
你可能需要在你的任务中更加具体。
例如:如果有一个魔力为 "1 "的挂单- 那么就删除它。
在这种情况下,执行情况将如下。
循环浏览所有待处理订单
如果一个挂单被成功选中(返回值是大于0的票据)。
如果所选挂单的魔法值为 "1"
删除它
用哪张票 "0"?OrderGetTicket(0)并不意味着选择了票数为0的订单,而是从索引为0的挂单列表中返回一个票数订单。
是的,这是正确的。
你能告诉我,从2004年到今天,运行30个字符的测试器需要多少内存?
测试员说不够,但没有说需要多少。
你能告诉我,从2004年到今天,运行30个字符的测试器需要多少内存?
测试员说不够,但没有说有多少。
运行两个字符,五个字符...
运行两个字符,五个字符...
这不是真正的问题--我需要购买多少内存才能使这样的测试成为可能?
下面是一个符号的结果(来自开盘价模式的日志)。
这里有2个。
3:
而这里是4。
它的发展是成倍的:)我无法追踪其逻辑,因为刻度线是差不多的。
我看到很多关于20个或更多字符的报告,我不相信有人会使用TB级的内存。也许有一个秘密?
是否可以在指标中设置图形缓冲区的数量?
第二个问题,是否有可能强制重新初始化专家顾问使用的指标,以节省内存?
是否可以在指标中设置图形缓冲区的数量?
第二个问题,是否有可能强制重新初始化专家顾问使用的指标,以节省内存?
可以减少#property indicator_plots中所述的指标图的数量,我做到了。但几乎不可能增加它。但这种减少不会导致内存的节省。毕竟,缓冲区仍然存在。它们只是从 INDICATOR_DATA 转移到 INDICATOR_CALCULATIONS,仅此而已。
在#property indicator_plots中陈述的内容可以减少,我做了这个。但增加它是不太可能的。但这种减少并不能节省内存。缓冲区毕竟还在。它们只是从 INDICATOR_DATA 转入 INDICATOR_CALCULATIONS,仅此而已。
谢谢你的答复。遗憾的是,缓冲区数量的外观变化与此无关。
我想在OnInit()块中从三个时间段获取MACD指标句柄。 在图表上--它可以工作,但在测试器中它不工作,终端挂得很紧!所以我想获取不存在的数据?能否请您告知如何处理?