Вопросы от "чайника" - страница 100

 
220Volt:

 Добрый день. Есть такое явление как искажение последних разрядов в double, подскажите пожалуйста, какие условия надо создать для того чтобы произошло такое искажение? Возможно ли искажение при операциях = ? Возможно ли искажение при храненнии в double целых чисел? При операциях?

x=M_PI;
y=sqrt(x);
y=y*y;

Как вариант искажения.
 

Подскажите, пожалуйста. Можно ли как-то программно (в функции OnTrade()) выяснить, что Stop Loss, Take Profit или отложенный ордер был установлен, модифицирован либо удалён вручную (средствами терминала)? И краткий пример, если не затруднит.

На данный момент перечисленные операции выводятся в журнал и записываются в файл-(ы), которые находятся в директории D:\Metatrader 5\logs\. То есть программно прочитать я их не могу.

 

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
tol64:

Подскажите, пожалуйста. Можно ли как-то программно (в функции OnTrade()) выяснить, что Stop Loss, Take Profit или отложенный ордер был установлен, модифицирован либо удалён вручную (средствами терминала)? И краткий пример, если не затруднит. 

Раньше функция обрабатывала события при изменении определённых списков, параметров не было. Если всё осталось также, то получается, что события установки, модификации или удаления должны поступать вне зависимости от того, вручную установлены ордеры или нет. Правильно? Если правильно, то можно попробовать при поступлении каждого события Trade выяснять тикет ордера (если событие касается ордера), и если выяснится, что программно такой тикет не выставлялся, отслеживать в дальнейшем его судьбу. Как-то так.
 
Yedelkin:
Раньше функция обрабатывала события при изменении определённых списков, параметров не было. Если всё осталось также, то получается, что события установки, модификации или удаления должны поступать вне зависимости от того, вручную установлены ордеры или нет. Правильно? Если правильно, то можно попробовать при поступлении каждого события Trade выяснять тикет ордера (если событие касается ордера), и если выяснится, что программно такой тикет не выставлялся, отслеживать в дальнейшем его судьбу. Как-то так.
Да, всё верно, но только, если события касаются сделок, насколько я это понимаю. Мне нужно выяснить, можно ли отслеживать программно события модификации ордеров в ручном режиме.
 
tol64:
Да, всё верно, но только, если события касаются сделок, насколько я это понимаю. Мне нужно выяснить, можно ли отслеживать программно события модификации ордеров в ручном режиме.

Нет-нет, срочно читайте документацию :) А ещё лучше статьи. Список сделок - это только часть всех списков. Значит, и события должны сыпатся разные. ..Хотя сам читал очень давно, могу и запамятовать.

Статья про эту функцию "Обработка торговых событий в эксперте при помощи функции OnTrade()" и статья Роша "Торговые события в MetaTrader 5".

 
Yedelkin:

Нет-нет, срочно читайте документацию :) По крайней мере, в этой части там было всё более-менее понятно. Список сделок - это только часть всех списков. Значит, и события должны сыпатся разные.

А ещё лучше: была статья про эту функцию, и статья Роша про торговые события (если не ошибаюсь в названии).

)) В OnTrade() у меня получается определять вот такие события:

DEAL_ENTRY_IN, DEAL_ENTRY_OUT, DEAL_ENTRY_INOUT.

Также получается определить было ли одно из перечисленных событий просто сделкой или это сработал отложенный ордер и какой это был отложенный ордер. А также было ли это новая позиция или это наращивание/сокращение объёма уже существующей позиции. 

---

А вот как определить модификации каких либо ордеров я не знаю. В статьях и в примерах документации этого тоже не встречал. Нужна подсказка. Простая подсказка от разработчиков. Есть такая возможность или нет. И будет ли когда-либо реализована такая возможность или нет, чтобы освободиться от этого вопроса или попытаться решить его какими либо другими хитрыми способами. :)

---

Есть ещё вот такой раздел в документации: Типы торговых операций. Но эти события можно определить, если они были совершены программно.

 
Yedelkin:

...

Статья про эту функцию "Обработка торговых событий в эксперте при помощи функции OnTrade()".

Нашёл в этой статье то, о чём спрашивал. И читал же её однажды, но совсем об этом забыл. :)
 
tol64:
Нашёл в этой статье то, о чём спрашивал. И читал же её однажды, но совсем об этом забыл. :)

Я вообще через месяц все тонкости забываю. Поэтому только и делаю, что перечитываю. То разделы Справочника, то статьи :)

Вот ещё одна фраза "..изменение SL и TP не изменяет ..., при этом даже не генерируется событие OnTrade, просто переписываются поля SL и TP (как и для открытой позиции)"     Может, пригодится. Сам правда, уже не соображу, как именно.

 
tol64:
Да, всё верно, но только, если события касаются сделок, насколько я это понимаю. Мне нужно выяснить, можно ли отслеживать программно события модификации ордеров в ручном режиме.
По крайней мере установа и удаление ордера обрабатывается, только без параметров как то это все муторно. За изменение не скажу, но по идеи должно и оно обрабатываться.
tol64:
Нашёл в этой статье то, о чём спрашивал. И читал же её однажды, но совсем об этом забыл. :)
Сразу о ней подумал. Может описываемые в ней решения не так идеальны и  изящны как этого бы хотелось (особенно если учесть что параметров до сих пор нет), но в принципе есть все основное.
 

Подскажите, как получить цену бид и аск другой валютной пары, не текущей на данный момент, в мт4 была команда маркетинфо, в мт5 её нету.

У меня есть предположение что нужно двигаться в сторону SymbolInfoDouble(Symbol(),SYMBOL_ASK) и тут оперировать значением Symbol(), но я не могу понять как. 

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