Отключение советника.

 
Здравствуйте, подскажите пожалуйста как написать в коде Mql4 приказ советнику на закрытие всех сделок и прекращении работы , если убыток достиг какой то определенной суммы ?
 
Что то не получается подставил первое в советник  - 4 предупреждения, 8 ошибок 
 
А пример реализованный в каком нибудь советнике можете подсказать, где посмотреть, где советник прекращает торговать и закрывает все сделки в связи с превышением убытка ?
 
50270694 #:
А пример реализованный в каком нибудь советнике можете подсказать, где посмотреть, где советник прекращает торговать и закрывает все сделки в связи с превышением убытка ?

Вот слепил . можно на любой график кинуть и другие эксперты могут работать . вам нужно только прибыль или убыток или то и то прописать в настройках

например у вас 8756 рублей и вы готовы потерять 876 рублей (8756-876=7880)

sinput double          TargetLoss   = 7880;              // Баланс - Убыток(отнять от баланса)

                                                                                                                                                                                                                                                                                                       

//+------------------------------------------------------------------+
//|                                                     50270694.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//---
#include <stdlib.mqh>
//---
sinput ENUM_TIMEFRAMES TimeFrame    = PERIOD_CURRENT; // Change TimeFrame - Current = dont changed
sinput string          Template     = "ADX";          // Имя шаблона(without '.tpl')
sinput double          TargetProfit = 1000000;        // Баланс + Прибыль(прибавить к балансу)
sinput double          TargetLoss   = 0;              // Баланс - Убыток(отнять от баланса)
//---
uint   SLEEPTIME        = 1;
bool   CloseOpenOrders  = true;
double Price[2];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(ProfitTarget())
     {
      return;
     }
  }
//+------------------------------------------------------------------+
//| Check for long position closing                                  |
//+------------------------------------------------------------------+
bool ProfitTarget(void)
  {
   bool res=false;
   if(AccountInfoDouble(ACCOUNT_EQUITY)<=TargetLoss ||
      AccountInfoDouble(ACCOUNT_EQUITY)>=TargetProfit)
     {
      CloseAllOrders();
      Sleep(SLEEPTIME*1000);
      CloseAllOrders();
      ExpertRemove();
      DeleteChart();
      PlaySound("expert.wav");
      res=true;
     }
//--- result
   return(res);
  }
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
void CloseAllOrders(void)
  {
   int iOrders=OrdersTotal()-1, i;
   if(CloseOpenOrders)
     {
      for(i=iOrders; i>=0; i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && (OrderType()<=OP_SELL) && GetMarketInfo() &&
            !OrderClose(OrderTicket(),OrderLots(),Price[1-OrderType()],0))
            Print(OrderError());
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
           {
            if(OrderDelete(OrderTicket()))
               Print(OrderError());
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Function..: OrderError                                           |
//+------------------------------------------------------------------+
string OrderError(void)
  {
   int iError=GetLastError();
   return(StringConcatenate("Order:",OrderTicket()," GetLastError()=",iError," ",ErrorDescription(iError)));
  }
//+------------------------------------------------------------------+
//| Function..: GetMarketInfo                                        |
//+------------------------------------------------------------------+
bool GetMarketInfo(void)
  {
   RefreshRates();
   Price[0]=MarketInfo(OrderSymbol(),MODE_ASK);
   Price[1]=MarketInfo(OrderSymbol(),MODE_BID);
   double dPoint=MarketInfo(OrderSymbol(),MODE_POINT);
   if(dPoint==0)
      return(false);
   return(Price[0]>0.0 && Price[1]>0.0);
  }
//+------------------------------------------------------------------+
//| start function                                                   |
//+------------------------------------------------------------------+
void DeleteChart(void)
  {
   long currChart,prevChart=ChartFirst();
   int i=0,limit=100;
   bool errTemplate;
   while(i<limit)
     {
      currChart=ChartNext(prevChart);
      if(TimeFrame!=PERIOD_CURRENT)
        {
         ChartSetSymbolPeriod(prevChart,ChartSymbol(prevChart),TimeFrame);
        }
      errTemplate=ChartApplyTemplate(prevChart,Template+".tpl");
      if(!errTemplate)
        {
         Print("Error ",ChartSymbol(prevChart),"-> ",GetLastError());
        }
      if(currChart<0)
         break;
      Print(i,ChartSymbol(currChart)," ID =",currChart);
      prevChart=currChart;
      i++;
     }
  }
//+------------------------------------------------------------------+
 

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

 
.
Файлы:
 
50270694 #:
.

вот задал 200 прибыли. - закрыло 

Zig_50270694 2021-10-04 215631

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Снимок экрана 2021-10-04 221109

Файлы:
 
Здравствуйте, можно вам в личку писать ? давайте сделаем хороший советник, я сейчас его тестирую чувствую по ходу будут появляться вопросы я сам пытался изучать Mql - толку мало
 
50270694 #:
Здравствуйте, можно вам в личку писать ? давайте сделаем хороший советник, я сейчас его тестирую чувствую по ходу будут появляться вопросы я сам пытался изучать Mql - толку мало

давайте лучше здесь писать - я сам учусь и всё просматриваю и копирую функции из кодобазы 

 
Здравствуйте, не знаю у меня этот советник не закрывает позиции при превышении убытка, я много раз проверял ?
 
50270694 #:
Здравствуйте, не знаю у меня этот советник не закрывает позиции при превышении убытка, я много раз проверял ?

попробуйте написать здесь больше своего баланса .

например : у вас сейчас на балансе 100 - напишите 101   он должен закрыть всё, удалится и сменить на всех открытых графиках шаблон.

Снимок экрана 2021-10-10 092942 

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

вот сейчас вписал больше своего баланса и эксперт вот так поступил

Снимок экрана 2021-10-10 095836