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

 
Maxim Kuznetsov #:

Отвлечённо, а что ЭТО ?

Для этого.


 
fxsaber #:

Для этого.


а вот это вот 

C( const C* const Value ) : B(Value)  { this = Value; 

чтобы вызвать водопад счастья ? там же тьма конструкторов и операторов поперевызываются, this протрётся до дыр :-) 

 
Maxim Kuznetsov #:

а вот это вот 

чтобы вызвать водопад счастья ? там же тьма конструкторов и операторов поперевызываются, this протрётся до дыр :-) 

Это концепция, отладку не производил. Допускаю наличие проблем в текущем представлении. Но, как понимание описанного способа, наглядно.

 

Иногда бывает так, когда мы оптимизируем в клауде в режиме реальных тиков  и запускаем одиночный тест, то результаты оптимизации и одиночного теста не совпадают.

Предполагаю, что это из-за того, что во время оптимизации в клауде при недостатке реальных тиков используются моделируемые тики(Every tick).

Возникает такой вопрос: как можно средствами MQL5 во время тестирования получить параметры тестера, например тип моделирования:  Every tick или Every tick based on real ticks ?

 
Здравствуйте.Подскажите на что скрипт выдает предупреждения. return value of 'OrderClose' should be checked


 // Скрипт
#property copyright 
#property show_inputs
extern int Stop=5;
void start()
{
   int slippage=2;
   int ask, bid, open;
   double point;
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
      if (OrderType()==OP_BUY)
      {
         point=MarketInfo(OrderSymbol(),MODE_POINT);
         if (point==0) break;
         bid=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point);
         open=MathRound(OrderOpenPrice()/point);
         if (open-bid<Stop) continue;
         OrderClose(OrderTicket(),OrderLots(),bid*point,slippage);
      }
      if (OrderType()==OP_SELL)
      {
         point=MarketInfo(OrderSymbol(),MODE_POINT);
         if (point==0) break;
         ask=MathRound(MarketInfo(OrderSymbol(),MODE_ASK)/point);
         open=MathRound(OrderOpenPrice()/point);
         if (ask-open<Stop) continue;
         OrderClose (OrderTicket(),OrderLots(),ask*point,slippage);
      }
   }
} 
 
Vladimir Simakov #:
Тогда уж, каждую структуру в своем классе определяй, так кошерней будет)

Какой смысл описывать структуру внутри класса? Все равно ведь можно будет создать объект этой структуры в любом месте программы (после описания класса).

Типа что бы после <Alt + G> сразу пришло дикое понимание, что структура относится к этому классу и за его пределами использование не предполагалось?

Я тоже раньше хотел описывать структуры внутри описания класса. Но отказался от этого по тому, что она все равно видна за его пределами.

P.S. Это вопрос, а не утверждение, я хочу понять. Думаю, я чего-то не понимаю

 
Vladislav Boyko #:

Какой смысл описывать структуру внутри класса? Все равно ведь можно будет создать объект этой структуры в любом месте программы (после описания класса).

Типа что бы после <Alt + G> сразу пришло дикое понимание, что структура относится к этому классу и за его пределами использование не предполагалось?

Я тоже раньше хотел описывать структуры внутри описания класса. Но отказался от этого по тому, что она все равно видна за его пределами.

P.S. Это вопрос, а не утверждение, я хочу понять. Думаю, я чего-то не понимаю

Что бы не тащить имена внутренних типов в пространство имен. В больших проектах банально удобнее TClassA::TSet и TClassB::TSet, чем TSetClassA и TSetClassB.

Что бы их не было видно за пределами класса, объявляй их private

 
Vladimir Simakov #:

Что бы не тащить имена внутренних типов в пространство имен. В больших проектах банально удобнее TClassA::TSet и TClassB::TSet, чем TSetClassA и TSetClassB.

Ааа, я понял: это имеет смысл при использовании 

namespace

Я просто не использовал еще пространства имен (их объявление). Спасибо большое!

Vladimir Simakov #:

Что бы их не было видно за пределами класса, объявляй их private

Для этого тоже пространство имен нужно наверное. По тому, что вот так вот можно:

class CTest
  {
private:
   struct STRUCT_TEST
     {
      int a;
      int b;
     }member;
public:
  };

void OnStart()
  {
   STRUCT_TEST outOfClass;
  }
 
Vladislav Boyko #:

Ааа, я понял: это имеет смысл при использовании 

Я просто не использовал еще пространства имен (их объявление). Спасибо большое!

Для этого тоже пространство имен нужно наверное. По тому, что вот так вот можно:

Есть еще такое понятие как глобальное пространство имен)

 
Vladimir Simakov #:

Есть еще такое понятие как глобальное пространство имен)

Ну глобальное то все невольно используют)

Я, к слову, на текущем этапе (освоения ООП) использую оператор расширения контекста что бы явно обозначить вызов функции, которая объявлена в глобальной области и не является методом класса:

class CTest
  {
private:
   
public:
   void someMethod(datetime dt)
     {
      //...
      MqlDateTime inStruct;
      if(!::timeToStruct(dt, inStruct))
         return;
      //...
     }
  };

bool timeToStruct(datetime time, MqlDateTime &var)
  {
   ResetLastError();
   if(TimeToStruct(time, var))
      return(true);
   PrintFormat("TimeToStruct error %i, time %s", GetLastError(), TimeToString(time));
   return(false);
  }

Ну а имена функций MQL для нейминга своих методов (как здесь) не использую в принципе: как минимум, подсвечивание сбивает с толку

Причина обращения: