关闭订单的利润计算 "HELP" - 页 8 123456789 新评论 Vitalie Postolache 2016.12.12 20:27 #71 Natashe4ka: 订单是串联关闭的,但如果没有关闭条件,就会收集一两天的订单,等等。如果该系列实际上是在一个周期内关闭的,例如,在 一个柱状体的有效期内,那么我们可以通过关闭的时间加上一个柱状体来获取该系列的标准。也就是说,所有关闭时间小于该时间的订单都应该被抛弃。然而,我们担心这只在测试器中起作用;任何人工干预 将导致错误的利润计算(只有EA的利润被考虑在内,而人工交易不会)。 [删除] 2016.12.12 20:30 #72 Vitalie Postolache: 如果该系列实际上是在一个周期内关闭的,例如,在 一个柱状体的有效期内,那么我们可以通过关闭的时间加上一个柱状体来获得该系列的标准。也就是说,所有收盘时间小于该时间的订单都应该被丢弃。I.e.if ((op<0||OrderType()==op) && (t==OrderCloseTime() || t==OrderCloseTime()+60)) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();}(t==OrderCloseTime()||t==OrderCloseTime()+60)? Vitalie Postolache 2016.12.12 20:31 #73 Natashe4ka:I.e.if ((op<0||OrderType()==op) && t==OrderCloseTime()+60) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();} +60 ?PeriodSeconds() 会更正确。还是你只打算在M1上工作?类似这样的事情。double lastloss(){ double lastlos=0.0,op=0.0; int cnt=0; datetime time=0; for(int i=OrdersHistoryTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) { if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2) { if(cnt==0) time=OrderCloseTime(); op=OrderProfit()+OrderSwap()+OrderCommission(); if(OrderCloseTime()+PeriodSeconds()<time && op>0.0) break; lastlos+=op; if(cnt!=0) cnt++; } } } return(lastlos);} 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 Profit calculation of closed 如何编码? [删除] 2016.12.12 20:40 #74 Vitalie Postolache:类似这样的事情。这是在前一个值的基础上增加一个新的值。但每一次新的关闭,都是一个新的利润值。 Vitalie Postolache 2016.12.12 20:42 #75 而且你还可以在评论中对订单进行编号,对于那些不覆盖评论的DC来说。而在试出评论中的数字时,只要数字不符合顺序--系列就结束了。例如:订单系列编号1,2,3,4,5。按5,4,3,2,1的顺序关闭 - 循环看到1并中断。按1,2,3,4,5和1(前一个系列的顺序号)的顺序关闭 - 循环看到5-1>1的差异而中止。我需要考虑如何将其转化为代码 )))) Vitalie Postolache 2016.12.12 20:43 #76 Natashe4ka:因此,一个新的值被添加到之前的值中。而每一次新的关闭,都是一个新的利润值。 我不知道,对我来说,这并不成立。 [删除] 2016.12.12 20:47 #77 Vitalie Postolache: 我不知道,对我来说,这并不成立。把信息放上去,你就会发现它加起来了。color ProfitColor; if(lastloss()<0) ProfitColor=Red; if(lastloss()>0) ProfitColor=LimeGreen; if(lastloss()==0)ProfitColor=DarkGray; ObjectCreate("Last Profit", OBJ_LABEL, 0, 0, 0); ObjectSet("Last Profit", OBJPROP_CORNER, 1); ObjectSet("Last Profit", OBJPROP_XDISTANCE, 5); ObjectSet("Last Profit", OBJPROP_YDISTANCE, 15); ObjectSetText("Last Profit",StringConcatenate("Last Profit: ",DoubleToStr(lastloss(),2)),10,"Arial",ProfitColor); Vitalie Postolache 2016.12.12 21:05 #78 Natashe4ka:把信息放进去,你会立即看到加起来的东西。 嗯,确实是这样...让我们继续思考)))) Renat Akhtyamov 2016.12.12 21:06 #79 我知道这是测试仪中的一个测试....。 [删除] 2016.12.12 21:09 #80 Vitalie Postolache: 嗯,确实是这样...让我们继续思考))))我也认为它是按规定计算的。 我不应该把这些信息放在代码中,生活就会变得更容易))而现在令人费解的是,这个功能怎么一直没有正常工作!!!。 123456789 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
订单是串联关闭的,但如果没有关闭条件,就会收集一两天的订单,等等。
如果该系列实际上是在一个周期内关闭的,例如,在 一个柱状体的有效期内,那么我们可以通过关闭的时间加上一个柱状体来获取该系列的标准。也就是说,所有关闭时间小于该时间的订单都应该被抛弃。
然而,我们担心这只在测试器中起作用;任何人工干预 将导致错误的利润计算(只有EA的利润被考虑在内,而人工交易不会)。
如果该系列实际上是在一个周期内关闭的,例如,在 一个柱状体的有效期内,那么我们可以通过关闭的时间加上一个柱状体来获得该系列的标准。也就是说,所有收盘时间小于该时间的订单都应该被丢弃。
I.e.
(t==OrderCloseTime()||t==OrderCloseTime()+60)?
I.e.
+60 ?
PeriodSeconds() 会更正确。还是你只打算在M1上工作?
类似这样的事情。
{
double lastlos=0.0,op=0.0;
int cnt=0;
datetime time=0;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2)
{
if(cnt==0) time=OrderCloseTime();
op=OrderProfit()+OrderSwap()+OrderCommission();
if(OrderCloseTime()+PeriodSeconds()<time && op>0.0) break;
lastlos+=op;
if(cnt!=0) cnt++;
}
}
}
return(lastlos);
}
类似这样的事情。
而且你还可以在评论中对订单进行编号,对于那些不覆盖评论的DC来说。而在试出评论中的数字时,只要数字不符合顺序--系列就结束了。
例如:订单系列编号1,2,3,4,5。按5,4,3,2,1的顺序关闭 - 循环看到1并中断。按1,2,3,4,5和1(前一个系列的顺序号)的顺序关闭 - 循环看到5-1>1的差异而中止。我需要考虑如何将其转化为代码 ))))
因此,一个新的值被添加到之前的值中。而每一次新的关闭,都是一个新的利润值。
我不知道,对我来说,这并不成立。
把信息放上去,你就会发现它加起来了。
if(lastloss()<0) ProfitColor=Red;
if(lastloss()>0) ProfitColor=LimeGreen;
if(lastloss()==0)ProfitColor=DarkGray;
ObjectCreate("Last Profit", OBJ_LABEL, 0, 0, 0);
ObjectSet("Last Profit", OBJPROP_CORNER, 1);
ObjectSet("Last Profit", OBJPROP_XDISTANCE, 5);
ObjectSet("Last Profit", OBJPROP_YDISTANCE, 15);
ObjectSetText("Last Profit",StringConcatenate("Last Profit: ",DoubleToStr(lastloss(),2)),10,"Arial",ProfitColor);
把信息放进去,你会立即看到加起来的东西。
嗯,确实是这样...让我们继续思考))))
我也认为它是按规定计算的。
我不应该把这些信息放在代码中,生活就会变得更容易))
而现在令人费解的是,这个功能怎么一直没有正常工作!!!。