ss83 Опубликовано 16 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 ноября, 2016 Спасибо за подсказку Ссылка на сообщение Поделиться на другие сайты More sharing options...
afert Опубликовано 17 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 ноября, 2016 Помогите, кому не трудно написать условие для входа допустим в sell: анализируем 2 свечи, первая должна закрыться за линией болинджера MODE_UPPER (то есть свеча бычья), вторая свеча должна быть медвежья независимо от линии и на закрытии этой свечи вход. Заранее спасибо. Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 17 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 ноября, 2016 Помогите, кому не трудно написать условие для входа допустим в sell: анализируем 2 свечи, первая должна закрыться за линией болинджера MODE_UPPER (то есть свеча бычья), вторая свеча должна быть медвежья независимо от линии и на закрытии этой свечи вход. Заранее спасибо. Как-то так :if( (iOpen(NULL,0,2) iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_UPPER,2)> iClose(NULL,0,2)) && (iOpen(NULL,0,1)>iClose(NULL,0,1) ){ .... Открытие ордера}Добавлено: 17-11-2016 13:22:44Спасибо, vitek01И снова нужна помощь по этому же уроку. В Дом.Зад. нужно, чтобы советник закрывал все открытые им ордера при достижении определенного убытка в пунктах. Подскажите, как это реализовать, или хотя бы откуда начинать "копать"? Организуется цикл, который по перебирает все ордера, открытые этим советником (проверяет по меджику).Считается разница между текущей ценой и ценой открытия ордера - результаты всех ордеров суммируются.Если сумма больше определенного убытка - получаем сигнал на закрытие.Организуем второй цикл, где все ордера с нашим меджиком закрываютсяДобавлено: 17-11-2016 14:05:18 alex161271 У вас в условии уже "цикл" заложен, который выполняется с каждым тиком "Удаляем противоположный ордер - Открываем новый "на следующем тике опять "Удаляем противоположный ордер - Открываем новый" и тд и тп Изменено 17 ноября, 2016 пользователем AndreyGold 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sergey Forex Опубликовано 17 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 ноября, 2016 Подскажите пожалуйста, как можно подсчитать профит за определенный период, например за последнюю неделю? Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 17 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 ноября, 2016 Подскажите пожалуйста, как можно подсчитать профит за определенный период, например за последнюю неделю? Если в тестере - то по ходу запоминаем Баланс на начало недели, через AccountBalance()и смотрим результат на конец недели. Если на какой-то текущий момент на реале то внутри необходимого интервала дат перебираются итоги всех задействованных ордеров и через OrderProfit(), OrderSwap(), OrderCommission() по каждому ордеру высчитывается итог каждого ордера ну и соответственно интересующего нас периода. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sergey Forex Опубликовано 17 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 ноября, 2016 Подскажите пожалуйста, как можно подсчитать профит за определенный период, например за последнюю неделю? Если в тестере - то по ходу запоминаем Баланс на начало недели, через AccountBalance()и смотрим результат на конец недели. Если на какой-то текущий момент на реале то внутри необходимого интервала дат перебираются итоги всех задействованных ордеров и через OrderProfit(), OrderSwap(), OrderCommission() по каждому ордеру высчитывается итог каждого ордера ну и соответственно интересующего нас периода. Спасибо. Я так и мыслю. Только как задать даты интервала? Пробовал через int day = TimeDay(TimeCurrent()); возвращает текущую дату. А как получить например понедельник 14.11.2016? Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 17 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 ноября, 2016 Спойлер Подскажите пожалуйста, как можно подсчитать профит за определенный период, например за последнюю неделю? Если в тестере - то по ходу запоминаем Баланс на начало недели, через AccountBalance()и смотрим результат на конец недели. Если на какой-то текущий момент на реале то внутри необходимого интервала дат перебираются итоги всех задействованных ордеров и через OrderProfit(), OrderSwap(), OrderCommission() по каждому ордеру высчитывается итог каждого ордера ну и соответственно интересующего нас периода. Спасибо. Я так и мыслю. Только как задать даты интервала? Пробовал через int day = TimeDay(TimeCurrent()); возвращает текущую дату. А как получить например понедельник 14.11.2016? Сергей Есть функция TimeDayOfWeek() возвращает день недели указанной даты в нее загоняете TimeDay(TimeCurrent()) и минусуя разницу между текущим днем недели и понедельником получаетедату понедельника 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
alex161271 Опубликовано 17 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 ноября, 2016 alex161271 У вас в условии уже "цикл" заложен, который выполняется с каждым тиком "Удаляем противоположный ордер - Открываем новый "на следующем тике опять "Удаляем противоположный ордер - Открываем новый" и тд и тп По идее, если условие не верно, то удаляться не должен. Подскажите пожалуйста как от этого избавиться перепробовал разные варианты, ничего не выходит. Изменено 17 ноября, 2016 пользователем alex161271 Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 18 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 18 ноября, 2016 alex161271 У вас в условии уже "цикл" заложен, который выполняется с каждым тиком "Удаляем противоположный ордер - Открываем новый "на следующем тике опять "Удаляем противоположный ордер - Открываем новый" и тд и тп По идее, если условие не верно, то удаляться не должен. Подскажите пожалуйста как от этого избавиться перепробовал разные варианты, ничего не выходит. Какое условие неверно ? Подход такой :Я так понимаю у вас не должен удаляться ордер, если он уже был открыт с удвоенным лотом. Вы переменную вначале программы объявите тип bool со значением false, как только произошло переоткрытие ордера ставим ей true и обнуляем эту переменную если первый ордер закроется (это надо отдельно проверять). А в ветке программы где переоткрывается ордер ставим допусловие для входа по значению этой переменной false. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Александр_F Опубликовано 18 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 18 ноября, 2016 Здравствуйте трейдеры. У меня к вам вопрос касательно уровня БУ. Я при создании прикрепленного ниже советника решил добавить в него данную функцию, однако в связи с его спецификой у меня возникли трудности ее применения. В интернете решение этой проблемы отсутствует. Буду благодарен вам за помощь в разрешении этой проблемы. P.S. Более подробное описание всех функций и характеристик записаны внутри. Советник.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
vitek01 Опубликовано 19 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 ноября, 2016 Здравствуйте трейдеры. У меня к вам вопрос касательно уровня БУ. Я при создании прикрепленного ниже советника решил добавить в него данную функцию, однако в связи с его спецификой у меня возникли трудности ее применения. В интернете решение этой проблемы отсутствует. Буду благодарен вам за помощь в разрешении этой проблемы. P.S. Более подробное описание всех функций и характеристик записаны внутри. Я такого замудренного кода еще не видел, пытался разобратся но как в анегдоте про фоменко: я бросал пить, бросал бросал, да и бросил бросать пить(может я просто такой тугодум). Все переменные с манипуляциями цен нужно нормализовывать обязательно через - NormalizeDouble(); Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 19 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 ноября, 2016 Спойлер Здравствуйте трейдеры. У меня к вам вопрос касательно уровня БУ. Я при создании прикрепленного ниже советника решил добавить в него данную функцию, однако в связи с его спецификой у меня возникли трудности ее применения. В интернете решение этой проблемы отсутствует. Буду благодарен вам за помощь в разрешении этой проблемы. P.S. Более подробное описание всех функций и характеристик записаны внутри. Александр_F Я вижу две ошибки. У Вас BU Задается как 30 по умолчанию, затем вы его при инициализации зачем-то два раза (????) умножаете на 10. А при проверке надобности установки БУ Вы BULevel берете и вычитаете (или складываете) с ценой Bid или Ask (они из себя представляют X.XXXXX (для пятизнака) и тд и тп). Вы к виду цены через умножение на _Point забыли привести. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
RichLux Опубликовано 19 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 ноября, 2016 Организуется цикл, который по перебирает все ордера, открытые этим советником (проверяет по меджику).Считается разница между текущей ценой и ценой открытия ордера - результаты всех ордеров суммируются.Если сумма больше определенного убытка - получаем сигнал на закрытие.Организуем второй цикл, где все ордера с нашим меджиком закрываются Добавлено: 17-11-2016 14:05:18 alex161271 У вас в условии уже "цикл" заложен, который выполняется с каждым тиком "Удаляем противоположный ордер - Открываем новый "на следующем тике опять "Удаляем противоположный ордер - Открываем новый" и тд и тп Спасибо! Очень помогли!Сейчас занимаюсь следующим - пятым уроком. Здесь снова вопрос. В ДЗ нужно включать ТрейлингСтоп, опираясь на фракталы. Фракталы рисуют стрелочки вверх и вниз.Как объяснить советнику, что когда стрелочка вверх, то покупаем, а когда вниз - продаем. И что делаем это именно на N баре, после стрелочки? Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 20 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 ноября, 2016 RichLux Есть функция https://docs.mql4.com/ru/indicators/ifractals в ней все есть и номер бара и тип фрактала - почитайте. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Richie Rich Опубликовано 20 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 ноября, 2016 Ребят, подскажите пожалуйста.Есть некий советник, выглядящий следующим образом: Цитата void OnTick() { OrderSend(бла-бла-бла); } И если поставить его на график - немедленно произойдёт открытие ордера.Вопрос в следующем. Как сделать так, что б работа советника начиналась со следующей свечи.А текущую игнорировать и не рассматривать.Суть в том чтобы робот начал работать и искать условия для входа, на следующих свечах, а не открывал сразу же ордер, после установки его на график. Надеюсь внятно изложил. :-? Изменено 20 ноября, 2016 пользователем Richie Rich Ссылка на сообщение Поделиться на другие сайты More sharing options...
vitek01 Опубликовано 20 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 ноября, 2016 Вот например не самый удачный пример, но работаетDateTime T;bool work=0;void OnInit(){ T=iTime(Sym,Period(),0);}void OnTick(){ if(iTime(Sym(),Period,0) > T) work=true; if(work==true) { OrderSend(бла-бла-бла); }} 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Александр_F Опубликовано 20 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 ноября, 2016 AndreyGold Большое Спасибо вам за помощь! Я принял во внимание ваши советы, с нетерпением жду открытия рынка Ссылка на сообщение Поделиться на другие сайты More sharing options...
Richie Rich Опубликовано 20 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 ноября, 2016 vitek01, большое спасибо! =d> =d> =d>Поправив синтаксис ваш код принимает такой рабочий вид: Цитата datetime T; bool Work = 0;void OnInit() { T = iTime(Symbol(),Period(),0); }void OnTick() { if (iTime(Symbol(),Period(),0) > T) Work = 1; if (Work == 1) { bool x = OrderSend(бла-бла-бла); } } Ссылка на сообщение Поделиться на другие сайты More sharing options...
Viktor M. Опубликовано 21 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 ноября, 2016 xbms... Прекрасная подача учебного материала. Немногим Великим было дано. И ежели отрок посетил сию нишу, желание сиюминутное может оборотиться потребностью вопиющей. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Richie Rich Опубликовано 22 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 ноября, 2016 Товарищи программисты, подскажите пожалуйста.В данном советнике, при компиляции выскакивает два "жёлтых" предупреждения, связанных с выносом настроек индикатора во внешние переменные.Не могу придумать как от них избавится. На работу программы не влияют, а глаз мозолят. ~x( Спойлер Цитата Ссылка на сообщение Поделиться на другие сайты More sharing options...
Roman 13 Опубликовано 22 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 ноября, 2016 Здравствуйте подскажите как дописать код чтобы советник закрывал часть лота при достижении определенного кол-ва прибыли в пунктах ? Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 23 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 ноября, 2016 Здравствуйте подскажите как дописать код чтобы советник закрывал часть лота при достижении определенного кол-ва прибыли в пунктах ? Алгоритм - циклом перебираем все открытые ордера, считаем текущую прибыль в пунктах.При достижении заданного уровня прибыли через функцию OrderClose() закрываем "часть лота". Ссылка на сообщение Поделиться на другие сайты More sharing options...
Roman 13 Опубликовано 23 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 ноября, 2016 Извините а как это выглядит в коде ? Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 23 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 ноября, 2016 Как-то так : Спойлер double punktov=0;double nado puktov=0; // Количество пунктов, для определения частичного закрытияdouble Lot=1; // Количество лотов, которые надо закрыть у каждого ордераif(OrdersTotal()>0) { for(i=1;i { if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()=="OP_BUY") { punktov=punktov+(Bid-OrderOpenPrice())*_Digits; } if(OrderType()=="OP_SELL") { punktov=punktov+(OrderOpenPrice()-Ask)*_Digits; } } } if(punktov>=nado puktov) { for(i=1;i { if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()=="OP_BUY") { if(OrderClose(OrderTicket(), Lot, Bid, 0, clrGold)==0) Alert("Ошибка модификации лота"); } if(OrderType()=="OP_SELL") { if(OrderClose(OrderTicket(), Lot, Ask, 0, clrGold)==0) Alert("Ошибка модификации лота"); } } } } Изменено 23 ноября, 2016 пользователем AndreyGold Ссылка на сообщение Поделиться на другие сайты More sharing options...
SilverKZ Опубликовано 23 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 ноября, 2016 Товарищи программисты, подскажите пожалуйста.В данном советнике, при компиляции выскакивает два "жёлтых" предупреждения, связанных с выносом настроек индикатора во внешние переменные.Не могу придумать как от них избавится. На работу программы не влияют, а глаз мозолят. ~x( Спойлер Цитата избавилсяHigh-Low_EA_2.31.mq4 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти