Jump to content

Общие вопросы по языку MQL


Recommended Posts

Execu
To Execu:

 

Ф-я double NormalizeDouble(double v, int n); работает везде. В Вашем случае нужно просто посмотреть на котировку инструмента и указывать n = количество символов после запятой.

 

Извините, что с тем же вопросом, Программер, но что делать, если нужно добавить запятую, как в котировании нефти? Допустим, нужно показать разницу между значениями МА в 6.000 пунктов. С n=0 цена отображается без запятой, в виде 6000. Что делать, чтобы отображалось с запятой? Вроде надо бы написать n=3, но в таком виде появляются ненужные подробности: 6000.ХХХ

Link to post
Share on other sites
  • Replies 7.6k
  • Created
  • Last Reply

Top Posters In This Topic

  • AntFX

    577

  • sergey1294

    569

  • Ugar68

    517

  • Programmer

    419

Top Posters In This Topic

Popular Posts

Ну, в данном случае мне стоило бы сразу соблюдать простейшие приёмы защитного программирования, то есть проверять, не равна ли нулю переменная, оказавшаяся под знаком деления. Ведь она "чужая", то ест

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

Основной советник выставляет "сигнальный" отложенный ордер далеко от текущей цены и каждую например, минуту модифицирует у него время экспирации: это может быть текущее время плюс 1 час, или плюс 1 су

Posted Images

Programmer

Разделите на 1000.

Link to post
Share on other sites
Programmer

Честное слово, не понимаю в чём у Вас вопрос!

Link to post
Share on other sites
rmax

Плиз Программер посмотрите вот тут http://forum.alpari-idc.ru/showpost.php?p=1221020&postcount=4162 . Может все-таки сдеает его. Только два добавления:

 

1. Когда появляется противоположный сигнал предыдущая поза автоматически закрывается и открывается новая по сигналу.

2. Трейлинг стоп можно сделать так, чтобы при значении "0" он отключался?

 

Заранее спасибо.


Шуруп забитый молотком держит лучше, чем гвоздь завинченный отверткой.:ora:

Link to post
Share on other sites
BidAsk

Задача:

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

Решение задачи:

int init()

{InitLines(); return(0);}

int deinit()

{return(0);}

int start()

{return(0);}

//----

void InitLines()

{

int lines;

string object_name;

lines=ObjectsTotal(OBJ_HLINE);

if (UninitializeReason()!=3 && lines!=0)

{

for (int i=0; i<ObjectsTotal(); i++)

{

object_name=ObjectName(i);

if (ObjectType(object_name)==OBJ_HLINE) ObjectDelete(object_name);

}

}

return;

}

------------------------------------------------------------------

Проблема:

Ни советник, ни скрипт не удаляют горизонтальные линии с графика полностью

del_obj.mq4

  • Upvote 1

ПАММ-счёт Zen-fx - Оставь надежду всяк сюда вводящий!

Link to post
Share on other sites
Programmer
Задача:

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

Решение задачи:

int init()

{InitLines(); return(0);}

int deinit()

{return(0);}

int start()

{return(0);}

//----

void InitLines()

{

int lines;

string object_name;

lines=ObjectsTotal(OBJ_HLINE);

if (UninitializeReason()!=3 && lines!=0)

{

for (int i=0; i<ObjectsTotal(); i++)

{

object_name=ObjectName(i);

if (ObjectType(object_name)==OBJ_HLINE) ObjectDelete(object_name);

}

}

return;

}

------------------------------------------------------------------

Проблема:

Ни советник, ни скрипт не удаляют горизонтальные линии с графика полностью

 

Стандартная ошибка перебора массива.

Ошибка заключается в том, что когда в i-ой итерации цикла находится гор. линия и удаляется, все объекты с индексами бОльшими, чем i, сдвигаются в массиве объектов влево, т.е. появляется новый объект с индексом i, а Вы i на след. итерации увеличиваете, и этот объект выпадает из рассмотрения.

 

Методы решения:

1. Либо начинать рассмотрение массива с конца.

2. Либо в случае удаления объекта перед след. итерацией делать декремент: i--;

Link to post
Share on other sites
BidAsk

точно, теперь работает

спасибо большое

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

  • Upvote 1

ПАММ-счёт Zen-fx - Оставь надежду всяк сюда вводящий!

Link to post
Share on other sites
Shu
точно, теперь работает

спасибо большое

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

да, так оно и есть! отладка - рулит :wink:

 

хотя, я в этом случае бы воспользовался функцией

 

int ObjectsDeleteAll(int window=EMPTY, int type=EMPTY)

Link to post
Share on other sites
BidAsk
да, так оно и есть! отладка - рулит :wink:

 

хотя, я в этом случае бы воспользовался функцией

 

int ObjectsDeleteAll(int window=EMPTY, int type=EMPTY)

мне не нужно удалять все объекты, мне нужно удалить некоторые из всех

  • Upvote 1

ПАММ-счёт Zen-fx - Оставь надежду всяк сюда вводящий!

Link to post
Share on other sites
Programmer

ObjectsDeleteAll(0, OBJ_HLINE);

Link to post
Share on other sites
BidAsk

о блин, точно, а я тут велосипед придумываю :-))))))

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

ещё раз спасибо всем

  • Upvote 1

ПАММ-счёт Zen-fx - Оставь надежду всяк сюда вводящий!

Link to post
Share on other sites
Execu
Разделите на 1000.

 

Большое спасибо, теперь отображается правильно!

Link to post
Share on other sites
Andrey50

Я написал свой первый советник, прогнал его на тестере и робот торговал, но та же самая программа на демо-счете не работает, т.е. не делает никаких сделок. Подскажите, пожалуйста, возможные причины. В роботе стоит опция "Разрешить советнику торговать".

Link to post
Share on other sites
~~SOM~~

Может, просто событий на открытие сделки еще не было.

Link to post
Share on other sites
Andrey50
Может, просто событий на открытие сделки еще не было.

 

В том то и дело, что сделки по советнику должны открываться по таймеру каждые сутки, а прошла уже неделя.

Link to post
Share on other sites
Programmer

Советники, наверное, не включены.

Link to post
Share on other sites
Andrey50
Советники, наверное, не включены.

 

Что значит "не включены", если они работают на тестере и как их в таком случае включить?

Link to post
Share on other sites
Programmer

В верхнем левом углу рожица улыбается?

Link to post
Share on other sites
Programmer

Как включить - читайте в "Курс MQL4", где-то в уроках про советники. Там с картинками - всё подробно.

Link to post
Share on other sites
Andrey50
В верхнем левом углу рожица улыбается?

 

Спасибо, разобрался.

Link to post
Share on other sites
Ф.Ф.Карабасов

Добрый день! в процессе работы экперт часто выдает "stack overflow" и останавливается. Не могу понять какие причины для возникновения данной ситуации ? Возникает только при только при торговле - при тестировании все нормально. Спасибо.

Link to post
Share on other sites
Red-Nicolas

подскажите что указать в функции return(), что бы часть int start() {} выполнялась только в первую минуту каждого часа?

Link to post
Share on other sites
Programmer

To Red-Nicolas:

 

подскажите что указать в функции return(), что бы часть int start() {} выполнялась только в первую минуту каждого часа?

 

Поставленная целб достигается вовсе не так. Надо завести переменную-флаг и проверять её значение.

Link to post
Share on other sites
Ф.Ф.Карабасов

Спасибо. Буду пробовать

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...