首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每符号每周利润

每符号每周利润
EN

Stack Overflow用户
提问于 2022-11-24 22:00:38
回答 2查看 31关注 0票数 1

我创建了一个函数来计算我每周的损益。它的工作如下所示,我会把它分解成唯一的每一个符号/对。我被困在了这个聚会上。如有任何提示,将不胜感激。

代码语言:javascript
复制
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);

我试图创建一个符号数组,但没有成功。我被塞进了每周的总开支里。

EN

回答 2

Stack Overflow用户

发布于 2022-11-25 14:53:56

如果有人需要的话,这里有个解决方案。但我还是不能得到每个符号的摘要。这显示了每笔交易的影响。让我知道你是否知道如何做,而不是把结果

  • 欧元1欧元
  • 欧元2欧元
  • 共计:2欧元

我错过了如何到达:

  • 欧元2欧元
  • 共计:2欧元

#include <Arrays\ArrayString.mqh>

代码语言:javascript
复制
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);
}
票数 0
EN

Stack Overflow用户

发布于 2022-11-26 09:21:11

另一次迭代,这一次我可以得到总结,但利润是递增的,而不是每个符号。

  • 欧元1欧元

  • EURGBP 2 EUR

  • 总计:2欧元,我在盈利方式上少了什么?

字符串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);

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74566583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档