kasparsvas16

 
Уровень 9

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


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

Рейтинг 2153



РЕКОМЕНДУЮ



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

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


#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
  • Просмотров: 1320
  • 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

  35  AM2 Сообщений: 16495 - Андрей

  • 21 июля 2023, 17:45

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