簡體   English   中英

每個符號的每周利潤

[英]Weekly profit per symbol

我創建了一個 function 來計算我每周的盈虧。 它按照下面的方式工作,我會把它分解成只有每個符號/對。 我一直堅持這個聚合。 任何提示表示贊賞。

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);

我試圖創建一個符號數組,但沒有成功。 我堅持每周總計。

如果有人需要,這里有一個解決方案。 但我仍然無法獲得每個符號的摘要。 這顯示了每筆交易的影響。 如果您對如何而不是將結果作為結果有任何想法,請告訴我

  • 歐元兌美元 1 歐元
  • 歐元兌美元 2 歐元
  • 總計:2 歐元

我不知道如何到達:

  • 歐元兌美元 2 歐元
  • 總計:2 歐元

#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);
}

另一次迭代,這次我能夠獲得摘要,但利潤是遞增的,而不是每個符號。

  • 歐元兌美元 1 歐元

  • 歐元英鎊 2 歐元

  • 總計:2 歐元 我在利潤方法上遺漏了什么?

    字符串 WeeklyProfit() {

    字符串 msg_WeeklyProfit=""; int i,j,k,OrderCount,hstTotal=OrdersHistoryTotal(); 雙倍利潤,profitb,profittotal; 字符串 profitmsg=""; CArrayString結果 = new CArrayString(); datetime starttime2 = TimeCurrent()-(6 24 60 60);

    打印(hstTotal); for(i=0;i<hstTotal;i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==TRUE) { if(OrderOpenTime() >= starttime2) { profittotal+=OrderProfit()+OrderSwap()+OrderCommission( ); 訂單數++; const string symbol=OrderSymbol(); if(result.Search(symbol);=-1) { Print("符號存在"). } else { if (OrderType() == OP_SELL || OrderType() == OP_BUY) { 結果;添加(符號)。 結果;排序(); } } } } }

     for(j=0;j<result.Total();j++) { for(k=0;k<hstTotal;k++) { if(OrderSelect(k,SELECT_BY_POS,MODE_HISTORY)==TRUE) { if(OrderOpenTime() >= starttime2) { if (OrderSymbol()==result[j]) { if (OrderType() == OP_SELL || OrderType() == OP_BUY) { profit += OrderProfit() + OrderSwap() + OrderCommission(); } } } } } profitmsg+=result[j]+ " " +DoubleToStr(profit,2) +" " + AccountCurrency() + "\n"; } profittotal+=OrderProfit()+OrderSwap()+OrderCommission(); Print("profittotal "+ profittotal); msg_WeeklyProfit= "Since " +TimeToStr(starttime2,TIME_DATE|TIME_MINUTES)+ "\n===================\n" + profitmsg + "===================\n" + "Total: " + DoubleToStr(profittotal,2)+ " "+AccountCurrency()+ "\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);

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM