Ваши вопросы по языку MQL4

griz

Активный участник
Здравствуйте. Подскажите, как сделать так чтобы при вводе числа типа int в объект OBJ_EDIT, число отображалось как число типа double. Т.е. ввожу в поле ввода число "12", а в окне после ввода отображается число "12.0"?

Вариант, получить значение из объекта OBJ_EDIT, а потом установить значение с припиской ".0" не подходит. Т.к., если вводить число, например, "12.1", то отобразится "12.1.0"
 

griz

Активный участник
Здравствуйте. Подскажите, как сделать так чтобы при вводе числа типа int в объект OBJ_EDIT, число отображалось как число типа double. Т.е. ввожу в поле ввода число "12", а в окне после ввода отображается число "12.0"?

Вариант, получить значение из объекта OBJ_EDIT, а потом установить значение с припиской ".0" не подходит. Т.к., если вводить число, например, "12.1", то отобразится "12.1.0"
Все, разобрался как это сделать. Отбой!
 

gravity

Местный знаток
👋
Индикатор перестал отображаться, не пойму в чём дело. Ошибок не выдаёт.
 

Вложения

  • i_Profit1.mq4
    i_Profit1.mq4
    25,6 КБ · Просмотры: 11
  • i_Profit1.jpg
    i_Profit1.jpg
    36,9 КБ · Просмотры: 23

vladradon

Программист
Вариант, получить значение из объекта OBJ_EDIT, а потом установить значение с припиской ".0"
Сделал выдержку из одного моего сова, в котором используется OBJ_EDIT с проверками (в коде есть ремарки что зачем) и по аналогии не сложно написать функционал. Это индикатор чисто для тестов - кидаешь на график и меняешь значение - именно цифры и проверяется.
 

Вложения

MrGreen86

Гуру форума
👋
Индикатор перестал отображаться, не пойму в чём дело. Ошибок не выдаёт.
откройте вкладку "история счета". Нажмите на любую запись или на пустое место правой кнопкой и выберите "вся история". После перезапустите индикатор.

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

rus008

Почетный гражданин
Товарищи помогите с кодом. Суть заключается в слудующем: Нажата кнопка Line Sell выставляется горизонтальная линия на N= колличество пунктов выше от Price. Отжата кнопка Line Sell линия для нее удаляется с графика. Тоже самое и для Line Buy, если нажата,то выставляется горизонтальная линия на N= колличество пунктов ниже Price. Если кнопка Line Buy отжата,удаление линии для нее.
И чтоб все это дело работало в тестере. С возможностью перемещения линий в то время пока кнопка нажата.
Поздравляю всех С праздником Днем Победы!!!!! Мир Вашему Дому!!!!!!Screenshot_173.png
 

Вложения

Ugar

Гуру форума
Товарищи помогите с кодом. Суть заключается в слудующем: Нажата кнопка Line Sell выставляется горизонтальная линия на N= колличество пунктов выше от Price. Отжата кнопка Line Sell линия для нее удаляется с графика. Тоже самое и для Line Buy, если нажата,то выставляется горизонтальная линия на N= колличество пунктов ниже Price. Если кнопка Line Buy отжата,удаление линии для нее.
И чтоб все это дело работало в тестере. С возможностью перемещения линий в то время пока кнопка нажата.
Поздравляю всех С праздником Днем Победы!!!!! Мир Вашему Дому!!!!!!Посмотреть вложение 435000
Функция ButtonCreate создаёт кнопку на графике. Вообще то создавать кнопки нужно один раз. По этому функции создания лучше вызывать в OnInit().
А в OnTick() с каждым тиком надо узнавать состояние кнопок, нажата или не нажата функцией ObjectGetInteger.
Если нажата поставить линию. Функцию установки линии с заданием всех её параметров можно содрать из справочника или написать свою.
И менять состояние кнопок функцией ObjectSetInteger. То есть вернуть кнопку в исходное состояние после установки линии.
 

rus008

Почетный гражданин
Функция ButtonCreate создаёт кнопку на графике. Вообще то создавать кнопки нужно один раз. По этому функции создания лучше вызывать в OnInit().
А в OnTick() с каждым тиком надо узнавать состояние кнопок, нажата или не нажата функцией ObjectGetInteger.
Если нажата поставить линию. Функцию установки линии с заданием всех её параметров можно содрать из справочника или написать свою.
И менять состояние кнопок функцией ObjectSetInteger. То есть вернуть кнопку в исходное состояние после установки линии.
Спасибо за отзыв и совет. Я в тот же день как выложил сделал то что мне нужно было.
 

kudinoff

Почетный гражданин
Как сделать считывание настроек для iCustom из внешней строковой переменной через разделитель (сам iCustom и количество настроек может меняться), есть у кого лаконичный пример?
 

AlexeyVik

Программист mql4 mql5
Как сделать считывание настроек для iCustom из внешней строковой переменной через разделитель (сам iCustom и количество настроек может меняться), есть у кого лаконичный пример?
В MQL5 можно попробовать. Только открывать индикатор придётся не через iCustom()… В MQL4 вряд-ли.
 

kudinoff

Почетный гражданин
В MQL5 можно попробовать. Только открывать индикатор придётся не через iCustom()… В MQL4 вряд-ли.
Примеры реализации видел (не в коде) на 4-ке, но там было ограничение по максимальному количеству настроек.
Можно через StringSplit получить массив настроек. Но дальше?
if(ArraySize(arr) == 1) ind = iCustom(NULL,0, arr[0],0,0);
if(ArraySize(arr) == 2) ind = iCustom(NULL,0, arr[0],arr[1],0,0);
и так далее по количеству настроек. Можно ли как то проще сделать?
 
Последнее редактирование:

AlexeyVik

Программист mql4 mql5
Примеры реализации видел (не в коде) на 4-ке, но там было ограничение по максимальному количеству настроек.
Можно через StringSplit получить массив настроек. Но дальше?
if(ArraySize(arr) == 1) ind = iCustom(NULL,0, arr[0],0,0);
if(ArraySize(arr) == 2) ind = iCustom(NULL,0, arr[0],arr[1],0,0);
и так далее по количеству настроек. Можно ли как то проще сделать?
Можно написать через switch, но это не на много лучше. В общем пустая затея, я так думаю…
 

vladradon

Программист
Примеры реализации видел
Сделал выдержку считывания данных из задаваемого в настройках хэндла своего индюка. Максимальное количество настроек 20 (можно и больше). В ините определяется какого типа параметр и далее в iCustom происходит выбор нужного массива - цифрового или символьного. При компиляции ругается на возможное конвертирование данных, но все работает.
 

Вложения

mobidik

-----

vladradon,​

да, так лучше, спасибо
На счет "так лучше" - не надейся.
Сделал выдержку считывания данных из задаваемого в настройках хэндла своего индюка. Максимальное количество настроек 20 (можно и больше). В ините определяется какого типа параметр и далее в iCustom происходит выбор нужного массива - цифрового или символьного.
Влад, парочка вопросов:
1) если индюк содержит только 5 параметров настроек - какие значения будут при вызове в параметрах от 6-го по 20-й?
2) в айкастоме можно задавать до 64 параметров, отсюда вопрос: почему народ заморачивается и на каждое количество нужных параметров, делает отдельный код на вызов индюка? Может сразу задать все 64 параметра и не парится..?
3) а что будет при тестировании советника, когда в нём происходит вызов индюка с большим количеством заданных параметров, чем есть у индюка?

С другой стороны, идея передать строковые параметры - прекрасно, но в таком виде как есть, скорость работы падает в 10-ки раз, произвести оптимизацию будет ох как долго и муторно...
 

kudinoff

Почетный гражданин
Дефолтные проигнорируют, кастомные выдадут 0
а что будет при тестировании советника, когда в нём происходит вызов индюка с большим количеством заданных параметров, чем есть у индюка?
 

vladradon

Программист
1) если индюк содержит только 5 параметров настроек - какие значения будут при вызове в параметрах от 6-го по 20-й?
1) Параметры по-умолчанию в коде.
2) в айкастоме можно задавать до 64 параметров, отсюда вопрос: почему народ заморачивается и на каждое количество нужных параметров, делает отдельный код на вызов индюка? Может сразу задать все 64 параметра и не парится..?
2) Я привел пример как можно сделать! И что вообще это можно!
3) а что будет при тестировании советника, когда в нём происходит вызов индюка с большим количеством заданных параметров, чем есть у индюка?
3) Не гонял в советнике, но 4 таких сборки в одном индюке в тестере работают нормально - считывают по 2 раза данные 2-х входных индюков. Некоторые индюки сами по себе тормозят куда больше.
 
Верх