kasparsvas16

 
Уровень 9

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2141



РЕКОМЕНДУЮ



если не сложно, как подправить?

если не сложно, как подправить этот код, чтобы считал только пару на которую установлен?
Сейчас считает все пары и общий профит, а хочу что-бы только пару на которую установлен.
Спасибо.


#property copyright "Copyright"
#property link      ""
#property version   ""
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
input double targetProfitP = 0.05;
input int Slippage=30; 

int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
    double totalProfitPercentage = 0.0;
    
    for (int i = OrdersTotal() - 1; i >= 0; i--)
    {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
            if (OrderType() <= OP_SELL)
            {
                totalProfitPercentage += OrderProfit() / AccountBalance() * 100.0;
            }
        }
    }
    
    if (totalProfitPercentage >= targetProfitP)
    {
        CloseAllOrdersIfProfitReached(targetProfitP);
    }

             
              

     double profit=0;
              profit=OrderProfit()+OrderSwap()+OrderCommission();

  }
//+------------------------------------------------------------------+
void CloseAllOrdersIfProfitReached(double totalProfitP)
{
    double accountBalance = AccountBalance();
    double targetProfit = accountBalance * (totalProfitP / 100.0);
    
    for (int i = OrdersTotal() - 1; i >= 0; i--)
    {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
            if (OrderType() <= OP_SELL)
            {
                double orderProfit = OrderProfit();
                targetProfit -= orderProfit;
                
                if (targetProfit <= 0)
                {
                    if (OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), Slippage, clrRed))
                    {
                        Print("Order closed: ", OrderTicket());
                    }
                    else
                    {
                        Print("Failed to close order: ", OrderTicket(), ", Error: ", GetLastError());
                    }
                }
            }
        }
    }
}
  • 0
  • Просмотров: 1241
  • 17 июля 2023, 15:03
  • kasparsvas16
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Робот помощник
Следующая запись в группе  
Советник на трендовом индикаторе
17 июля 2023
18 июля 2023

Брокер для ваших роботов, 15 лет на рынке

Комментарии (2)

+
0
По моему получилось, поправьте если где ошибка пожалуйста

double totalProfitPercentage = 0.0;

    for (int i = OrdersTotal() - 1; i >= 0; i--)
    {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
            {
                if (OrderType() <= OP_SELL)
                {
                    totalProfitPercentage += OrderProfit() / AccountBalance() * 100.0;
                }
            }
        }
    }

    if (totalProfitPercentage >= targetProfitP)
    {
        CloseAllOrdersIfProfitReached(targetProfitP);
    }

    double profit = 0;
    profit = OrderProfit() + OrderSwap() + OrderCommission();


void CloseAllOrdersIfProfitReached(double totalProfitP)
{
    double accountBalance = AccountBalance();
    double targetProfit = accountBalance * (totalProfitP / 100.0);

    for (int i = OrdersTotal() - 1; i >= 0; i--)
    {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
            {
                if (OrderType() <= OP_SELL)
                {
                    double orderProfit = OrderProfit();
                    targetProfit -= orderProfit;

                    if (targetProfit <= 0)
                    {
                        if (OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), Slippage, clrRed))
                        {
                            Print("Order closed: ", OrderTicket());
                        }
                        else
                        {
                            Print("Failed to close order: ", OrderTicket(), ", Error: ", GetLastError());
                        }
                    }
                }
            }
        }
    }
}
avatar

  9  kasparsvas16 Автор Сообщений: 102

  • 17 июля 2023, 15:40
+
0
все правильно
avatar

  34  AM2 Сообщений: 16193 - Андрей

  • 21 июля 2023, 17:45

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий