关闭订单的利润计算 "HELP" - 页 7 123456789 新评论 [删除] 2016.12.12 17:23 #61 Sergey Gritsay: 那么这些东西都存在哪里呢? 你是把它写在某个变量或数组中吗? 先告诉我你把它储存在哪里,然后你就可以知道接下来该怎么做了。 哪儿都不行。你需要有能力地创造这一切,并收集利润数据。 Sergey Gritsay 2016.12.12 17:39 #62 Natashe4ka:好吧,那我们来分解一下:有一个订单的关闭时间,有一个与关闭时间相吻合的票据或订单数量。我们如何合并和计算这些订单的利润? 这似乎很容易,但我还是不明白。 到目前为止,没有人能够弄清楚哪些是用红色突出显示的。我们需要准确的标准来找到这些订单。因此,尽量解释,就像他们说的,在手指上,用图片等。 Renat Akhtyamov 2016.12.12 17:41 #63 Sergey Gritsay: 到目前为止,没有人能够弄清楚哪些是用红色突出显示的。我们需要准确的标准来找到这些订单。所以尽量解释,就像他们在手指上说的那样,用图片等等。?为什么没有人 能够理解这一点,你可能是指你自己? 很久以来,这一点已经很清楚了。夫人只想自己做,不炫耀她的方案细节。 Vitaly Muzichenko 2016.12.12 18:45 #64 Sergey Gritsay: 到目前为止,没有人能够理解哪些是用红色突出显示的。我们需要准确的标准来寻找这些订单。出于这个原因,尽量解释,就像他们在手指上说的那样,用图片等等来解释是的,我已经给出了一个100%的工作条件,并将其作为现成的代码附上。你还应该注意到,该代码使用的方法不受终端重启的影响,当终端被打开时,没有任何东西会丢失,会继续工作。但在这里,他们发明了一个只能在测试器中工作的轮子。谢尔盖,还要注意的是,在原来的TS代码中,当你关闭一系列的5个头寸时,关闭中的订单也会被删除,这反过来也不会在实际交易中带来什么好结果。一般来说,除了TS之外,所有人都很清楚一切。 Sergey Gritsay 2016.12.12 20:26 #65 我想我明白娜塔莉亚想得到什么了//+------------------------------------------------------------------+//| Natashe4ka.mq4 |//| Sergey Gritsay |//| https://www.mql5.com/ru/users/sergey1294 |//+------------------------------------------------------------------+#property copyright "Sergey Gritsay"#property link "https://www.mql5.com/ru/users/sergey1294"#property version "1.00"#property strictinput int Magic=1;//Identification numberdouble Profit=0;//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() {//---//--- return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) {//--- }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick() { color ProfitColor=0;// START // LastProfitCL_1(Profit,TimeCurrent(),-1); if(Profit<0)ProfitColor=clrRed; else if(Profit>0)ProfitColor=clrLimeGreen; else ProfitColor=clrDarkGray; 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(Profit,2)),10,"Arial",ProfitColor);// END START // }//+------------------------------------------------------------------+//Вариант 1//+------------------------------------------------------------------+bool LastProfitCL_1(double &LastProfit,//сюда записываем профит datetime timecurent,// текущее время int op=-1//"op" позиция (-1 любая позиция) ) { double profit=0; int cnt=0; datetime timecurents=0; int total=OrdersHistoryTotal(); for(int i=total-1;i>=0;i--) { if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue; if(OrderMagicNumber()!=Magic)continue; if(OrderSymbol()!=_Symbol)continue; if(OrderType()>1)continue;// исключим удаленные отложенные ордера if(OrderCloseTime()!=timecurent)continue; if(OrderType()==op || op==-1) { profit+=OrderProfit()+OrderCommission()+OrderSwap(); cnt++; } } if(cnt!=0) { LastProfit=profit; return(true); } return(false); }//+------------------------------------------------------------------+//+------------------------------------------------------------------+//| Вариант 2 |//+------------------------------------------------------------------+bool LastProfitCL_2(double &LastProfit,//сюда записываем профит datetime timecurent,// текущее время int op=-1//"op" позиция (-1 любая позиция) ) { double profit=0; int cnt=0; datetime timecurents=0; int total=OrdersHistoryTotal(); if(OrderSelect(total-1,SELECT_BY_POS,MODE_HISTORY)) { timecurents=OrderCloseTime(); } for(int i=total-1;i>=0;i--) { if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue; if(OrderMagicNumber()!=Magic)continue; if(OrderSymbol()!=_Symbol)continue; if(OrderCloseTime()<timecurents)continue; if(OrderType()>1)continue;// исключим удаленные отложенные ордера if(OrderType()==op || op==-1) { profit+=OrderProfit()+OrderCommission()+OrderSwap(); cnt++; } } if(cnt!=0) { LastProfit=profit; return(true); } return(false); }//+------------------------------------------------------------------+.... Profit calculation of closed 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 求助帖 Sergey Gritsay 2016.12.12 20:54 #66 纠正了第二个版本的函数bool LastProfitCL_2(double &LastProfit,//сюда записываем профит datetime timecurent,// текущее время int op=-1//"op" позиция (-1 любая позиция) ) { double profit=0; int cnt=0; datetime timecurents=0; int total=OrdersHistoryTotal(); for(int i=total-1;i>=0;i--) { if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue; if(OrderType()>1)continue;// исключим удаленные отложенные ордера if(OrderType()!=op && op!=-1)continue; if(OrderMagicNumber()!=Magic)continue; if(OrderSymbol()!=_Symbol)continue; if(timecurents==0)timecurents=OrderCloseTime(); // запомним время последнего закрытого ордера if(OrderCloseTime()<timecurents)continue; profit+=OrderProfit()+OrderCommission()+OrderSwap(); cnt++; } if(cnt!=0) { LastProfit=profit; return(true); } return(false); }.......... 如何编码? Profit calculation of closed 任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. [删除] 2016.12.12 21:04 #67 Sergey Gritsay:纠正了第二个版本的函数谢谢你的帮助。 变体1不能正常工作 变体2能正常工作。 我的变体也能正常工作,但如果订单结转到另一天或更长时间,数值就不清楚了 利润190,而它应该是4.27。请看屏幕截图 #3https://www.mql5.com/ru/forum/162930/page3//+----------------------------------------------------------------------------+// Возвращает суммарный профит в валюте депозита серии закрытых ордеров |//+----------------------------------------------------------------------------+double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция) double LastProfit=0; datetime t=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 (OrderSymbol()!=Symbol()||OrderMagicNumber()!=magic) continue; if (t<OrderCloseTime()) {t=OrderCloseTime();} if ((op<0||OrderType()==op) && t==OrderCloseTime()) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();} } return(LastProfit); } 如何编码? Profit calculation of closed 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 [删除] 2016.12.12 21:12 #68 事实证明,问题不在于订单的数量,而在于将订单转移到另一天或更长时间。 Vitalie Postolache 2016.12.12 21:17 #69 Natashe4ka:事实证明,问题不在于订单的数量,而在于将订单转移到另一天或更长时间。 你是串联关闭还是什么?如果你在一个周期内关闭所有的订单,那么转移是什么? [删除] 2016.12.12 21:24 #70 Vitalie Postolache: 那么,你是在一个系列中关闭还是什么?如果你在一个周期内关闭所有的订单,那么结转率是多少?订单按系列关闭,但如果没有关闭的条件,订单会聚集一两天,等等。 虽然,订单的数量也会影响到利润值。 如果有3个以上的订单,则只计算最后关闭的订单的数值。 123456789 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
那么这些东西都存在哪里呢? 你是把它写在某个变量或数组中吗? 先告诉我你把它储存在哪里,然后你就可以知道接下来该怎么做了。
好吧,那我们来分解一下:有一个订单的关闭时间,有一个与关闭时间相吻合的票据或订单数量。我们如何合并和计算这些订单的利润?
这似乎很容易,但我还是不明白。
到目前为止,没有人能够弄清楚哪些是用红色突出显示的。我们需要准确的标准来找到这些订单。所以尽量解释,就像他们在手指上说的那样,用图片等等。
?
为什么没有人 能够理解这一点,你可能是指你自己?
很久以来,这一点已经很清楚了。
夫人只想自己做,不炫耀她的方案细节。
到目前为止,没有人能够理解哪些是用红色突出显示的。我们需要准确的标准来寻找这些订单。出于这个原因,尽量解释,就像他们在手指上说的那样,用图片等等来解释
是的,我已经给出了一个100%的工作条件,并将其作为现成的代码附上。你还应该注意到,该代码使用的方法不受终端重启的影响,当终端被打开时,没有任何东西会丢失,会继续工作。但在这里,他们发明了一个只能在测试器中工作的轮子。
谢尔盖,还要注意的是,在原来的TS代码中,当你关闭一系列的5个头寸时,关闭中的订单也会被删除,这反过来也不会在实际交易中带来什么好结果。一般来说,除了TS之外,所有人都很清楚一切。
//| Natashe4ka.mq4 |
//| Sergey Gritsay |
//| https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link "https://www.mql5.com/ru/users/sergey1294"
#property version "1.00"
#property strict
input int Magic=1;//Identification number
double Profit=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
color ProfitColor=0;
// START //
LastProfitCL_1(Profit,TimeCurrent(),-1);
if(Profit<0)ProfitColor=clrRed;
else if(Profit>0)ProfitColor=clrLimeGreen;
else ProfitColor=clrDarkGray;
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(Profit,2)),10,"Arial",ProfitColor);
// END START //
}
//+------------------------------------------------------------------+
//Вариант 1
//+------------------------------------------------------------------+
bool LastProfitCL_1(double &LastProfit,//сюда записываем профит
datetime timecurent,// текущее время
int op=-1//"op" позиция (-1 любая позиция)
)
{
double profit=0;
int cnt=0;
datetime timecurents=0;
int total=OrdersHistoryTotal();
for(int i=total-1;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
if(OrderMagicNumber()!=Magic)continue;
if(OrderSymbol()!=_Symbol)continue;
if(OrderType()>1)continue;// исключим удаленные отложенные ордера
if(OrderCloseTime()!=timecurent)continue;
if(OrderType()==op || op==-1)
{
profit+=OrderProfit()+OrderCommission()+OrderSwap();
cnt++;
}
}
if(cnt!=0)
{
LastProfit=profit;
return(true);
}
return(false);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Вариант 2 |
//+------------------------------------------------------------------+
bool LastProfitCL_2(double &LastProfit,//сюда записываем профит
datetime timecurent,// текущее время
int op=-1//"op" позиция (-1 любая позиция)
)
{
double profit=0;
int cnt=0;
datetime timecurents=0;
int total=OrdersHistoryTotal();
if(OrderSelect(total-1,SELECT_BY_POS,MODE_HISTORY))
{
timecurents=OrderCloseTime();
}
for(int i=total-1;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
if(OrderMagicNumber()!=Magic)continue;
if(OrderSymbol()!=_Symbol)continue;
if(OrderCloseTime()<timecurents)continue;
if(OrderType()>1)continue;// исключим удаленные отложенные ордера
if(OrderType()==op || op==-1)
{
profit+=OrderProfit()+OrderCommission()+OrderSwap();
cnt++;
}
}
if(cnt!=0)
{
LastProfit=profit;
return(true);
}
return(false);
}
//+------------------------------------------------------------------+
纠正了第二个版本的函数
datetime timecurent,// текущее время
int op=-1//"op" позиция (-1 любая позиция)
)
{
double profit=0;
int cnt=0;
datetime timecurents=0;
int total=OrdersHistoryTotal();
for(int i=total-1;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
if(OrderType()>1)continue;// исключим удаленные отложенные ордера
if(OrderType()!=op && op!=-1)continue;
if(OrderMagicNumber()!=Magic)continue;
if(OrderSymbol()!=_Symbol)continue;
if(timecurents==0)timecurents=OrderCloseTime(); // запомним время последнего закрытого ордера
if(OrderCloseTime()<timecurents)continue;
profit+=OrderProfit()+OrderCommission()+OrderSwap();
cnt++;
}
if(cnt!=0)
{
LastProfit=profit;
return(true);
}
return(false);
}
..........
纠正了第二个版本的函数
谢谢你的帮助。
变体1不能正常工作
变体2能正常工作。
我的变体也能正常工作,但如果订单结转到另一天或更长时间,数值就不清楚了 利润190,而它应该是4.27。
请看屏幕截图 #3https://www.mql5.com/ru/forum/162930/page3
// Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
datetime t=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 (OrderSymbol()!=Symbol()||OrderMagicNumber()!=magic) continue;
if (t<OrderCloseTime()) {t=OrderCloseTime();}
if ((op<0||OrderType()==op) && t==OrderCloseTime()) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();}
}
return(LastProfit);
}
事实证明,问题不在于订单的数量,而在于将订单转移到另一天或更长时间。
那么,你是在一个系列中关闭还是什么?如果你在一个周期内关闭所有的订单,那么结转率是多少?
订单按系列关闭,但如果没有关闭的条件,订单会聚集一两天,等等。
虽然,订单的数量也会影响到利润值。
如果有3个以上的订单,则只计算最后关闭的订单的数值。