我创建了一个函数来计算我每周的损益。它的工作如下所示,我会把它分解成唯一的每一个符号/对。我被困在了这个聚会上。如有任何提示,将不胜感激。
string WeeklyProfit()
{
string msg_WeeklyProfit="";
int i,hstTotal=OrdersHistoryTotal();
double profit;
datetime starttime = iTime(Symbol(), PERIOD_W1, 0);
for(i=0;i<hstTotal;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==TRUE)
{
if(OrderOpenTime() >= starttime)
{
profit += OrderProfit() + OrderSwap() + OrderCommission();
}
}
msg_WeeklyProfit=profit+ " "+ AccountCurrency();
}
return(msg_WeeklyProfit);我试图创建一个符号数组,但没有成功。我被塞进了每周的总开支里。
发布于 2022-11-25 14:53:56
如果有人需要的话,这里有个解决方案。但我还是不能得到每个符号的摘要。这显示了每笔交易的影响。让我知道你是否知道如何做,而不是把结果
我错过了如何到达:
#include <Arrays\ArrayString.mqh>
string WeeklyProfit()
{
string msg_WeeklyProfit="";
int i,j,OrderCount,hstTotal=OrdersHistoryTotal();
double profit,profitb,profittotal;
string profitmsg="";
CArrayString *result = new CArrayString();
datetime starttime = iTime(Symbol(), PERIOD_W1, 0);
datetime starttime2 = TimeCurrent()-(7*60*60);
Print(starttime);
Print(starttime2);
for(i=0;i<hstTotal;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==TRUE)
{
if(OrderOpenTime() >= starttime)
{
const string symbol=OrderSymbol();
if(result.Search(symbol)!=-1)
{
Print("symbol exist");
}
else
{
result.Add(symbol);
result.Sort();
Print(symbol);
}
for(j=0;j<result.Total();j++)
{
if (OrderSymbol()==result.At(j))
{
profit+=OrderProfit()+OrderSwap()+OrderCommission();
profitmsg+=symbol+ " " + DoubleToStr(profit,2) + " " + AccountCurrency()+"\n";
}
}
OrderCount++;
profittotal+=OrderProfit()+OrderSwap()+OrderCommission();
Print("profit"+ profit);
}
}
}
msg_WeeklyProfit= profitmsg +
"\n==============\n" +
"Since " + TimeToStr(starttime,TIME_DATE) + " Total: " + DoubleToStr(profittotal,2)+ AccountCurrency()+
"\n==============\n" +
OrderCount + " Trades" + " (avg: " + DoubleToStr(profittotal/OrderCount,2) + AccountCurrency()+ ") ";
if (profittotal>=0)
{
msg_WeeklyProfit += "\n"+ EMOJI_GREENCIRCLE;
}
else
{
msg_WeeklyProfit += "\n"+EMOJI_REDCIRCLE;
};
delete result;
return(msg_WeeklyProfit);
}发布于 2022-11-26 09:21:11
另一次迭代,这一次我可以得到总结,但利润是递增的,而不是每个符号。
字符串WeeklyProfit() {
字符串msg_WeeklyProfit=“;int,j,k,OrderCount,hstTotal=OrdersHistoryTotal();双利润,利润,利润总额;字符串profitmsg=”;CArrayString _result =新CArrayString();datetime starttime2 = TimeCurrent()-(6_24_60_60);
打印(HstTotal);for(i=0;i= starttime2) {OrderSelect OrderCount++;const string symbol=OrderSymbol();if (result.Search(符号)!=-1){Print(“符号存在”);}OP_BUY{if (OrderType() == OP_SELL () == OrderType() OrderType){(符号);();}}}
对于(j=0;j= starttime2) { if (OrderSymbol()==resultj) { if (OrderType() == OP_SELL x x OrderType() == OP_BUY) { += OrderProfit() + OrderSwap() + OrderCommission();} profittotal+=OrderProfit()+OrderSwap()+OrderCommission();profitmsg+=resultj+ "+ DoubleToStr(利润,2) +“+ AccountCurrency() +”n“;msg_WeeklyProfit=“自”+TimeToStr(starttime2,TIME_DATE|TIME_MINUTES)+ "\n===================\n“+”\n===================\n“+ "===================\n”+“总计:”+DoubleToStr(利润总额,2)+ "+AccountCurrency()+ "\n"+ OrderCount +“Trades”+“(avg:”+DoubleToStr“/OrderCount),2) + AccountCurrency()+ ") ";如果(profittotal>=0) { msg_WeeklyProfit += "\n"+ EMOJI_GREENCIRCLE;}EMOJI_GREENCIRCLE{ msg_WeeklyProfit += "\n"+EMOJI_REDCIRCLE;};删除结果;返回(Msg_WeeklyProfit);
}
https://stackoverflow.com/questions/74566583
复制相似问题