AndreyGold Опубликовано 5 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 августа, 2015 Буквально страницу назад об этом писали. Функции OrderSend() и OrderModify() возвращают булево значение true или false при успешной операции или неудачной. Предполагается, что вас интересует столь важное действие как открытие или модификация ордера и вы захотите это проверить.В самом простом варианте пишите:bool result = OrderModify() - и это предупреждение компиляции исчезнет. Уточнение - про OrderModify() согласен, а вот OrderSend() возвращает номер тикета (то есть целое число), который назначен ордеру торговым сервером или -1 в случае неудачи 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
JR Опубликовано 5 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 августа, 2015 Да-да, спасибо за уточнение, все правильно, конечно же номер тикета (заработался :) ). Смысл в том, что эту операцию тоже нужно проверять. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
F.Zhukov Опубликовано 6 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 августа, 2015 Добрый день уважаемые программисты. Помогите перевести вот этого советника вот в такой подвальный индикатор. Логин советника: f.zhukov12@mail.ru, Пароль: zhukov Insaider_1.pngInsaider_2.gifInsaider.rar Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 6 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 августа, 2015 F.Zhukov советник Вам никто не переделает - он компилированный. Проще с фх-бука именно эти данные скачать и две линии в подвале нарисовать. Но не все смогут/захотят этим заниматься... Ссылка на сообщение Поделиться на другие сайты More sharing options...
F.Zhukov Опубликовано 6 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 августа, 2015 F.Zhukov советник Вам никто не переделает - он компилированный. Проще с фх-бука именно эти данные скачать и две линии в подвале нарисовать. Но не все смогут/захотят этим заниматься... Жаль, данные вообще супер. На их основе очень хорошие индикаторы могут получится. Что ж буду искать того кто подтянется за этим делом... Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sany2912 Опубликовано 6 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 августа, 2015 Здравствуйте! :)Помогите пожалуйста решить одну задачу - есть два открытых ордера на покупку с разными лотами, сколько пунктов вверх должна пройти цена, чтобы получить общюю прибыль 5 usd ?Заранее благодарю! Ссылка на сообщение Поделиться на другие сайты More sharing options...
некто Опубликовано 6 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 августа, 2015 :) если форум почитать: пост #305 http://tlap.com/forum/torgovye-sistemy/2/d1-supremacy/9346http://tlap.com/forum/torgovye-sistemy/2/d1-supremacy/9346/?do=findComment&comment=203781 Изменено 6 августа, 2015 пользователем Старик 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Старик Опубликовано 6 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 августа, 2015 И действительно: если вообще ничего не помогает - прочтите, наконец, инструкцию! (с) :) Добавлено: 06-08-2015 17:12:26F.Zhukov, вы все же напишите то или не то вы искали.Но, в принципе, с автором того индюка общий язык вам удастся найти быстрее всего - а главное, он глубоко в теме и, с высокой вероятностью, готов к её развитию. Изменено 6 августа, 2015 пользователем Старик 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 6 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 августа, 2015 Помогите пожалуйста решить одну задачу - есть два открытых ордера на покупку с разными лотами, сколько пунктов вверх должна пройти цена, чтобы получить общюю прибыль 5 usd ?Вычисляете уровень безубытка, узнаёте у МТ сколько стоит тик по этой паре, 5$/стоимость тика - получаете кол-во тиков до прибыли, прибавляете к уровню БУ и получаете желаемую цену закрытия. Всё.Как вычислить БУ для пары ордеров знаете? цена_БУ = (цена1*лот1 + цена2*лот2) / (лот1 + лот2) Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sany2912 Опубликовано 7 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 августа, 2015 Помогите пожалуйста решить одну задачу - есть два открытых ордера на покупку с разными лотами, сколько пунктов вверх должна пройти цена, чтобы получить общюю прибыль 5 usd ?Вычисляете уровень безубытка, узнаёте у МТ сколько стоит тик по этой паре, 5$/стоимость тика - получаете кол-во тиков до прибыли, прибавляете к уровню БУ и получаете желаемую цену закрытия. Всё.Как вычислить БУ для пары ордеров знаете? цена_БУ = (цена1*лот1 + цена2*лот2) / (лот1 + лот2) Спасибо, 0ll !!! 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
sla1000 Опубликовано 7 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 августа, 2015 Добрый вечер. Столкнулся с такой проблемой и никак не могу сам исправить - уже мозги кипят. При компиляции пишет: return value of 'OrderSelect' should be checked. Что это такое и как это лечить понятно, в интернете многое написано, но не пойму как не программист. Может кто подскажет что написать чтоб перестало ругаться. for (int pos_16 = 0; pos_16 ругается на эту строку OrderSelect(pos_16, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber() == 901 && OrderSymbol() == Symbol()) { g_symbol_664 = OrderSymbol(); Изменено 7 августа, 2015 пользователем sla1000 Ссылка на сообщение Поделиться на другие сайты More sharing options...
lsv107 Опубликовано 7 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 августа, 2015 Цитата Добрый вечер. Столкнулся с такой проблемой и никак не могу сам исправить - уже мозги кипят. При компиляции пишет: return value of 'OrderSelect' should be checked. Что это такое и как это лечить понятно, в интернете многое написано, но не пойму как не программист. Может кто подскажет что написать чтоб перестало ругаться. ругается на эту строку OrderSelect(pos_16, SELECT_BY_POS, MODE_TRADES); Надо проверять возвращаемое значение.for (int pos_16 = 0; pos_16 if (OrderSelect(pos_16, SELECT_BY_POS, MODE_TRADES)) функция возвращает true в случае удачного завершения, false - если не удалось выбрать ордер.{ if (OrderMagicNumber() == 901 && OrderSymbol() == Symbol()) { g_symbol_664 = OrderSymbol(); 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
sla1000 Опубликовано 7 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 августа, 2015 Спасибо. Я как оказалось не убирал знак - ; Ссылка на сообщение Поделиться на другие сайты More sharing options...
Konstebl Опубликовано 8 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 августа, 2015 Добрый вечер. Столкнулся с такой проблемой и никак не могу сам исправить - уже мозги кипят. При компиляции пишет: return value of 'OrderSelect' should be checked. Что это такое и как это лечить понятно, в интернете многое написано, но не пойму как не программист. Может кто подскажет что написать чтоб перестало ругаться. for (int pos_16 = 0; pos_16 ругается на эту строку OrderSelect(pos_16, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber() == 901 && OrderSymbol() == Symbol()) { g_symbol_664 = OrderSymbol(); Об этом было написано чуть выше, ; тут ни причём .Компилятор сообщает,что функция должна возвращать какое-то значение. Ссылка на сообщение Поделиться на другие сайты More sharing options...
igid Опубликовано 9 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 августа, 2015 Вы в этих функциях не поставили скобки(выделены).И советник стал тестироваться.Только какие это экстремумы это просто хай или лоу предыдущей свечи! Блин, надо же такие ошибки допускать)) код этого советника полностью аналогичен тому, что на видео про трейлингстопы. Там же не просто хай\лоу возвращается от предыдущей свечи, а ищется это значение за период "BarCount" свечей Ссылка на сообщение Поделиться на другие сайты More sharing options...
mark4431 Опубликовано 9 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 августа, 2015 Всем привет! Сразу извиняюсь, если пишу не в тот раздел форума! Просьба не судить строго, т.к. я только учусь писать советники! :)Итак, к делу: Идея, написать сов, открывающий 2а противоположных стоп-отложенника в определенное время(1раз в сут). Затем, после срабатывания одного из отложенников, 2й(противоположный, не сработавший) удаляется.Принципиальна привязка к тикетам, ну или к мэджику, т.е. ,есть бай-стоп с тикетом 11111111 и селл-стоп с тикетом 22222222,при срабатывании бай-стоп, получается бай с тикетом 1111111 в рынке, а селл-стоп с тикетом 2222222 удаляем.Но, что-то я запутался, помогите плиз! :">P.S. "Огромное спасибо за такие полезные и подробные уроки по mql!" my_expert_stoporders.ex4 Изменено 9 августа, 2015 пользователем mark4431 Ссылка на сообщение Поделиться на другие сайты More sharing options...
JR Опубликовано 9 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 августа, 2015 mark4431, во-первых, выкладывайте исходный код советника, если хотите, чтобы вам помогли.Во-вторых, напишите универсальную функцию, считающую количество открытых ордеров определенного типа (она была в видеоуроках) - она вам пригодится в любом советнике, с ней ваша задача становится просто тривиальной.У меня эта функция выглядит так:int CountTrades(int otype) //Считаем количество ордеров нужного типа { int Count = 0; for (int i = OrdersTotal() - 1; i >= 0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderType() == otype && OrderMagicNumber() == Magic) Count ++; } } return (Count);} Далее, следуя логики вашего ТЗ, алгоритм примерно такой: if (CountTrades(OP_BUYSTOP) == 0 && CountTrades(OP_SELLSTOP) == 0) { if (время_подходит) { открываем ордера } } if (CountTrades(OP_BUY) > 0) удаляем селлстопelse if (CountTrades(OP_SELL) > 0) удаляем байстоп Изменено 9 августа, 2015 пользователем JR 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
mark4431 Опубликовано 9 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 августа, 2015 mark4431, во-первых, выкладывайте исходный код советника, если хотите, чтобы вам помогли.Во-вторых, напишите универсальную функцию, считающую количество открытых ордеров определенного типа (она была в видеоуроках) - она вам пригодится в любом советнике, с ней ваша задача становится просто тривиальной. Пардон, не тот файл кинул, спасибо за отклик! :)Вот, поправил, вроде работает без ошибок. Если не сложно, поправьте если где не так, может чего лишнего наворотил.. :"> my_expert_stoporders.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
F.Zhukov Опубликовано 10 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 августа, 2015 И действительно: если вообще ничего не помогает - прочтите, наконец, инструкцию! (с) :) Добавлено: 06-08-2015 17:12:26F.Zhukov, вы все же напишите то или не то вы искали.Но, в принципе, с автором того индюка общий язык вам удастся найти быстрее всего - а главное, он глубоко в теме и, с высокой вероятностью, готов к её развитию. Мне нужно что бы в подвале МТ4 показывала так же, как на втором скрине. Далее я со своим програмером думаю написать ряд индикаторов по Ларии Уильямсу (Индексы, Моментум, Чистые позиции и Импульс Силы Открытого Интереса). Мне бы только перед тем как мой программер из отпуска вернется уже дать ему готовый MQL код такого подвального индюка - и далее дело в шляпе. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sany2912 Опубликовано 10 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 августа, 2015 Добрый день, друзья!Кто нибудь сталкивался с такой ситуацией - отложенный ордер (бай-стоп) исполняется не по той цене на которой он был установлен, а выше заданного уровня??? Это происходит из-за резкого изменения цен или причина другая? Какие есть варианты устраниение этой ситуации? Хотелось бы, чтоб отложенный ордер (или любой другой) исполнялся по заданной цене...Спасибо! Ссылка на сообщение Поделиться на другие сайты More sharing options...
mark4431 Опубликовано 10 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 августа, 2015 Добрый день, друзья!Кто нибудь сталкивался с такой ситуацией - отложенный ордер (бай-стоп) исполняется не по той цене на которой он был установлен, а выше заданного уровня??? Это происходит из-за резкого изменения цен или причина другая? Какие есть варианты устраниение этой ситуации? Хотелось бы, чтоб отложенный ордер (или любой другой) исполнялся по заданной цене...Спасибо! Если ты про sell-ордера-выше, buy- ниже, в общем раньше)) это происходит из-за спреда, на сильных движениях особенно заметно это явление..) Ссылка на сообщение Поделиться на другие сайты More sharing options...
Blohastik Опубликовано 10 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 августа, 2015 Добрый день уважаемые программисты. Помогите перевести вот этого советника вот в такой подвальный индикатор. Логин советника: f.zhukov12@mail.ru, Пароль: zhukov Добрый день. Моежет помочь реализовать вот такую идею? Мне нужно что бы в подвале МТ4 показывала так же, как на втором скрине. Далее я со своим програмером думаю написать ряд индикаторов по Ларии Уильямсу (Индексы, Моментум, Чистые позиции и Импульс Силы Открытого Интереса). Мне бы только перед тем как мой программер из отпуска вернется уже дать ему готовый MQL код такого подвального индюка - и далее дело в шляпе. Здравствуйте.Переделать тот советник что Вы предложили точно не получится, так как это компилированная версия. Сделать парсинг информации с фх-бука возможно (как для проверки на истории, так и для онлайн работы).MQL код является продуктом моей интеллектуальной деятельности по реализации Вашей идеи, индикатор для форума tradelikeapro будет представлен в компилированной версии.Если вы изложите ТЗ на ваши идеи "(Индексы, Моментум, Чистые позиции и Импульс Силы Открытого Интереса)" то я постараюсь включить это в индикатор.Единственная проблема это время. Постараюсь реализовать ТЗ, но не обещаю, что это будет быстро.Спасибо Изменено 10 августа, 2015 пользователем Blohastik 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
F.Zhukov Опубликовано 10 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 августа, 2015 0 Изменено 3 октября, 2015 пользователем F.Zhukov 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
JR Опубликовано 11 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 августа, 2015 Нужен совет специалистов. Такой вопрос:Допустим, строим мы сетку ордеров. Максимальное разрешенное количество - 10. Каждый ордер имеет индивидуальный одинаковый стоплосс (а не общий для корзины). Возникает такая ситуация - открылись 10 ордеров, к примеру, цена идет дальше и 2 ордера закрываются по стоплоссу. Обычная функция счетчика рыночных ордеров будет возвращать 8 и советник будет дальше открывать ордера, хотя максимально разрешеннное для сетки (10) мы прошли.Собственно вопрос: что надежней для отслеживания количества ордеров сетки: считать виртуальным счетчиком и записывать в глобальные переменные или пытаться высчитать закрытые по стоплоссу ордера сетки в истории (MODE_HISTORY) и плюсовать к текущим?Может еще есть другие варианты? Ссылка на сообщение Поделиться на другие сайты More sharing options...
mark4431 Опубликовано 11 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 августа, 2015 Нужен совет специалистов. Такой вопрос:Допустим, строим мы сетку ордеров. Максимальное разрешенное количество - 10. Каждый ордер имеет индивидуальный одинаковый стоплосс (а не общий для корзины). Возникает такая ситуация - открылись 10 ордеров, к примеру, цена идет дальше и 2 ордера закрываются по стоплоссу. Обычная функция счетчика рыночных ордеров будет возвращать 8 и советник будет дальше открывать ордера, хотя максимально разрешеннное для сетки (10) мы прошли.Собственно вопрос: что надежней для отслеживания количества ордеров сетки: считать виртуальным счетчиком и записывать в глобальные переменные или пытаться высчитать закрытые по стоплоссу ордера сетки в истории (MODE_HISTORY) и плюсовать к текущим?Может еще есть другие варианты? Привет, я конечно не спец, но может удастся, хотя бы чем-то помочь)) Условие закрытие сети какое? Может стоит исходить из инициирующего ордера? Пока он существует и сеть достигла 10-запрет на выставление новых отложек...И скорее всего, лучше писать в глоб. переменную, например bool a=true если кол-во отложек достигало 10, если инициирующий ордер закрылся- a=false; Изменено 11 августа, 2015 пользователем mark4431 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти