Jump to content

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


Recommended Posts

Programmer

To Samyel: Всё хитрим :biggrin:?

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

To Yudjin78:

часть 4 +

часть 5 +

часть 6 ?

 

Индикатор на месте?

 

Совет: Повтыкайте в код строчки Alert("1"); Alert("2"); ... по ходу его предполагаемого исполнения. Самый верный способ найти ошибку.

Link to post
Share on other sites
Samyel
To Samyel: Всё хитрим :biggrin:?

Хотя бы ссылку или инфу как научиться это делать.

Не дайте умереть в нищете. :search:

Link to post
Share on other sites
Yudjin78
To Yudjin78:

 

часть 4 +

часть 5 +

часть 6 ?

 

Индикатор на месте?

 

Совет: Повтыкайте в код строчки Alert("1"); Alert("2"); ... по ходу его предполагаемого исполнения. Самый верный способ найти ошибку.

Индикатор на месте. С алертами попробую.

Link to post
Share on other sites
Programmer
Хотя бы ссылку или инфу как научиться это делать.

Не дайте умереть в нищете. :search:

 

http://forum.mql4.com/ru/11705

Link to post
Share on other sites
Execu

Уважаемый Программер!

Я изучаю книгу Ковалёва, помаленьку продвигаюсь.

В части "Простые программы" в главе "Использование технических индикаторов есть такой пример - "historybars.mq4". У меня почему-то получается не так, как в скриншоте автора (рис. 106): напр. "...выросла на 6 pt". У меня Алерт() выводит "48.1429". Подозреваю строчку

Delta = (MA_c - MA_p)/Point;

У автора, правда, нет знака деления, но думаю, это опечатка. Пробовал удалять "/Point", но выводится тоже не как в рисунке, а вот так: "0.0048". Что делать в этой ситуации?

Link to post
Share on other sites
Programmer

/Point - правильно.

Поставьте Delta = NormalizeDouble( (MA_c - MA_p)/Point, 1 );

Тогда будет выводить с точностью до первого знака после запятой.

Link to post
Share on other sites
Execu

Спасибо, действительно, работает! :)

На евро показывает изменение МА как должно, но попробовал на нефти Light Sweet. МА движется на 1.056 пунктов с 67.068 до 68.124. Пробовал ставить цифру 3 в последнем параметре NormalizeDouble(), но конечный вид неудобоваримый - "1055.952". А с 0 в последнем параметре - "1056". Хотелось бы, чтобы показывало так, как МА и изменилась: "1.056", укажите, пожалуйста, как это сделать?

Link to post
Share on other sites
Изя Кацман

Уважаемые знатоки!

 

Подскажите пожалуйста, я так понимаю, при вызове функции MarketInfo("EURUSD", MODE_STOPLEVEL) происходит обращение к серверу?

 

Спасибо.

Link to post
Share on other sites
Изя Кацман
Нет. Терминал УЖЕ знает эту информацию. http://forum.mql4.com/ru/16687

 

Благодарю за ответ и ссылку. Все понятно.

Link to post
Share on other sites
Programmer

На заметку:

 

Тип рисования DRAW_HISTOGRAM, примененный к индикатору главного окна, имеет свои особенности. Гистограмма рисуется между соответствующими значениями двух индексных массивов: чётного (в нашем случае - SpanA_Buffer) и нечетного (SpanB_Buffer). При этом используется цвет того индексного массива, значение которого больше.

Link to post
Share on other sites
Клубничка

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

Речь идёт о...:

 

CommentArray[1] = "System is working. Active lot: " + DoubleToStr(LotsArray[T-1],2);

 

Как сделать эту надпись больше, другим цветом, ну и в добавок переместить =)

 

Надеюсь меня все поняли? спасибо :)

Link to post
Share on other sites
RATMIR
Подскажите какой командой менять размер и цвет шрифта. К примеру с удовольствием сделала бы шрифт больше у советника чебурашки, т.к если сидеть с ноута, так вообще ничего не видно....

Речь идёт о...:

 

CommentArray[1] = "System is working. Active lot: " + DoubleToStr(LotsArray[T-1],2);

 

Как сделать эту надпись больше, другим цветом, ну и в добавок переместить =)

 

Надеюсь меня все поняли? спасибо :)

 

 

 

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

Link to post
Share on other sites
Execu

Неужели невозможно добиться правильного отображения пунктов нефти? Несколько дней бился над этой проблемой, ничего не выходит :( Функция NormalizeDouble(), наколько я понимаю, не работает на нефти. При изменинии последнего параметра на 0 выводит 4-х значную цифрь, а с последним параметром "4" выводит с 3-мя цифрами после 4-х значного отображения пунктов нефти. Я начинающий в языке mql4, помогите, пожалуйста!

Link to post
Share on other sites
Клубничка

Какую функцию использовать для определения количества откртых ордеров в терминале?

К примеру хочу поставить Carcharodon на 10 пар, но с учёбом что если уже открыты 2 ордера 3й не открывал.

Link to post
Share on other sites
Programmer

To Клубничка:

OrdersTotal();

-считает все выставленные: и открытые, и отложенные.

-если нужны только открытые, то надо перебрать все выставленные и посчитать открытые.

Link to post
Share on other sites
Programmer

To Execu:

 

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

Link to post
Share on other sites
-=@rty_ytr@=-

Programmer. не могли ли вы помоч мне еще раз? попробую изложить свою мысль.

Советник открывает позу(назавем ее номер 1) при определенных условиях индикаторов и закрывает ее обычным close, нужно ее закрыть противоположной позицией (назовем ее номер 2) при этом 2-ю позицию зыкрыть просто определенным условием.

открыть 2-ю позицию, как я понимаю можно просто closeby, а как ее тогда закрыть определнным условием именно через данные индикаторов?

т.е. мне нужно сделать так пока не открылась 1-я не открывается и 2-ая. И 1-я позиция может быть как sell так и buy.

поможете или скажите где можно почитать может сам разберусь.

надеюсь мысль изъяснил понятно.

Спасибо.


Человек в жизни имеет все, что хочет, а если не имеет, значит, недостаточно хочет. (Кирсан Илюмжинов)

All ingenious is simple

Link to post
Share on other sites
Programmer

Не очень понял, в чём проблема.

Забудьте про OrderCloseBy() - делайте всё руками.

Вам нужны переменные-флаги, чтобы хранить состояние системы.

Link to post
Share on other sites
Dmtr

Ребята, никто не сталкивался с проблемой синхронизации открытия ордеров? т.е. если на разных компьютерах запустить один и тот же скрипт на открытие позиции в таком виде:

 

if(!OrderExists(magic))//<- эта функция ищет открытый ордер

{

OrderSend(...);

}

 

то с большей вероятностью система откроет 2 ордера, а хотелось бы один. В настоящее время я добавляю Sleep в один из скриптов... Может кто-нибудь придумал более элегантное решение?

Link to post
Share on other sites
~~SOM~~
Ребята, никто не сталкивался с проблемой синхронизации открытия ордеров? т.е. если на разных компьютерах запустить один и тот же скрипт на открытие позиции в таком виде:

 

if(!OrderExists(magic))//<- эта функция ищет открытый ордер

{

OrderSend(...);

}

 

то с большей вероятностью система откроет 2 ордера, а хотелось бы один. В настоящее время я добавляю Sleep в один из скриптов... Может кто-нибудь придумал более элегантное решение?

Можно проверить из советника, не запущен ли он уже. Для этого при запуске выставить далекий отложенный ордер и проверять потом, выставлен ли он. Детали додумайте сами.

Link to post
Share on other sites
Dmtr
Можно проверить из советника, не запущен ли он уже. Для этого при запуске выставить далекий отложенный ордер и проверять потом, выставлен ли он. Детали додумайте сами.

 

Неплохая идея! Спасибо!

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...