Вопросы от начинающих MQL4 MT4 MetaTrader 4 - страница 130

 
Nikolai Semko:
А Вы используете отладчик для поиска своих ошибок?

Нет. Опыт программирования менее 1 недели. Взял для примера образец простейшего советника и пытаюсь внести в него SL, TP, TStop и TStep. После компиляции написано что ошибок нет (скрин выше приложил), но на деле (в тестере) данные функции не работают.

Подскажите плиз что для этого надо. И как действовать дальше.

 
Sergey_M_K:.

Нет. Опыт программирования менее 1 недели. Взял для примера образец простейшего советника и пытаюсь внести в него SL, TP, TStop и TStep. После компиляции написано что ошибок нет (скрин выше приложил), но на деле (в тестере) данные функции не работают.

Подскажите плиз что для этого надо. И как действовать дальше.

Не хочется Вас обкрадывать. Лишать Вас очень нужного опыта поиска своих ошибок.

Ошибки - вещь неизбежная даже у профи.

Уметь их найти - это очень важно, если Вы хотите продолжать программировать.

Для этого существует в Metaeditor незаменимый инструмент "Отладка".

Потратьте время -освойте этот инструмент и Вам не нужно будет просить других на форумах искать Ваши ошибки.

Нужно проходить программу в пошаговом режиме с контролем нужных переменных, что в них происходит. 

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

Информацию можете почитать здесь или в справке MetaEditor.

Можите почитать эту статью.

 
Sergey_M_K:

Добрый день, друзья! Помогите решить следующую проблему: пробую написать простой советник и столкнулся со следующим: если значение SL ставится отличное от 0, то сделки совсем не открываются, а так же совсем не работают функции TP, TStop и TrailingStep.

Что следует исправить в коде?

Для установки уровней Stop Loss и Take Profit используется реальное ценовое значение. У Вас же в коде это нереальные значения. К примеру, если SL равно 50 для EURUSD, то получится значение 0.0005. Для ордера Buy такой Stop Loss еще корректен (хотя и не несет никакого смысла), а вот для Sell - ошибка, т. к. должен находиться выше цены открытия ордера. Если текущая цена EURUSD 1.25, то значение для Stop Loss должно быть выше этого уровня.

Также не забывайте производить проверку полученных значений Stop Loss и Take Profit на близость к рынку, сравнивая с величиной Stop Level.

 
Здравствуйте! Не могу найти функцию, возвращающую тикет  самой дальней от рынка позиции. Не могли бы выложить у кого есть?
 
Kofa:
Здравствуйте! Не могу найти функцию, возвращающую тикет  самой дальней от рынка позиции. Не могли бы выложить у кого есть?

Здесь найдёте очень много

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
Vitaly Muzichenko:

Здесь найдёте очень много

Спасибо, Виталий, но именно там (и не только) я и искал. К сожалению нет всех функций, которые мне нужны:

-возвращает тикет  самой дальней от рынка позиции (по магику и направлению)  Или самой ранней

-возвращает профит по тикету

-закрывает позицию по тикету

Подскажите где взять, если знаете

 
Доброго времени ! Помогите разобраться , наношу на график трендовую линию , захожу в свойства ,в описании вношу данные , закрываю ,трендовая линия есть , описания нет, навожу на линию курсор, в окошке описание есть Спасибо
 
Kofa:

Спасибо, Виталий, но именно там (и не только) я и искал. К сожалению нет всех функций, которые мне нужны:

-возвращает тикет  самой дальней от рынка позиции (по магику и направлению)  Или самой ранней

-возвращает профит по тикету

-закрывает позицию по тикету

Подскажите где взять, если знаете

Там есть тикет ближайшей. Как найти дальнюю - думаю догадаетесь сами. Если нашли тикет, то c ним уже сможете работать if(OrderSelect(ticket, SELECT_BY_TICKET)) { ... }

 
Здраствуйте! Делаю советник по двум условиям!!! Так вот в первом условии, все должно работать на м15, а в другом на н4!!! Подскажите как это можно сделать?
 
sviter-pro:
Здраствуйте! Делаю советник по двум условиям!!! Так вот в первом условии, все должно работать на м15, а в другом на н4!!! Подскажите как это можно сделать?

Брать данные с разных ТФ. Например, цена открытия текущего бара на разных ТФ (значения будут совпадать только первые 15 минут бара Н4):

double fOpenM15 = iOpen(Symbol(), PERIOD_M15, 0);
double fOpenH4 = iOpen(Symbol(), PERIOD_H4, 0);

Наиболее сложный момент при работе с разными ТФ - синхронизация данных. Ведь нумерация баров на разных ТФ отличается.