关闭订单的利润计算 "HELP" - 页 3 123456789 新评论 Renat Akhtyamov 2016.12.11 16:19 #21 Vitaly Muzichenko: 它不适合,没有10年的信息。这对你来说也不一样。t变量将发生变化,你将会受到影响。在你开始关闭系列之前,必须要记住它color ProfitColor;datetime t;// START // //t=TimeCurrent();//разместить в блоке сигнала на закрытие серии ордеров if(LastProfitCL(-1)<0) ProfitColor=Red; if(LastProfitCL(-1)>0) ProfitColor=LimeGreen; if(LastProfitCL(-1)==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(LastProfitCL(-1),2)),10,"Arial",ProfitColor);// END START ////+----------------------------------------------------------------------------+//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |//+----------------------------------------------------------------------------+double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция) double LastProfit=0; for(i=OrdersHistoryTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) { if (OrderType()!= op || OrderSymbol()!= Symbol() || OrderMagicNumber()!= magic) continue; if (op<0 || OrderType()==op) { if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); } } return(LastProfit); } Profit calculation of closed 如何编码? 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 Vitaly Muzichenko 2016.12.11 16:24 #22 Renat Akhtyamov:这对你来说也不一样。t变量会发生变化,你会大吃一惊。必须在系列赛结束前把它背下来。你试过吗? 在收盘前,在发出收盘信号的那一刻,它就被记住了。 Alekseu Fedotov 2016.12.11 16:25 #23 Vitaly Muzichenko: 这是不合适的,没有10年的信息。目前的利润, ,所有的历史。顺便说一下,它可以被设置为任何日期和时间。 [删除] 2016.12.11 16:26 #24 Vitaly Muzichenko:尝试Comment( LastProfitCL(-1, 0) );//+----------------------------------------------------------------------------+//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |//+----------------------------------------------------------------------------+double LastProfitCL(int op=-1, datetime t=0){ //"op" позиция (-1 любая позиция) double LastProfit=0; for(int i=OrdersHistoryTotal()-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) { if((op<0||OrderType()==op) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic){ if(t<=OrderCloseTime()) { t=OrderCloseTime(); LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); }}}} return(LastProfit);}利润记住了每一个新的,但后来有些东西算得上是未知。在3号屏幕中,它应该是4,而不是190 Renat Akhtyamov 2016.12.11 16:28 #25 Vitaly Muzichenko:你试过吗?它在关闭前就记住了,在收到关闭信号的那一刻。 只需阅读代码。 [删除] 2016.12.11 16:37 #26 这也是190if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); Vitaly Muzichenko 2016.12.11 16:39 #27 Natashe4ka:利润记住了每一个新的,但后来有些东西算得上是未知。在3号屏幕中,它应该是4,而不是190以下是代码,对我来说工作正常,但也许是因为系列被正确关闭了 附加的文件: info.mq4 9 kb Renat Akhtyamov 2016.12.11 16:40 #28 Natashe4ka:所以也是190if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();关闭订单的命令位于哪里?你在里面写了变量t吗?t=TimeCurrent();//разместить в блоке сигнала на закрытие серии ордеров [删除] 2016.12.11 16:42 #29 Renat Akhtyamov:关闭订单的命令位于哪里?你在里面写了变量t吗? t=TimeCurrent();//放在信号块中,用于关闭一系列的订单当然,这一切都在那里。if(t<=OrderCloseTime()) { t=OrderCloseTime();if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); Renat Akhtyamov 2016.12.11 16:48 #30 Natashe4ka:当然,这一切都在那里。if(t<=OrderCloseTime()) { t=OrderCloseTime();if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();不,这一行被删除。这已经是利润计算了,不会有这样的效果。 在代码中关闭的命令 - 有,但没有这样的行阅读上文。 123456789 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
它不适合,没有10年的信息。
这对你来说也不一样。
t变量将发生变化,你将会受到影响。
在你开始关闭系列之前,必须要记住它
color ProfitColor;
datetime t;
// START //
//t=TimeCurrent();//разместить в блоке сигнала на закрытие серии ордеров
if(LastProfitCL(-1)<0) ProfitColor=Red;
if(LastProfitCL(-1)>0) ProfitColor=LimeGreen;
if(LastProfitCL(-1)==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(LastProfitCL(-1),2)),10,"Arial",ProfitColor);
// END START //
//+----------------------------------------------------------------------------+
//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
for(i=OrdersHistoryTotal()-1;i>=0;i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
if (OrderType()!= op || OrderSymbol()!= Symbol() || OrderMagicNumber()!= magic) continue;
if (op<0 || OrderType()==op)
{
if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
return(LastProfit);
}
这对你来说也不一样。
t变量会发生变化,你会大吃一惊。
必须在系列赛结束前把它背下来。
你试过吗?
在收盘前,在发出收盘信号的那一刻,它就被记住了。
这是不合适的,没有10年的信息。
目前的利润, ,所有的历史。
顺便说一下,它可以被设置为任何日期和时间。
尝试
return(LastProfit);Comment( LastProfitCL(-1, 0) );
//+----------------------------------------------------------------------------+
//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1, datetime t=0){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
if((op<0||OrderType()==op) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic){
if(t<=OrderCloseTime()) {
t=OrderCloseTime();
LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
}}}}
}
利润记住了每一个新的,但后来有些东西算得上是未知。在3号屏幕中,它应该是4,而不是190
你试过吗?
它在关闭前就记住了,在收到关闭信号的那一刻。
这也是190
利润记住了每一个新的,但后来有些东西算得上是未知。在3号屏幕中,它应该是4,而不是190
以下是代码,对我来说工作正常,但也许是因为系列被正确关闭了
所以也是190
关闭订单的命令位于哪里?
你在里面写了变量t吗?
关闭订单的命令位于哪里?
你在里面写了变量t吗?
t=TimeCurrent();//放在信号块中,用于关闭一系列的订单当然,这一切都在那里。
t=OrderCloseTime();
if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
当然,这一切都在那里。
t=OrderCloseTime();
if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
不,这一行被删除。这已经是利润计算了,不会有这样的效果。
在代码中关闭的命令 - 有,但没有这样的行
阅读上文。