Jump to content
Programmer

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

Recommended Posts

Programmer

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

Share this post


Link to post
Share on other sites
Programmer

To Yudjin78:

часть 4 +

часть 5 +

часть 6 ?

 

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

 

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

Share this post


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

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

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

Share this post


Link to post
Share on other sites
Yudjin78
To Yudjin78:

 

часть 4 +

часть 5 +

часть 6 ?

 

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

 

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

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

Share this post


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

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

 

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

Share this post


Link to post
Share on other sites
Execu

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

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

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

Delta = (MA_c - MA_p)/Point;

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

Share this post


Link to post
Share on other sites
Programmer

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

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

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

Share this post


Link to post
Share on other sites
Execu

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

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

Share this post


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

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

 

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

 

Спасибо.

Share this post


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

 

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

Share this post


Link to post
Share on other sites
Programmer

На заметку:

 

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

Share this post


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

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

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

 

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

 

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

 

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

Share this post


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

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

 

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

 

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

 

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

 

 

 

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

Share this post


Link to post
Share on other sites
Execu

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

Share this post


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

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

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

Share this post


Link to post
Share on other sites
Programmer

To Клубничка:

OrdersTotal();

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

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

Share this post


Link to post
Share on other sites
Programmer

To Execu:

 

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

Спасибо.


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

All ingenious is simple

Share this post


Link to post
Share on other sites
Programmer

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

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

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

Share this post


Link to post
Share on other sites
Dmtr

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

 

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

{

OrderSend(...);

}

 

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

Share this post


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

 

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

{

OrderSend(...);

}

 

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

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

Share this post


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

 

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×