Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 391

 
smetantn1980:
здраствуйте подскажите почему у меня в metaeditore кнопки отладки не активны????исходник вставлен
А где он сохранён? Чтобы отладка была возможна, код должен быть сохранён в каталоге данных, а не где-то в темпе.
 
Vitalie Postolache:
Скорее всего, упомянутые функции являются пользовательскими и МЕ не обязан их знать. Вы сами должны их правильно объявлять и вызывать.
  Функции-не пользовательские.   Ответьте, если вас не затруднит, на вопрос о том, на каком языке писать софт в терминале мт4?
 
Kira27:
  Функции-не пользовательские.   Ответьте, если вас не затруднит, на вопрос о том, на каком языке писать софт в терминале мт4?
Сейчас разработчики пытаются свести к минимуму различия между терминалами. Однако, различия есть и некоторые функции из MQL5 могут не корректно работать в MQL4. Писать "софт" для терминала МТ4 нужно на MQL4 и только на нем. Просто он сейчас очень похож на MQL5. Смотрите справку по языку.
 

Vitalie Postolache:
А где он сохранён? Чтобы отладка была возможна, код должен быть сохранён в каталоге данных, а не где-то в темпе.

советник находиться в каталоге программы как обычно в папке эксперт и стоит на графике 

 
Kira27:
  Функции-не пользовательские.   Ответьте, если вас не затруднит, на вопрос о том, на каком языке писать софт в терминале мт4?

Да, не пользовательские, это функции из MQL5. Для MQL4 нужно будет подыскивать другие, или написать аналогичные, но уже пользовательские.

Например, OrderGetTicket() MQL5 -> OrdetTicket() MQL4.

 
все спасибо я этот советник открывал не с терминала поэтому отладка не активна была
 
подскажите как в советнике прописать чтобы на экране видно было общий обьем в лотах по сел и бай
 

Всем привет!

Несколько вопросов от новичка.

1. Разница между Mql4 и Mql5  (сайт и собственно язык программирования). Есть Metatrade 4 и Metatrader 5 с соответственно встроенными Mql4 и Mql5. Есть и два разных соответствующих сайта. При этом все те эксперты, которые я смотрел в MT4 ведут на этот сайт. Какой же более актуальный? Какой форум "живее"? Где лучше писать вопросы? Обратная совместимость между разными версиями MT и Mql? Я лично сейчас пишу эксперта в MT4 на Mql4 соответственно. Связано это с тем, что брокер, у которого я использую демку для тестирования, использует MT4. Как определить язык, на котором написан эксперт? В смысле только по расширению (.mq4 и .mq5). А если файл переименовать, будет ли он компилироваться (это опять же про совместимость)?

2. Динамические внешние параметры эксперта.  Можно ли как-то динамически менять настраиваемые параметры эксперта. Поясню... Например есть внешний параметр extern bool a. Если он равен true, то нужно настраивать дополнительный параметр extern int b. Если же а=false, то параметр b не нужен. Можно ли как-то его отображать/не отображать в зависимости от выбранного текущего значения а? Учитывая, что обработчиков изменения внешних параметров не нашел, и нет конструкции типа #if .. #endif, то подозреваю, что это сделать нельзя... Если это так, но не подскажите, как лучше поступать в этой ситуации, чтобы не перегружать процесс настройки внешних параметров? Например, можно поставить a=false, забыть, что параметр b при этом не используется, но все равно включить его в оптимизацию (хотя смысла в этом не будет, только лишнее время потратится). И одно дело, когда такой параметр b всего один. А, если например, я делаю enum внешний параметр и там несколько выпадающих вариантов ТС. У них есть общая часть (потому их логично реализовывать внутри одного эксперта, а не писать несколько), но есть и различные с множеством разных параметров. Тогда очень легко запутаться, какие параметры актуальны для выбранной ТС.

3. Автоматическая оптимизация эксперта.  ИМХО, очень удобная и нужная вещь. Нашел вот эту статью. Но там, как я понял, используется второй экземпляр MT, который запускается на оптимизацию из вне (из работающего экземпляра MT), а результаты оптимизации читаются из отчета в виде html. Это не очень удобно и кривовато. По логике надо писать свою функцию/dll для оптимизации и напрямую запускать ее из эксперта. Так вот собственно вопрос. Как я понял, в самом MT в тестере стратегий запрограммирован генетический алгоритм оптимизации. Очень поверхностно знаю про эти алгоритмы. Но по идее они давно известны, отсюда вопрос - зачем изобретать велосипед?) Есть ли готовый алгоритм, который используется непосредственно в MT? Может он уже есть где-то в библиотеках самого терминала... Может есть отдельно исходники или готовая dll. В общем, поделитесь, пожалуйста, опытом в этом вопросе.

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

Заранее всем спасибо за ответы! 

Автоматическая оптимизация торгового робота в процессе реальной торговли
Автоматическая оптимизация торгового робота в процессе реальной торговли
  • 2007.04.16
  • Igor Malcev
  • www.mql5.com
В статье описана и представлена библиотека функций, позволяющая проводить оптимизацию входных параметров советника, запуская оптимизацию непосредственно из советника.
 
smetantn1980:
подскажите как в советнике прописать чтобы на экране видно было общий обьем в лотах по сел и бай
Получаете общее кол-во ордеров в терминале, перебираете все ордера (думаю, вопрос по mql4), выбираете из них те, которые удовлетворяют условиям (символ, маджик и тип), суммируете в переменные для селл и для бай. Далее создаете два объекта OBJ_LABEL (вроде так). Задаете им позицию, цвет и др. свойства (см. документацию). Меняете описание этих объектов на значения, полученные в переменные селл и бай. Все.
 
smetantn1980:
подскажите как в советнике прописать чтобы на экране видно было общий обьем в лотах по сел и бай

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

int totalOrders = OrdersTotal();

double totalLots = 0; 

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

    if ( (OrderSelect(i, SELECT_BY_POS)) && (OrderMagicNumber() == myMagicNumber) )

        totalLots += OrderLots();

Comment("totalLots=", totalLots); 

Это общий код для всех сделок. Для бай и селл отдельно создаете раздельные переменные и делаете switch по OrderType()

Причина обращения: