что значит эта ошибка ?

 

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


Отчет тестирования версии 1.0

Состояние тестирования: Тестирование завершилось с ошибками

  • Количество ошибок21
  • Запущен2024.07.09 17:35:26
  • Завершено2024.07.09 17:35:49
  • ТипЭксперт

test on EURUSD,H1 (netting) 2021.08.23 20:00:00 current account state: Balance: 238.10, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.63, FreeMargin: -11.93 2021.08.23 20:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.78, FreeMargin: -12.08 2021.08.23 20:00:00 not enough money [instant buy 0.4 EURUSD at 1.17393 sl: 1.16893 tp: 1.17893] 2021.08.23 20:00:00 failed instant buy 0.4 EURUSD at 1.17393 sl: 1.16893 tp: 1.17893 [No money] 2021.08.23 20:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 0.00, FreeMargin: 222.70 2021.08.23 20:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.79, FreeMargin: -12.09 2021.08.23 20:00:00 not enough money [instant buy 0.2 EURUSD at 1.17393 sl: 1.16893 tp: 1.17893] 2021.08.23 20:00:00 failed instant buy 0.2 EURUSD at 1.17393 sl: 1.16893 tp: 1.17893 [No money] 2021.08.23 21:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 0.00, FreeMargin: 222.70 2021.08.23 21:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.87, FreeMargin: -12.17 2021.08.23 21:00:00 not enough money [instant buy 0.2 EURUSD at 1.17435 sl: 1.16935 tp: 1.17935] 2021.08.23 21:00:00 failed instant buy 0.2 EURUSD at 1.17435 sl: 1.16935 tp: 1.17935 [No money] 2021.08.23 22:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 0.00, FreeMargin: 222.70 2021.08.23 22:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.97, FreeMargin: -12.27 2021.08.23 22:00:00 not enough money [instant buy 0.2 EURUSD at 1.17483 sl: 1.16983 tp: 1.17983] 2021.08.23 22:00:00 failed instant buy 0.2 EURUSD at 1.17483 sl: 1.16983 tp: 1.17983 [No money] 2021.08.23 23:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 0.00, FreeMargin: 222.70 2021.08.23 23:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.93, FreeMargin: -12.23 2021.08.23 23:00:00 not enough money [instant sell 0.2 EURUSD at 1.17467 sl: 1.17967 tp: 1.16967] 2021.08.23 23:00:00 failed instant sell 0.2 EURUSD at 1.17467 sl: 1.17967 tp: 1.16967 [No money] 2021.08.24 00:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulat

 
Maksim Golovin:
not enough money

Какие проверки должен пройти торговый робот перед публикацией в Маркете - статья:

Перед каждой отправкой торгового приказа необходимо проверять достаточность средств на вашем счете. Нехватка средств для обеспечения будущей открытой позиции или ордера считается грубой ошибкой.

... и так далее, начиная с этого абзаца https://www.mql5.com/ru/articles/2555#not_enough_money (там есть коды, которые нужны в советнике - для МТ4 и МТ5).

Какие проверки должен пройти торговый робот перед публикацией в Маркете
Какие проверки должен пройти торговый робот перед публикацией в Маркете
  • www.mql5.com
Все продукты Маркета перед публикацией проходят обязательную предварительную проверку для обеспечения единого стандарта качества. В этой статье мы расскажем о наиболее частых ошибках, которые допускают разработчики в своих технических индикаторах и торговых роботах. А также покажем как самостоятельно проверить свой продукт перед отправкой в Маркет.
 
Maksim Golovin:

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

Денег не хватает.

У Вас в сообщение вставлена ссылка на статью. Чтобы перейти по ссылке, нужно кликнуть по ней левой кнопкой мышки:



откроется статья сразу в месте описания действий при получении этой ошибки.

 
Sergey Golubev #:

Какие проверки должен пройти торговый робот перед публикацией в Маркете - статья:

Перед каждой отправкой торгового приказа необходимо проверять достаточность средств на вашем счете. Нехватка средств для обеспечения будущей открытой позиции или ордера считается грубой ошибкой.

... и так далее, начиная с этого абзаца https://www.mql5.com/ru/articles/2555#not_enough_money (там есть коды, которые нужны в советнике - для МТ4 и МТ5).

подскажите пожалуйста какую строку добавить в код и куда именно её вставить ?

MQL5


bool CheckMoneyForTrade(string symb,double lots,ENUM_ORDER_TYPE type)

  {

//--- получим цену открытия

   MqlTick mqltick;

   SymbolInfoTick(symb,mqltick);

   double price=mqltick.ask;

   if(type==ORDER_TYPE_SELL)

      price=mqltick.bid;

//--- значения необходимой и свободной маржи

   double margin,free_margin=AccountInfoDouble(ACCOUNT_MARGIN_FREE);

   //--- вызовем функцию проверки

   if(!OrderCalcMargin(type,symb,lots,price,margin))

     {

      //--- что-то пошло не так, сообщим и вернем false

      Print("Error in ",__FUNCTION__," code=",GetLastError());

      return(false);

     }

   //--- если не хватает средств на проведение операции

   if(margin>free_margin)

     {

      //--- сообщим об ошибке и вернем false

      Print("Not enough money for ",EnumToString(type)," ",lots," ",symb," Error code=",GetLastError());

 
Maksim Golovin:

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


Отчет тестирования версии 1.0

Состояние тестирования: Тестирование завершилось с ошибками

  • Количество ошибок21
  • Запущен2024.07.09 17:35:26
  • Завершено2024.07.09 17:35:49
  • ТипЭксперт

test on EURUSD,H1 (netting) 2021.08.23 20:00:00 current account state: Balance: 238.10, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.63, FreeMargin: -11.93 2021.08.23 20:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.78, FreeMargin: -12.08 2021.08.23 20:00:00 not enough money [instant buy 0.4 EURUSD at 1.17393 sl: 1.16893 tp: 1.17893] 2021.08.23 20:00:00 failed instant buy 0.4 EURUSD at 1.17393 sl: 1.16893 tp: 1.17893 [No money] 2021.08.23 20:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 0.00, FreeMargin: 222.70 2021.08.23 20:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.79, FreeMargin: -12.09 2021.08.23 20:00:00 not enough money [instant buy 0.2 EURUSD at 1.17393 sl: 1.16893 tp: 1.17893] 2021.08.23 20:00:00 failed instant buy 0.2 EURUSD at 1.17393 sl: 1.16893 tp: 1.17893 [No money] 2021.08.23 21:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 0.00, FreeMargin: 222.70 2021.08.23 21:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.87, FreeMargin: -12.17 2021.08.23 21:00:00 not enough money [instant buy 0.2 EURUSD at 1.17435 sl: 1.16935 tp: 1.17935] 2021.08.23 21:00:00 failed instant buy 0.2 EURUSD at 1.17435 sl: 1.16935 tp: 1.17935 [No money] 2021.08.23 22:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 0.00, FreeMargin: 222.70 2021.08.23 22:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.97, FreeMargin: -12.27 2021.08.23 22:00:00 not enough money [instant buy 0.2 EURUSD at 1.17483 sl: 1.16983 tp: 1.17983] 2021.08.23 22:00:00 failed instant buy 0.2 EURUSD at 1.17483 sl: 1.16983 tp: 1.17983 [No money] 2021.08.23 23:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 0.00, FreeMargin: 222.70 2021.08.23 23:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.93, FreeMargin: -12.23 2021.08.23 23:00:00 not enough money [instant sell 0.2 EURUSD at 1.17467 sl: 1.17967 tp: 1.16967] 2021.08.23 23:00:00 failed instant sell 0.2 EURUSD at 1.17467 sl: 1.17967 tp: 1.16967 [No money] 2021.08.24 00:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulat

Не рановато ли такую лажу выставлять на продажу ?!

 
Maksim Golovin #:
подскажите пожалуйста какую строку добавить в код и куда именно её вставить ?
Это же ваш советник ... то есть - вы должны знать или разобраться сами.
 
C такими ошибками это не советник, это просто мусор. Не думаю что он и бесплатно кому-то нужен, а уж покупать ЭТО...
 
Покажите функцию открытия.
 
//+---------------------------------------------------------------------------------------------------------------------------+
//+--- int OpenPosition(string symb, int op, double ll, int Slippage, int sl, int tp, string comment, int mn,color Color)  ---+
//+---------------------------------------------------------------------------------------------------------------------------+
bool OpenPos(const int      v_tip,
             const double   v_lot,
             const double   v_pr=NULL,
             const int      v_stop=NULL,
             const int      v_take=NULL,
             const string   v_comm=NULL
            )
  {
   if(!Conect())
      return(false);
   trd.SetExpertMagicNumber(Magic);
   trd.SetDeviationInPoints(Input7);
   double   op=NULL,sl=NULL,tp=NULL;
   switch(v_tip)
     {
      case 0:
         for(int i=0; i<1; i++)
           {
            op=NormalizeDouble(sy.Ask(),(int)SymbolInfoInteger(sy.Name(),SYMBOL_DIGITS));

            if(!FreeMoney(sy.Name(),ORDER_TYPE_BUY,op,v_lot))
               return(false);
            sl=(v_stop>NULL) ? (op-NormE(sy.Name(),v_stop)*SymbolInfoDouble(sy.Name(),SYMBOL_POINT)) : NULL;
            tp=(v_take>NULL) ? (op+NormE(sy.Name(),v_take)*SymbolInfoDouble(sy.Name(),SYMBOL_POINT)) : NULL;
            if(trd.Buy(NormL(sy.Name(),v_lot),sy.Name(),op,sl,tp,(v_comm==NULL) ?"" :v_comm))
              {
               return(true);
              }
            Sleep(100);
           }
         break;
      case 1:
         for(int i=0; i<1; i++)
           {
            op=NormalizeDouble(sy.Bid(),(int)SymbolInfoInteger(sy.Name(),SYMBOL_DIGITS));
            if(!FreeMoney(sy.Name(),ORDER_TYPE_SELL,op,v_lot))
               return(false);
            sl=(v_stop>NULL) ? (op+NormE(sy.Name(),v_stop)*SymbolInfoDouble(sy.Name(),SYMBOL_POINT)) : NULL;
            tp=(v_take>NULL) ? (op-NormE(sy.Name(),v_take)*SymbolInfoDouble(sy.Name(),SYMBOL_POINT)) : NULL;
            if(trd.Sell(NormL(sy.Name(),v_lot),sy.Name(),op,sl,tp,(v_comm==NULL) ?"" :v_comm))
              {
               return(true);
              }
            Sleep(100);
           }
         break;
     }
   return(false);
  }
bool FreeMoney(const string            v_sym,
               const ENUM_ORDER_TYPE   v_tip,
               const double            v_opr,
               const double            v_lot
              )
  {
   static string  txt=NULL;
   if(acc.MaxLotCheck(v_sym,v_tip,v_opr)>NormL(v_sym,v_lot))
     {
      if(txt!=NULL)
         txt=NULL;
      return(true);
     }
   string text="There is not enough money to open a position";
   if(txt!=text)
     {
      Print(text);
      txt=text;
     }
   return(false);
  }