Ошибки, баги, вопросы - страница 2793

 
Alexey Viktorov:

Я даже не заметил что там гифка… Сейчас посмотрел, но там так всё быстро, я не успеваю понять. Только заметил, что у вас не отображён столбец «Своп» который как раз в истории считается отдельно. Или на словах с цифрами объясните.

Удивительно, как я сам не заметил отключенную колонку свопов.

Спасибо, вопрос снят.

 
Andrey Khatimlianskii:

Удивительно, как я сам не заметил отключенную колонку свопов.

Спасибо, вопрос снят.

Ура¡¡¡ мы победили.

 
При использовании ChartSetSymbolPeriod функция OnDeinit возвращает 1 Программа удалена с графика, а по логике вещей должна вернуть 3 Символ или период графика был изменен
 

Баг заключается в том что в случае выполнения условия if(...) ничего цикл не должно прерывать

if( (vm + vs * (double)i) * tvp * 250.0 < ml ) { cv = vm + vs * (double)i; Print(i,": L/ML - ",cv," / ",ml); };


Вот видео



А вот полный код скрипта

void OnStart()
  {
//---
   
   double tvp  = SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE_LOSS),
          vm   = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN),
          vs   = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP),
          ml   = AccountInfoDouble(ACCOUNT_EQUITY) * 0.015,
          cv   = -1.0,
          loss = 0.0;
   
   for(int i = 0; i < 20000; i++)
     {
      Print(i);
      //if( (vm + vs * (double)i) * tvp * 250.0 < ml ) { cv = vm + vs * (double)i; Print(i,": L/ML - ",cv," / ",ml); };
      /*loss = cv * tvp * 250.0;
      Print(NormalizeDouble(loss,2));
      Print(NormalizeDouble(ml,2)); Print(" ");
     */};
   
  }
 
Alexandr Sokolov:

Баг заключается в том что в случае выполнения условия if(...) ничего цикл не должно прерывать

Ваш код аналогичен этому

double a = 3;

for(int i = 0; a > 300; i++)
{
 if(a != 3)
  Print("Никогда такого не будет");
}
 

У меня индикатор стал почему-то терять графические объекты и не удаляет их. Использую автоматическое удаление в деструкторе класса. Вызываю:

ObjectDelete(chartID, name);

В результате получаю фальш. Вызываю GetLastError() и получаю ошибку 4101 ("Ошибочный идентификатор графика"). Допустим... Сравниваю chartID удаляемого графического объекта с результатом функции ChartID() и они абсолютно одинаковы. В чём может быть причина не удаления объекта с графика и как это можно обойти?

 
Mihail Matkovskij:

У меня индикатор стал почему-то терять графические объекты и не удаляет их. Использую автоматическое удаление в деструкторе класса. Вызываю:

В результате получаю фальш. Вызываю GetLastError() и получаю ошибку 4101 ("Ошибочный идентификатор графика"). Допустим... Сравниваю chartID удаляемого графического объекта с результатом функции ChartID() и они абсолютно одинаковы. В чём может быть причина не удаления объекта с графика и как это можно обойти?

копятся подобные проблемы https://www.mql5.com/ru/forum/1111/page2785#comment_17002122

Может что-то предпримут все-же создатели )

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2020.06.22
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

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


#include <Arrays\ArrayObj.mqh>

class CPosition:public CObject
{
   public:
      string      meTicket;
      CPosition::CPosition(string inT)
      {this.meTicket = inT;}         
};

class CColl:public CArrayObj
{
public:
   string   meWrongProperty;
CPosition  *operator[](const int index) const { return (CPosition*)At(index);} 
};

class CCollOfColl:public CArrayObj
{
public:
CColl  *operator[](const int index) const { return (CColl*)At(index);} 
};



void OnStart()
{
   CCollOfColl lCOC;
   CColl       *lC;
   
   lC = new CColl();
   lC.Add(new CPosition("00"));
   lC.Add(new CPosition("01"));
   lCOC.Add(lC);
   
   lC = new CColl();
   lC.Add(new CPosition("10"));
   lC.Add(new CPosition("11"));
   
   lCOC.Add(lC);
   
   for(int i=0;i<lCOC.Total();i++)
     {
       for(int j=0;j<lCOC[i].Total();j++)
         {
          printf(lCOC[i][j].meTicket);
          lCOC[i][j].me
         }
     }
}


по-моему, вместо meWrongProperty редактор должен был предложить meTicket )

 

Билд 2530

На третьем вложении структуры, не появляется интеллисенс.

//+------------------------------------------------------------------+
//|                                                   TestStruct.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

//----------------------------------------------------
struct STRUCT_TIME_IN_FORCE
{
   string GTC; 
   string IOC;  
   string FOK; 
}; 
//----------------------------------------------------
struct STRUCT_SYMBOLS  
{
   string               symbol;                
   STRUCT_TIME_IN_FORCE timeInForce;            
};

//----------------------------------------------------
struct STRUCT_EXCH_INFO  
{
   string         timeZone;      
   long           serverTime;     
   STRUCT_SYMBOLS symbols[];  
};


//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   STRUCT_EXCH_INFO Info;
   ArrayResize(Info.symbols, 10);
   
   Info.symbols[0].timeInForce. //??? На третьем вложении не появляется интеллесенс

}
//+------------------------------------------------------------------+
 
Dmytryi Voitukhov:

При проверке в маркете советника возникли ошибки с расчетом лота.

В тестере никаких ошибок нет.

Код - проще некуда. Как в нем может быть ошибка?

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

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