任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 1134 1...112711281129113011311132113311341135113611371138113911401141...1178 新评论 Alexey Viktorov 2017.03.03 05:48 #11331 Alexandr Nevadovschi:亲爱的程序员们,请帮助这个行业的一个新手。EA在一定时间后依次打开买入和卖出订单。我希望它能修改所有以前的订单(具体来说,所有以前的订单都应该通过最后一个订单的获利来关闭。也就是说,如果上一个买入订单和上一个卖出订单,那么上一个订单的止损 被设置为上一个订单的获利水平。如果是前一个买入,那么它的TakeProfit将被设置在上一个TakeProfit的水平上。 好吧,等等。重点是,当最后一个订单的获利到来时,所有的订单必须被关闭)。我希望我解释得很清楚,尽管很难理解 应该如何 实施它。预先感谢你。我知道我们可以浏览所有未结订单并修改它们,但我们如何跳过最后一个订单?在这一切中,最重要的是了解应该发生什么。什么是 "最后的命令"?它是在开幕前的最后一次吗?还是按开盘价格水平?如果我们把 "最后一个 "订单视为 "买入",但价格会他妈的上升呢?或者反过来说,最后一笔订单将是卖出,但价格却向北走?那么哪一个应该被认为是最后一个呢?这就是我们必须意识到的。 Nauris Zukas 2017.03.03 10:13 #11332 你好。如果你事先不知道数组中会有多少个元素,你如何声明数组,使数组随着每个新元素的增加而增加? 举个例子让大家更清楚。double HighA[]; // ??????????????????for(int i=0; i<1000; i++){if(A[i]<B[i]) HighA[i]=A[i];}Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA)); Alexey Viktorov 2017.03.03 11:09 #11333 Nauris Zukas:你好。如果你事先不知道数组中会有多少个元素,你如何声明数组,使数组随着每个新元素的增加而增加? 举个例子让大家更清楚。double HighA[]; // ??????????????????for(int i=0; i<1000; i++){if(A[i]<B[i]) HighA[i]=A[i];}Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA)); 你应该更多地阅读文档。 ArrayResize - Операции с массивами - Справочник MQL4 docs.mql4.com ArrayResize - Операции с массивами - Справочник MQL4 Nauris Zukas 2017.03.03 11:33 #11334 Alexey Viktorov: 你应该更多地阅读文档。我已经阅读并尝试了,但我得到一个 "数组超出范围 "的错误。在这个例子中,它看起来像这样。 double HighA[]; for(int i=0; i<1000; i++) { if(A[i]<B[i]) { countHlines++; ArrayResize(HighA,countHlines); HighA[i]=A[i]; } } Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA)); Alexey Viktorov 2017.03.03 11:54 #11335 Nauris Zukas:我已经阅读并尝试了,但我得到一个 "数组超出范围 "的错误。在这个例子中,它看起来像这样。 double HighA[]; for(int i=0; i<1000; i++) { if(A[i]<B[i]) { countHlines++; ArrayResize(HighA,countHlines); HighA[i]=A[i]; } } Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));当条件A[i]<B[i]不满足时,数组大小 保持不变,循环计数器被递增。这就是为什么它超出了范围。这样试试吧。 double HighA[]; for(int i=0; i<1000; i++) { if(A[i]<B[i]) { int size = ArraySize(HighA); ArrayResize(HighA, size+1); HighA[size]=A[i]; } } Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA)); Nauris Zukas 2017.03.03 12:10 #11336 Alexey Viktorov:当A[i]<B[i]条件不满足时,数组大小保持不变,循环计数器被递增。这就是为什么它是出界的。这样试试吧。 double HighA[]; for(int i=0; i<1000; i++) { if(A[i]<B[i]) { int size = ArraySize(HighA); ArrayResize(HighA, size+1); HighA[size]=A[i]; } } Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));谢谢你! 现在都 能用了! Vitaly Muzichenko 2017.03.03 13:16 #11337 Nauris Zukas:我已经阅读并尝试了,但我得到一个 "数组超出范围 "的错误。在这个例子中,它看起来像这样。 double HighA[]; for(int i=0; i<1000; i++) { if(A[i]<B[i]) { countHlines++; ArrayResize(HighA,countHlines); HighA[i]=A[i]; } } Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));那会更快地工作 int countHlines=0; double HighA[]; for(int i=0; i<1000; i++) { if(A[i]<B[i]) { countHlines++; ArrayResize(HighA,countHlines); HighA[countHlines-1]=A[i]; } } Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));// Вариант №2 int countHlines=-1; double HighA[]; for(int i=0; i<1000; i++) { if(A[i]<B[i]) { countHlines++; ArrayResize(HighA,countHlines+1); HighA[countHlines]=A[i]; } } Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA)); Nauris Zukas 2017.03.03 13:54 #11338 Vitaly Muzichenko:好吧,这样工作会更快 int countHlines=0; double HighA[]; for(int i=0; i<1000; i++) { if(A[i]<B[i]) { countHlines++; ArrayResize(HighA,countHlines); HighA[countHlines-1]=A[i]; } } Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));// Вариант №2 int countHlines=-1; double HighA[]; for(int i=0; i<1000; i++) { if(A[i]<B[i]) { countHlines++; ArrayResize(HighA,countHlines+1); HighA[countHlines]=A[i]; } } Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA)); 谢谢你,我明白了!因为ArraySize,它将会更快,它是否会以某种方式减慢速度? Alexey Viktorov 2017.03.03 17:54 #11339 Nauris Zukas: 谢谢你,我明白了!因为ArraySize,它将会更快,它是否会以某种方式减慢速度? 不多,但很清楚,而且不会出错。 Nauris Zukas 2017.03.04 08:14 #11340 Alexey Viktorov: 不多,但很清楚,而且不会出错。 谢谢你! 1...112711281129113011311132113311341135113611371138113911401141...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
亲爱的程序员们,请帮助这个行业的一个新手。
EA在一定时间后依次打开买入和卖出订单。我希望它能修改所有以前的订单(具体来说,所有以前的订单都应该通过最后一个订单的获利来关闭。也就是说,如果上一个买入订单和上一个卖出订单,那么上一个订单的止损 被设置为上一个订单的获利水平。
如果是前一个买入,那么它的TakeProfit将被设置在上一个TakeProfit的水平上。 好吧,等等。重点是,当最后一个订单的获利到来时,所有的订单必须被关闭)。
我希望我解释得很清楚,尽管很难理解 应该如何 实施它。预先感谢你。
我知道我们可以浏览所有未结订单并修改它们,但我们如何跳过最后一个订单?
在这一切中,最重要的是了解应该发生什么。
什么是 "最后的命令"?它是在开幕前的最后一次吗?还是按开盘价格水平?
如果我们把 "最后一个 "订单视为 "买入",但价格会他妈的上升呢?或者反过来说,最后一笔订单将是卖出,但价格却向北走?那么哪一个应该被认为是最后一个呢?这就是我们必须意识到的。
你好。如果你事先不知道数组中会有多少个元素,你如何声明数组,使数组随着每个新元素的增加而增加?
举个例子让大家更清楚。
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
HighA[i]=A[i];
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
你好。如果你事先不知道数组中会有多少个元素,你如何声明数组,使数组随着每个新元素的增加而增加?
举个例子让大家更清楚。
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
HighA[i]=A[i];
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
你应该更多地阅读文档。
我已经阅读并尝试了,但我得到一个 "数组超出范围 "的错误。在这个例子中,它看起来像这样。
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
{
countHlines++;
ArrayResize(HighA,countHlines);
HighA[i]=A[i];
}
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
我已经阅读并尝试了,但我得到一个 "数组超出范围 "的错误。在这个例子中,它看起来像这样。
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
{
countHlines++;
ArrayResize(HighA,countHlines);
HighA[i]=A[i];
}
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
当条件A[i]<B[i]不满足时,数组大小 保持不变,循环计数器被递增。这就是为什么它超出了范围。
这样试试吧。
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
{
int size = ArraySize(HighA);
ArrayResize(HighA, size+1);
HighA[size]=A[i];
}
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
当A[i]<B[i]条件不满足时,数组大小保持不变,循环计数器被递增。这就是为什么它是出界的。
这样试试吧。
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
{
int size = ArraySize(HighA);
ArrayResize(HighA, size+1);
HighA[size]=A[i];
}
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
我已经阅读并尝试了,但我得到一个 "数组超出范围 "的错误。在这个例子中,它看起来像这样。
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
{
countHlines++;
ArrayResize(HighA,countHlines);
HighA[i]=A[i];
}
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
那会更快地工作
double HighA[];
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
{
countHlines++;
ArrayResize(HighA,countHlines);
HighA[countHlines-1]=A[i];
}
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
// Вариант №2
int countHlines=-1;
double HighA[];
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
{
countHlines++;
ArrayResize(HighA,countHlines+1);
HighA[countHlines]=A[i];
}
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
好吧,这样工作会更快
double HighA[];
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
{
countHlines++;
ArrayResize(HighA,countHlines);
HighA[countHlines-1]=A[i];
}
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
// Вариант №2
int countHlines=-1;
double HighA[];
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
{
countHlines++;
ArrayResize(HighA,countHlines+1);
HighA[countHlines]=A[i];
}
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));
谢谢你,我明白了!因为ArraySize,它将会更快,它是否会以某种方式减慢速度?
不多,但很清楚,而且不会出错。