Новая версия платформы MetaTrader 5 build 2265: Функции DirectX для 3D-визуализации в MQL5 и настройка инструментов в тестере стратегий - страница 7

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Stanislav Korotky
22555
Stanislav Korotky  
Alain Verleyen:

Запрос на улучшение MetaEditor.

1. Сделайте доступным файл mqh для вставки с помощью сочетания клавиш и / или пользовательской кнопки на панели инструментов.

2. При отображении диалогового окна «Открыть» папка по умолчанию должна автоматически находиться в MQL5 \ Включить


Это было бы действительно практично. 1 прикосновение или 1 щелчок, а затем просто выберите файл.

Еще лучше сделать в виде intellisense: прямо при наборе include показывать выпадающий список с файлами, имена которых начинаются на первые введенные буквы. Через диалог Открыть - в любом случае неудобно.

Alain Verleyen
38376
Alain Verleyen  
Stanislav Korotky :

Еще лучше сделать в виде intellisense: прямо при наборе include показывать выпадающий список с файлами, имена которых начинаются на первые введенные буквы. Через диалог Открыть - в любом случае неудобно.

Я согласен и тоже думал об этом решении, но боялся спросить его.
Alexander Fedosov
14176
Alexander Fedosov  
fxsaber:

Постоянно сталкиваюсь с одной и той же проблемой. Скомпилировал файл, а потом ищешь его в Терминале, чтобы запустить. Очень долго.

Возможно ли сделать опцию перехода из ME на соответствующий советник в панели Навигатор Терминала?


В Обзоре рынка очень легко найти символ из тысяч, т.к. есть строка поиска/добавления. Такого же функционала не хватает в Навигаторе.


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

Так можно в Навигаторе добавить в избранное файл и на отдельной вкладке там же его наблюдать. 
fxsaber
15402
fxsaber  
Alexander Fedosov:
Так можно в Навигаторе добавить в избранное файл и на отдельной вкладке там же его наблюдать. 

Сценарий, когда это не можно.

Решил создать новую версию советника. Save As, а дальше как?

Сергей Таболин
2412
Сергей Таболин  

Вопрос-предложение:

Касается групп входных параметров. То, что их добавили - просто замечательно.

А можно добавить специальную группу 

//-----------------------------
input    group  "Группа 1"
/-----------------------------
input    group  "Группа 2"
//-----------------------------
sinput   group  "TESTING GROUP"         // специальная группа

Чтобы и она, и последующие входные параметры при запуске в окне символа не отображались?

 

fxsaber
15402
fxsaber  
Насколько смог, локализовал жуткий баг.
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006
#include <fxsaber\BestInterval\Deal_Base.mqh> // https://www.mql5.com/ru/code/22710

#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

int OnInit()
{
  OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0);

  DEAL_BASE Deal;
  
  Print(OrderSelect(0, SELECT_BY_POS) && Deal.Set()); // Release - true, Debug - false
  
  return(INIT_FAILED);
}

Если запускать Release-вариант, то будет распечатан true, Debug - false.


Оказалось, что в Debug-режиме это выражение (файл Deal_Base.mqh)

  double FullProfit = 0;                                                                  
  const bool Res = ((OrderType() <= OP_SELL) &&                                           
                    (bool)(FullProfit = OrderProfit() + OrderCommission() + OrderSwap()));

возвращает false при ненулевом FullProfit (смотрел в дебагере).


Более лаконичный пример воспроизведения бага не получился. Очень прошу подтвердить наличие бага и сделать Debug-ex5 корректными.


ЗЫ Проверил b1970 - то же самое. Баг древний.

fxsaber
15402
fxsaber  
Недоработка ArrayPrint
struct A { int i; };

struct B : public A { int j; };

void OnStart()
{
  A a[1];  
  ArrayPrint(1); // Печатает.

  B b[1];
  ArrayPrint(b); // Не печатает.
}
Maksim Emeliashin
508
Maksim Emeliashin  
 double FullProfit = 0;                                                                  
  const bool Res = ((OrderType() <= OP_SELL) &&                                           
                    (bool)(FullProfit = OrderProfit() + OrderCommission() + OrderSwap()));

А вот операция присваивания FullProfit = ... там точно операция присваивания, или там должно быть сравнение?

Просто не могу понять логического смысла проверки: прошло присваивание удачно или нет?

Artyom Trishkin
Модератор
45076
Artyom Trishkin  
Maksim Emeliashin:

А вот операция присваивания FullProfit = ... там точно операция присваивания, или там должно быть сравнение?

Просто не могу понять логического смысла проверки: прошло присваивание удачно или нет?

FullProfit будет иметь значение false только в случае, если значение присваиваемого ему выражения будет равно нулю. В остальных случаях FullProfit будет иметь значение true.

Таким образом, Res будет иметь значение true в случае, если тип ордера имеет значение OP_BUY или OP_SELL и (прибыль+комиссия+своп) не равны нулю.

Зачем это нужно - другой вопрос...

Maksim Emeliashin
508
Maksim Emeliashin  
Artyom Trishkin:

FullProfit будет иметь значение false только в случае, если значение присваиваемого ему выражения будет равно нулю. В остальных случаях FullProfit будет иметь значение true.

Таким образом, Res будет иметь значение true в случае, если тип ордера имеет значение OP_BUY или OP_SELL и (прибыль+комиссия+своп) не равны нулю.

Зачем это нужно - другой вопрос...

Код мне показался очень странным, но у всех свой авторский стиль.:)

Я так понимаю это такая хитрая инициализация константы на основе какого-то состояния ордеров в какой-то момент времени.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий