Новая версия платформы MetaTrader 5 build 5800: Улучшенный торговый диалог и удобная работа с CSV в MetaEditor - страница 23

 
Alexey Viktorov #:

Наверное только через жо ой, через поиск будет быстрей…

 
fxsaber #:
Рекомендуете боевые советники компилировать на b5430? Судя по Вашим сообщениям, сейчас ситуация - авось.
Всегда пользуюсь проверенным билдом, потому что в новых обычно есть много неудобств. Но в разных билдах могут что-то починить, а что-то испортить - тут каждый пусть сам решает. Конкретная ошибка с компилятором тянется из старых билдов в новые (проверял и на 5430 и на 5810).
 
Botan626 # :

Помимо того, что для этой надписи нужен свой отдельный цвет, чтобы он не совпадал с цветом  Foreground, есть ещё и баг.

если графиков 2 и более и 2 раза нажать Alt+D, то эти кнопки становятся белыми:


Исправлено начиная со сборки 5813.
 
Stanislav Korotky #:

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

То, что выведено предупреждение - это хорошо, в переменной при выполнении будет не то, что ожидалось (из-за невнимательности) - и это должен быть единственный эффект, а не куча побочки.

PS.

Вот код до правки:

Программа падает в подсвеченной строке с невероятной ошибкой так как заголовок цикла не отрабатывает как надо. Если добавить требуемый каст (ulong) в последнюю строку, проблема с циклом пропадает. Это нормально?

В зависимости от того, как отредактируешь несколько строк после этого фрагмента - начинаются чудеса в другом месте - с тем самым if(a * b < 0), который перестает правильно работать - программа проваливается внутрь него при отрицательных a и b.

Сделайте воспроизводимый код, пожалуйста.

Как будет код, сразу же разберемся.

 
Stanislav Korotky # :

Лично для меня такое оформление всё ещё достаточно "слепое".

Вот мой черновик (галка у строк не стоит, т.к. не может стоять, включенная галка более жирная для лучшей видимости на мониторах с высоким DPI):


Впрочем, я не использую темную тему, в светлой будет по другому.

Исправлено таким образом, начиная со сборки 5813.


 

Справочник MQL5, не находит оператор "default" через 'F1'.

(build 5813)

 
fxsaber #:
Ну так и есть. Открывается для слова под курсором, но там где не надо, типа учитесь работать с матрицами… Надеюсь, что Ренат это увидел и в ближайшем билде будет исправлено.
 

В бете 5814:

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



Отсутствующие ключевые слова добавляем в поиск.

 

Для перечислений

enum nums3 {NoSL=0,___10=10,___20=20,___50=50,___100=100,___200=200,___500=500,___1000_=1000,___2000=2000,___3000=3000,___5000=5000,___7000=7000,___10000=10000,___20000=20000,___50000=50000,___100000=100000};
input nums3 inSLBuy = 1000;      // SL Buy, 0 to disable SL

функция ParameterGetRange

bool  ParameterGetRange(
   const string  name,          // имя параметра (input-переменной)
   bool&         enable,        // разрешена оптимизация параметра
   long&         value,         // значение параметра
   long&         start,         // начальное значение
   long&         step,          // шаг изменения
   long&         stop           // конечное значение
   );

возвращает start и stop как порядковый номер из перечисления, например от 3 до 5. Но мне нужны значения 50 и 200. Как их можно получить?

Значения нужны для того, чтобы через .set файл или через Ctrl V устанавливать значения для тестера. Тестер принимает значения, а не номера.
Ctrl C из тестера показывает именно значения:

inSLBuy=200||50||1||200||Y

Последующий  Ctrl V устанавливает правильно.

Т.е. имеется несоответствие. Программно можно получить только порядковые номера, а использовать для .set или Ctrl V только значения. 


Хорошо бы привести это к единому формату.

1) Или в ParameterGetRange выводить значения (или сделать новый вариант вызова, который давал бы значения)
2) Или для тестера сделать прием значений для перечислений, как порядковые номера.

1й вариант удобнее для понимания.

 
Тестовый эксперт
enum nums3 {NoSL=0,___10=10,___20=20,___50=50,___100=100,___200=200,___500=500,___1000_=1000,___2000=2000,___3000=3000,___5000=5000,___7000=7000,___10000=10000,___20000=20000,___50000=50000,___100000=100000};
input nums3 inSLBuy = 1000;      // SL Buy, 0 to disable SL

void OnTesterInit(){
   long pvalue, pstart, pstep, pstop; bool enabled;
    if(ParameterGetRange("inSLBuy", enabled, pvalue, pstart, pstep, pstop)){
       Print( (string)pvalue+"||"+(string)pstart+"||"+(string)pstep+"||"+(string)pstop+"||"+(enabled?"Y":"N"));
   }
}
void OnTesterDeinit(){}
double OnTester(){return 0;}

В печати видим порядковые номера от  3 до 5

А Ctrl C показывает 

inSLBuy=1000||50||0||200||Y