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

kasparsvas16

  • 17 июля 2023, 15:40
0
Огромное спасибо, мне больше не надо каждые 30 минут слушать этот будильник, либо смотреть на время.
avatar

kasparsvas16

  • 13 июля 2023, 23:36
0
Пока что это секрет, если система прокатит, и будет всё как надо, выложу всю торговую систему тут.
avatar

kasparsvas16

  • 13 июля 2023, 23:36
0
Было бы замечательно если могли бы.
Спасибо Вам огромное.
avatar

kasparsvas16

  • 13 июля 2023, 18:51
0
Спасибо большое, хороших выходных.
avatar

kasparsvas16

  • 18 июня 2023, 18:10
0
Искал, не нашёл, тут найди на сайте что ни будь, быстрее пенсия прейдёт.
avatar

kasparsvas16

  • 18 июня 2023, 18:10
0
Простите, Я из Голландии, Простите за мой плохой Русский язык.
avatar

kasparsvas16

  • 6 мая 2023, 11:54
0
Простите Андрей, а куда именно вставлять Ваш код?
avatar

kasparsvas16

  • 21 ноября 2022, 18:24
0
Спасибо, получилось офигенно, только могу попросить добавить закрытие по проценту от баланса?
avatar

kasparsvas16

  • 15 мая 2022, 14:01
0
Вы показываете 2 варианта, Как переключиться?
avatar

kasparsvas16

  • 13 мая 2022, 13:40
0
Разобрался, надо ставить void OnTick()
теперь всё работает.
Спасибо за исправления ошибок.
avatar

kasparsvas16

  • 5 мая 2022, 21:20
0
Незнаю почему, но если компилировать в MetaEditor. и в советнике «int start()»
показывает в журнале что это не советник.
Если меняю на int «OnInit()» не открывает сделки вообще.
avatar

kasparsvas16

  • 5 мая 2022, 21:19
0
Привет, у меня тупо сайт глюканул, нажал публиковать а сайт начал обновляться без остановки, я взял и закрыл просто сайт.
Не моя проблема, проблема была с сайтом.
Но спасибо что меня не забанили.
avatar

kasparsvas16

  • 5 мая 2022, 19:59
0
Добрый вечер, это уже второй заказ, который не был выполнен.
Надеюсь Вы не забыли.
avatar

kasparsvas16

  • 3 мая 2022, 23:05
0
Спасибо, будем ждать
Нашел похожий советник, может поможет в разработке.
www.mql5.com/ru/market/product/22629?source=Unknown#
avatar

kasparsvas16

  • 28 апреля 2022, 13:03
0
Можете дать настройки советника? а то сливает сразу.
avatar

kasparsvas16

  • 27 апреля 2022, 20:28
0
И ещё советник когда закрывает ордера по проценту профита, не удаляет сделки Стоп Селл и Стоп Бай
avatar

kasparsvas16

  • 24 марта 2022, 17:37
0
По Моему проблема в этой часте кода


void ModeOOP()
{
bool m;
double delta=0,oop=0,sl=0,tp=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_BUYSTOP)
{
delta=NormalizeDouble(OrderOpenPrice()-Bid,_Digits);
if(delta>Step*_Point)
{
oop=NormalizeDouble(Bid+Delta*_Point,_Digits);
//sl=NormalizeDouble(oop-StopLoss*_Point,_Digits);
//tp=NormalizeDouble(oop+TakeProfit*_Point,_Digits);
m=OrderModify(OrderTicket(),oop,sl,tp,0,Green);
return;
}
}

if(OrderType()==OP_SELLSTOP)
{
delta=NormalizeDouble(Bid-OrderOpenPrice(),_Digits);
if(delta>Step*_Point)
{
oop=NormalizeDouble(Bid-Delta*_Point,_Digits);
//sl=NormalizeDouble(oop+StopLoss*_Point,_Digits);
//tp=NormalizeDouble(oop-TakeProfit*_Point,_Digits);
m=OrderModify(OrderTicket(),oop,sl,tp,0,Tomato);
return;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(CountTrades()<1)
{
PutOrder(0,Ask);
PutOrder(1,Bid);
ModifyOrders();
}

if(FindLastBuyPrice()-Ask>=Step*_Point)
{
if(CountOrders(4)<1)
PutOrder(4,Bid+Delta*_Point);
ModifyOrders();
}

if(Bid-FindLastSellPrice()>=Step*_Point)
{
if(CountOrders(5)<1)
PutOrder(5,Bid-Delta*_Point);
ModifyOrders();
}

ModeOOP();

if(TrailingStop>0)
Trailing();

if(AllProfit()>Profit && Profit>0)
CloseAll();

double pro=NormalizeDouble(AllProfit()*100/AccountBalance(),2);

if(pro>Procent && Procent>0)
CloseAll();

Comment("\n Lot: ",Lot(),
"\n Trades: ",CountTrades(),
"\n Profit: ",AllProfit(),
"\n Procent: ",pro);
}
//+------------------------------------------------------------------+ 
avatar

kasparsvas16

  • 22 марта 2022, 15:03