Функция расчета прибыли в советнике

 

Добрый день, помогите пожалуйста исправить, у меня функция подсчета прибыли работает только на конкретной валютной паре, а их у меня 4, хотелось бы находясь на одной паре, видеть результаты торговли по всем парам, а не прыгать по каждой и смотреть где как. Вот код: Что тут ни так? 


double Earn(datetime startDate = 0)

{

   double result = 0;

   

   for (int i = 0; i < OrdersHistoryTotal(); i++)

   {

      if (OrderSelect(i,SELECT_BY_POS, MODE_HISTORY))

      {

         if(OrderMagicNumber()==G_magic_176_16 && OrderSymbol()==Symbol ())

         {

            if (startDate < OrderCloseTime()) 

               result += OrderProfit() + OrderSwap() + OrderCommission();

         }

         if(OrderMagicNumber()==G_magic_176_15 && OrderSymbol()==Symbol())

         {

            if (startDate < OrderCloseTime()) 

               result += OrderProfit() + OrderSwap() + OrderCommission();

         }           

         if(OrderMagicNumber()==MagicNumber_Hilo && OrderSymbol()==Symbol())

         {

            if (startDate < OrderCloseTime()) 

               result += OrderProfit() + OrderSwap() + OrderCommission();

         }         

      }

   }

   

   return(NormalizeDouble(result, 2));   

 
  1. Вместо Symbol() поставь то что тебе нужно. Лучше инпутами.
  2. Правильные магики поставить.
  3. У тебя в коде 3 пары фигурирует, а не 4.
  4. Код вставляй корректно: Alt+S
 
Alexsey Surnin:

Добрый день, помогите пожалуйста исправить, у меня функция подсчета прибыли работает только на конкретной валютной паре, а их у меня 4, хотелось бы находясь на одной паре, видеть результаты торговли по всем парам, а не прыгать по каждой и смотреть где как. Вот код: Что тут ни так? 


double Earn(datetime startDate = 0)

{

   double result = 0;

   

   for (int i = 0; i < OrdersHistoryTotal(); i++)

   {

      if (OrderSelect(i,SELECT_BY_POS, MODE_HISTORY))

      {

         if(OrderMagicNumber()==G_magic_176_16 && OrderSymbol()==Symbol ())

         {

            if (startDate < OrderCloseTime()) 

               result += OrderProfit() + OrderSwap() + OrderCommission();

         }

         if(OrderMagicNumber()==G_magic_176_15 && OrderSymbol()==Symbol())

         {

            if (startDate < OrderCloseTime()) 

               result += OrderProfit() + OrderSwap() + OrderCommission();

         }           

         if(OrderMagicNumber()==MagicNumber_Hilo && OrderSymbol()==Symbol())

         {

            if (startDate < OrderCloseTime()) 

               result += OrderProfit() + OrderSwap() + OrderCommission();

         }         

      }

   }

   

   return(NormalizeDouble(result, 2));   

double Earn(datetime startDate = 0)

{

   double result = 0;

   

   for (int i = 0; i < OrdersHistoryTotal(); i++)

   {

      if (OrderSelect(i,SELECT_BY_POS, MODE_HISTORY))

      {

         if(OrderMagicNumber()==G_magic_176_16 )

         {

            if (startDate < OrderCloseTime()) 

               result += OrderProfit() + OrderSwap() + OrderCommission();

         }

         if(OrderMagicNumber()==G_magic_176_15 )

         {

            if (startDate < OrderCloseTime()) 

               result += OrderProfit() + OrderSwap() + OrderCommission();

         }           

         if(OrderMagicNumber()==MagicNumber_Hilo)

         {

            if (startDate < OrderCloseTime()) 

               result += OrderProfit() + OrderSwap() + OrderCommission();

         }         

      }

   }

   

   return(NormalizeDouble(result, 2));   


Как то так.

 
Alekseu Fedotov:


Как то так.

Алексей, спасибо огромное!! Все работает!!