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

 
Rashid Umarov:
А чему равен ORDER_TYPE_BUY? Распечатайте и убедитесь, что равно 0. То есть, нет там никакого ордера.

То-есть после открытия позиции в структуре MqlTradeTransaction order_type просто недоступен? Или не зависимо от чего-то просто 0?

Рашид, если не затруднит, для меня попроще можно ответ? Ну распечатаю, ну будет там 0, а как это понять?


Ну вот... Пока печатал, Владимир дал исчерпывающий ответ. Спасибо понял. Как всегда не дочитал документацию...

 
Karputov Vladimir:

Для разного типа транзакций идёт разное заполнение полей структуры MqlTradeTransaction:

 как видите для TRADE_TRANSACTION_DEAL_ADD поле .order_type не заполняется.

Кстати, это иногда вводит в заблуждение... почему, если значение не заполняется, его нельзя указать как WRONG_VALUE, например?
 
Alexey Viktorov:


Рашид, если не затруднит, для меня попроще можно ответ? Ну распечатаю, ну будет там 0, а как это понять?

В этом случае не нужно смотреть тип ордера - его там нет просто
 
Alexey Kozitsyn:
Кстати, это иногда вводит в заблуждение... почему, если значение не заполняется, его нельзя указать как WRONG_VALUE, например?
Сам наступал на эти грабли. Не могу сказать )
 
Rashid Umarov:
Сам наступал на эти грабли. Не могу сказать )
Просто WRONG_VALUE ведь неявно приводится к типу любого перечисления...? Вот и привели бы))
 
Rashid Umarov:
В этом случае не нужно смотреть тип ордера - его там нет просто

Как я медленно печатаю... Пока правил свой пост ...

Alexey Viktorov:

Добавлено.

Ну вот... Пока печатал, Владимир дал исчерпывающий ответ. Спасибо понял. Как всегда не дочитал документацию...

Спасибо.

 

Как в индикаторе узнать свой хэндл на чарте? Через ChartIndicatorName не подходит, т.к. он возвращает короткое имя. А с таким же именем может уже быть уже запущен этот же индикатор с другими входными параметрами.

Мне это нужно, чтобы индикатор имел возможность удалить себя с чарта и расчетов. 

 
fxsaber:

Как в индикаторе узнать свой хэндл на чарте? Через ChartIndicatorName не подходит, т.к. он возвращает короткое имя. А с таким же именем может уже быть уже запущен этот же индикатор с другими входными параметрами.

Мне это нужно, чтобы индикатор имел возможность удалить себя с чарта и расчетов. 

А если изменять короткое имя при создании?
 

Разве в моем прмере не должна наследоваться / браться метод из класса родителя ???  Как получить метод родителя в производных классах с целью дальнейшего его использования.

То есть класс родитель имеет методы "одлин, два, три" я хочу в потомке использовать только метод "два и три  " и при этом не видеть метод "один" а так же что бы "два и три" были доступны далее

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class test
  {
public:

   int rezult(void)
     {
      static int t=0;
      t++;
      return t;
     }
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class test_end : public test
  {
public:
   virtual int       rezult(void);
  };

test_end go;
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   go.rezult();
// 'rezult' - function must have a body TEst.mq4        42      7
  }
//+------------------------------------------------------------------+
 
Vladimir Pastushak:

Разве в моем прмере не должна наследоваться / браться метод из класса родителя ???  Как получить метод родителя в производных классах с целью дальнейшего его использования.

То есть класс родитель имеет методы "одлин, два, три" я хочу в потомке использовать только метод "два и три  " и при этом не видеть метод "один" а так же что бы "два и три" были доступны далее

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

Если не хотите переопределять метод в производном классе, то не надо его вообще упоминать, а если упомянули, значит должно быть переопределение с телом.

Наконец, чтобы скрыть метод от класса-наследника нужно ввести промежуточных класс, где этот метод переместить в область priivate или сразу сделать приватным в базовом (но зачем он тогда виртуальный?).

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