JR Опубликовано 11 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 августа, 2015 Вы немножко не поняли - речь идет об обычном мартине - т.е. ордера сетки, открытые в рынке. Закрытие по общему ТП корзины. Просто пытаюсь реализовать разные варианты стоплосса сетки. Как один из вариантов, описанный выше - одинаковый сл (размер стоп-лосса, а не цена) для каждого ордера, при растягивании длинной сетки младшие (первые открытые) начинают закрываться по СЛ. Изменено 11 августа, 2015 пользователем JR Ссылка на сообщение Поделиться на другие сайты More sharing options...
Konstebl Опубликовано 11 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 августа, 2015 Нужен совет специалистов. Такой вопрос:Допустим, строим мы сетку ордеров. Максимальное разрешенное количество - 10. Каждый ордер имеет индивидуальный одинаковый стоплосс (а не общий для корзины). Возникает такая ситуация - открылись 10 ордеров, к примеру, цена идет дальше и 2 ордера закрываются по стоплоссу. Обычная функция счетчика рыночных ордеров будет возвращать 8 и советник будет дальше открывать ордера, хотя максимально разрешеннное для сетки (10) мы прошли.Собственно вопрос: что надежней для отслеживания количества ордеров сетки: считать виртуальным счетчиком и записывать в глобальные переменные или пытаться высчитать закрытые по стоплоссу ордера сетки в истории (MODE_HISTORY) и плюсовать к текущим?Может еще есть другие варианты? Может завести ещё одну переменную ну,например static int A = 0;.Дальше считаем открытые ордера.Если открытых ордеров 10, то А = 1; иначе А = 0 В условии на открытие добавляем если А = 0 то открываем ордер ,если А = 1 выходим.Или что-то в этом роде. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 11 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 августа, 2015 JR можно сделать флаг продолжения торговли bool flag = true. При 10 ордерах сбрасывать в фалс.Но при перезагрузке терминала будет заново строится - надо пересчитывать (геморрой) или сделать ручное подтверждение... 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
mark4431 Опубликовано 11 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 августа, 2015 Вы немножко не поняли - речь идет об обычном мартине - т.е. ордера сетки, открытые в рынке. Закрытие по общему ТП корзины. Просто пытаюсь реализовать разные варианты стоплосса сетки. Как один из вариантов, описанный выше - одинаковый сл (размер стоп-лосса, а не цена) для каждого ордера, при растягивании длинной сетки младшие (первые открытые) начинают закрываться по СЛ. если я правильно понял, то у сетки ордеров у каждого свой сл и смысл, чтобы они закрывались от самого нижнего к самому верхнему для бай? И задача в том, чтобы при закрытии по сл, нижнего(для бай) новый не открывался. Так?В глобальную пишем bool a=true;Считаем кол-во ореров с нашим магиком на бай(например){int b=кол-во;if(bif(b=10)a=false;}В условие открытия-if(a){открываемся...}...хотя..не подойдет, будет держать всегда 10) Изменено 11 августа, 2015 пользователем mark4431 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
igid Опубликовано 11 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 августа, 2015 А кто решил задачу про обновление тэйкпрофита в уроке про построение сетки? Вот как выглядит условие задачи:"Представьте, что в процессе работы эксперта Вы вдруг решили изменить Take Profit у этого советника, но просто изменение этого параметра сейчас ничего не даст. Доработайте эксперт таким образом, чтобы любое Ваше изменение параметра Take Profit привело к автоматическому изменению TakeProfit рыночных ордеров." Ничего не смог придумать. Скажите хотя бы в общих чертах как эту функцию реализовать.. Ссылка на сообщение Поделиться на другие сайты More sharing options...
JR Опубликовано 11 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 августа, 2015 Может завести ещё одну переменную ну,например static int A = 0;.Дальше считаем открытые ордера.Если открытых ордеров 10, то А = 1; иначе А = 0 В условии на открытие добавляем если А = 0 то открываем ордер ,если А = 1 выходим.Или что-то в этом роде. А если ордеров еще не 10 открыто, а допустим 8, потом бац - один по стоплоссу закрылся - в рынке остается 7, а нужно, чтобы счетчик выдавал 8 (общее количество закрытых и открытых ордеров сетки). Поэтому с глобальными переменными нужно просто отслеживать открываемые ордера и записывать их в виртуальный счетчик, ИМХО.JR можно сделать флаг продолжения торговли bool flag = true. При 10 ордерах сбрасывать в фалс.Но при перезагрузке терминала будет заново строится - надо пересчитывать (геморрой) или сделать ручное подтверждение... В том-то и дело, что при рестарте терминала, при реините текущие переменные будут сбрасываться и как я вижу, нужно или получать данные из текущей рыночной ситуации (открытые ордера + как-то отследить закрытые по сл текущей сетки в истории) или сохранять счетчики в глобальные переменные.Последний способ я как-раз реализовал, это не сложно, просто почему спрашиваю спецов - из собственного опыта, какой способ будет надежней (от обрывов связи, рестартов, кривых рук юзера и прочих форс-мажоров) - счетчики на глобальных переменных или пытаться вычислить текущую ситуацию?Добавлено: 11-08-2015 14:41:36если я правильно понял, то у сетки ордеров у каждого свой сл и смысл, чтобы они закрывались от самого нижнего к самому верхнему для бай? И задача в том, чтобы при закрытии по сл, нижнего(для бай) новый не открывался. Так? Смысл чтобы сначала закрывались по сл первые ордера (с младшим лотом), я же написал. В случае бай это будут сначала самый верхний с лотом 0.01 и.т.д. Такая модель есть, если я не ошибаюсь в ForexWarrior.А кто решил задачу про обновление тэйкпрофита в уроке про построение сетки? Вот как выглядит условие задачи:"Представьте, что в процессе работы эксперта Вы вдруг решили изменить Take Profit у этого советника, но просто изменение этого параметра сейчас ничего не даст. Доработайте эксперт таким образом, чтобы любое Ваше изменение параметра Take Profit привело к автоматическому изменению TakeProfit рыночных ордеров." Ничего не смог придумать. Скажите хотя бы в общих чертах как эту функцию реализовать.. Ну во-первых, если вы изменяете ТП в настройках, то правильно написанный сеточник пересчитает ТП корзины на следующем открытом ордере.Плюс в своем сеточнике я сделал контроль ТП-СЛ сетки, который происходит примерно раз в минуту (или другой временной интервал) и если текущие параметры не соответствуют вычисляемым (в соответствии с текущими настройками) - то модифицируем ордера сетки. Но реализовать такое - не совсем просто, хотя интересно:) Изменено 11 августа, 2015 пользователем JR Ссылка на сообщение Поделиться на другие сайты More sharing options...
Konstebl Опубликовано 11 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 августа, 2015 Я думаю,что на глобальных переменных понадежней будет.А вообще(в целях повышения образованности :)) ) какой у Вас стоп-лосс будет(пунктов МИЛЛИОН), чтобы в него уместились ещё 9 ордеров со своими стопами? Ссылка на сообщение Поделиться на другие сайты More sharing options...
igid Опубликовано 11 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 августа, 2015 Ну во-первых, если вы изменяете ТП в настройках, то правильно написанный сеточник пересчитает ТП корзины на следующем открытом ордере.Плюс в своем сеточнике я сделал контроль ТП-СЛ сетки, который происходит примерно раз в минуту (или другой временной интервал) и если текущие параметры не соответствуют вычисляемым (в соответствии с текущими настройками) - то модифицируем ордера сетки. Но реализовать такое - не совсем просто, хотя интересно:)В том то и дело, что пересчет ТП открытых ордеров должен осуществляться не на следующем открытии ордера, а сразу как только я поменял этот параметр в настройках. Вот про контроль, который вы сделали, расскажите пожалуйста по подробнее.. Ссылка на сообщение Поделиться на другие сайты More sharing options...
JR Опубликовано 11 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 августа, 2015 Я думаю,что на глобальных переменных понадежней будет.А вообще(в целях повышения образованности :)) ) какой у Вас стоп-лосс будет(пунктов МИЛЛИОН), чтобы в него уместились ещё 9 ордеров со своими стопами? Да какая разница, какой стоплосс будет - какой пользователь захочет выставить, такой и будет. Бот должен максимально четко отрабатывать ситуацию, правильно?Может вы не поняли модель описанную стоплоссов? Вот вам вполне конкретные настройки (реальные для рынка, указываю в 4-х знаке) шаг сетки 35пп, пусть максимум 12 ордеров - сетка тянется больше 300пп, стоплосс - 200пп, первые ордера начнет выбивать по стопу еще до открытия максимума ордеров сетки.Дело в том, что я хочу реализовать три режима стоплосса сетки - без СЛ (хардкор), общий СЛ корзины (пересчитывается от последнего открытого ордера сетки) и индивидуальный СЛ для каждого ордера сетки, который собственно и обсуждаю. И каждую ситуацию бот должен корректно обрабатывать. Добавлено: 11-08-2015 16:01:02В том то и дело, что пересчет ТП открытых ордеров должен осуществляться не на следующем открытии ордера, а сразу как только я поменял этот параметр в настройках. Вот про контроль, который вы сделали, расскажите пожалуйста по подробнее.. В общих чертах это выглядит так:Есть функция, вычисляющая нужный ТП сетки в зависимости от настроек и рыночной ситуации (количество открытых ордеров), назовем ее GetTP().Есть модуль модификации ордеров сетки, алгоритм которого выглядит так:TP = GetTP;for (стандартный цикл перебора ордеров нашей сетки, нужного типа) if (OrderSelect(и так далее)) - выбрали ордер if (OrderTakeProfit() != TP) если ТП ордера не соответствует нужному OrderModify(TP) - модифицируем егоконец цикла.Я очень упрощенно написал, схема, думаю понятна.Такой модуль модификации ордеров сетки я вызываю после открытия нового ордера и раз в n-минут(секунд), для контроля. Изменено 11 августа, 2015 пользователем JR 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sany2912 Опубликовано 11 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 августа, 2015 Oll, похоже, что без твоего совете не обойтись... :| Подскажите, пожалуйста... Почему отложенный ордер (бай-стоп) исполняется не по той цене на которой он был установлен, а выше заданного уровня??? Это происходит из-за резкого изменения цен или причина другая? Какие есть варианты устраниение этой ситуации? Хотелось бы, чтоб отложенный ордер (или любой другой) исполнялся по заданной цене...Спасибо! Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 11 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 августа, 2015 Sany2912 это не вопрос программирования. Ордер хранится на сервере брокера и там исполняется. Бывает отложка скользит - не было цены и брокер исполнил по первой доступной. На этот процесс повлиять нельзя.JR пересчёт в ините надёжнее. имхо. только там есть тонкие вопросы, например порядок сортировки ордеров в истории - по времени открытия, по времени закрытия или тикету? если прошёл гэпчик и зацепило 3 стопа - какой первый закроется? (это всё к тому, как в истории найти 1 ордер последней сетки) Может в коммент 1 ордера что-нибудь писать - для простого поиска... 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
JR Опубликовано 11 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 августа, 2015 0ll, спасибо за подсказку с комментом первого ордера. Я думал попробовать искать по минимальному лоту в закрытых, но с комментом наверное проще будет. Буду пробовать, потому что я тоже склонялся к мысли, что все-таки нужно отслеживать текущую ситуацию, а не надеяться на сохраненные переменные, которые к примеру юзер может взять и.. очистить:) Ссылка на сообщение Поделиться на другие сайты More sharing options...
maxtn1009 Опубликовано 12 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 12 августа, 2015 Всем добрый вечер , такой вопрос допустим советник прикреплён к графику GBPUSD , а сделку нужно совершить по EURUSD , что нужно прописать вместо Symbol()OrderSend(Symbol(),OP_BUY, lot,NormalizeDouble(Ask,Digits),2,SL,TP,"простой советник",Magic,3) Ссылка на сообщение Поделиться на другие сайты More sharing options...
Konstebl Опубликовано 13 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 13 августа, 2015 Всем добрый вечер , такой вопрос допустим советник прикреплён к графику GBPUSD , а сделку нужно совершить по EURUSD , что нужно прописать вместо Symbol()OrderSend(Symbol(),OP_BUY, lot,NormalizeDouble(Ask,Digits),2,SL,TP,"простой советник",Magic,3) " EURUSD " 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Mezon Опубликовано 15 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 августа, 2015 За видео спасибо. потратили кучу времени впустую... У меня вопрос, скажите пожалуйста сколько человек ни когда не изучающих программирование посмотрев видео начали писать советников? Дело в том что у меня проблема с изучением MQL (вернее проблема в учителях - их нет), "учебник" по MQL прочитал несколько раз, видео посмотрел а толку ни какого, что дальше как учиться? Ссылка на сообщение Поделиться на другие сайты More sharing options...
JR Опубликовано 15 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 августа, 2015 За видео спасибо. потратили кучу времени впустую... У меня вопрос, скажите пожалуйста сколько человек ни когда не изучающих программирование посмотрев видео начали писать советников? Дело в том что у меня проблема с изучением MQL (вернее проблема в учителях - их нет), "учебник" по MQL прочитал несколько раз, видео посмотрел а толку ни какого, что дальше как учиться? Возможно, программирование - это не ваше?У меня лично никаких проблем не возникло с написанием советников по видеоурокам, хотя ранбше mql4 не занимался. Прекрасные видео, для новичков - самое то. Плюс официальный учебник MQL4 разжевывает все по полочкам.З.Ы. Справедливости ради замечу, что лично у меня был до этого любительский опыт программирования на разных языках, возможно это помогло. Начните вообще с азов программирования, поищите уроки в инете. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 15 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 августа, 2015 Mezon по своему опыту скажу: я начал программировать в 1986 г. Просто был интерес. Учителей было значительно меньше чем сейчас, интернета не было и вместо видео и книжек была тех.документация. Так вот: открывай редактор и начинай писать программу, самую простую - вывод на экран сообщения (с торговых функций не начинай!), сделай скрипт калькулятора, вычисли разность между датами, отрепетируй ввод данных и их простую обработку и вывод на экран или в лог.Когда поймешь, что получается и комп делает всё, что от него требуется - появится уверенность, вот тогда и приступай к простому торговому эксперту.А насчёт видео и его пользы - Вы зря иронизируете, цель видео не в обучении, а в том, чтоб показать лёгкость и доступность процесса. Человек посмотрит и скажет - "вроде просто, надо попробовать" и пробует. Конечно у кого-то не получается, но по моим наблюдениям много народа пробовали и у половины точно получилось...Удачи. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
mark4431 Опубликовано 15 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 августа, 2015 За видео спасибо. потратили кучу времени впустую... У меня вопрос, скажите пожалуйста сколько человек ни когда не изучающих программирование посмотрев видео начали писать советников? Дело в том что у меня проблема с изучением MQL (вернее проблема в учителях - их нет), "учебник" по MQL прочитал несколько раз, видео посмотрел а толку ни какого, что дальше как учиться? Зря вы так по поводу видео! Заслуживает внимания, однозначно! Я учусь по данным урокам, если честно помогают!(напАру со справкой и учебником). Уже написал, первого советника!(не "передрал" у кого-то, а придумал и написал самостоятельно), хотя далек от программирования и никогда этим не занимался, чего и Вам желаю(научиться ;))! А первое впечатление от написания кода было примерно таким же, как у Вас..)) "ни чего не помогает, дурацкий сов. и т.д..." А основная проблема в том, чтобы четко сформулировать что вы хотите от советника, основную цель для себя! Например, попробуйте написать простенького вспомогательного сов-а, который будет подхватывать ваши положительные сделки и переводить их в Б/У.., дальше добавьте к вашемо сову, еще что-нибудь, и т.д. Не успеете оглянуться как у Вас уже готовый сов, написанный Вами!)) P.S. +Здесь ребята отзывчивые, если есть проблемы помогают! :d Изменено 15 августа, 2015 пользователем mark4431 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Konstebl Опубликовано 15 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 августа, 2015 За видео спасибо. потратили кучу времени впустую... У меня вопрос, скажите пожалуйста сколько человек ни когда не изучающих программирование посмотрев видео начали писать советников? Дело в том что у меня проблема с изучением MQL (вернее проблема в учителях - их нет), "учебник" по MQL прочитал несколько раз, видео посмотрел а толку ни какого, что дальше как учиться? Зря Вы так про видео!!!Лично я сам учился на видео уроках.Во многих из них достаточно подробно всё рассказывается!До этогопрограммированием вообще никогда не занимался.А при переходе со старого билда на новый просмотрел ещё и видео уроки по С++ ,что-бы хоть маленько понять новый MQL4 (от старого сильно отличается).Учебник какой читали?Почитайте на форумехотя-бы Альпари хотя и у остальных такой курс есть " Курс MQL4 " .Там правда для старого билда,но суть поймёте. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
JR Опубликовано 17 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 августа, 2015 Может баян и уже обсуждали: компилирую сову 765-м билдом - экзешник 25кб, а если 840-м - получается 50 кб! Есть еще подозрение (пока не проверил), что последним билдом скомпилированная сова еще и памяти жрет в 2 раза больше в терминале. Чего они там пихают?? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 17 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 августа, 2015 JR самому интересно. жалуются "Азия" в 840 перестала работать... Вам лучше на МТ-шном форуме этот вопрос задать. Ссылка на сообщение Поделиться на другие сайты More sharing options...
mark4431 Опубликовано 19 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 августа, 2015 А можно ли в mql написать торговую панель с кнопками, что-то типа стандартной "Торговли в 1 клик"? Или такое на C++ программируется? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 19 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 августа, 2015 А можно ли в mql написать торговую панель с кнопками, что-то типа стандартной "Торговли в 1 клик"? Или такое на C++ программируется?Можно, но только для одного окна (для каждого инструмента запускаете свою панель). А на СИ одна панель для любого активного окна.Тут была панель с открытым кодом. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
mark4431 Опубликовано 19 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 августа, 2015 А можно ли в mql написать торговую панель с кнопками, что-то типа стандартной "Торговли в 1 клик"? Или такое на C++ программируется?Можно, но только для одного окна (для каждого инструмента запускаете свою панель). А на СИ одна панель для любого активного окна.Тут была панель с открытым кодом. То, что надо! спасибо! Только еще вопрос, можно ведь будет в панели реализовать трал по эквити? Он ведь будет брать данные со всего торгового счета... Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 19 августа, 2015 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 августа, 2015 mark4431 эта торговая панель по сути - обычный советник, поэтому можно пихать туда всё, что угодно (всё, что понапихано в другие советники). 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти