dermitay Опубликовано 9 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 февраля, 2016 ну на самом деле тут уже надо ковырять логику, чего ты хочешь? считаешь ли ты "новой неделей" четверг если в среду торговля была по золоту выключена? ну и так далее. привязывайся ко времени на младших ТФ, вычисляй разницу между барами с привязкой к младшему ТФ(к примеру в одном дне 24 бара н1, 48 баров м30, 96 баров м15 и так далее), контролируй корректность вычисления "начала".это не невыполнимая задача, а голая математика. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 9 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 февраля, 2016 AndreyGold ситуацию с металлами не изучал, но торги начинаются примерно одинаково в каждую неделю и в зависимости от ГМТ брокера это или вск или пнд. Я искал разрывы котировок и проверял их (на возможные дыры в истории), если разрыв подходил в параметры начала недели - торговлю разрешал. Этот подход работает на валютах нареканий на сову нет уже долго...Гриб к посту dermitay добавлю, вместо условия : TimeHour(TimeCurrent()) == HourStopя бы использовал: Hour() >= HourStop - если потом настройки окончания торгов поменяете на 19, то после 20 бот сможет опять открыть сделки... Изменено 9 февраля, 2016 пользователем 0ll 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Pioner_rus Опубликовано 9 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 февраля, 2016 А как бы ещё какой-нибудь текст на график вывести, типа Comment, в левом верхнем углу? Ссылка на сообщение Поделиться на другие сайты More sharing options...
dermitay Опубликовано 9 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 февраля, 2016 А как бы ещё какой-нибудь текст на график вывести, типа Comment, в левом верхнем углу? 1. создай индюк,2. в нем пропиши что надо в коменте. 3. индюк кинь на график с подгружаемым темплейтом.4. темплейт пересохрани.5. профит!!! 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
erkon Опубликовано 9 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 февраля, 2016 УЛУЧШАЕМ ИНДИКАТОРЫ для контроля тренда.Есть несколько действенных индикаторов для контроля тенденций/тренда требующие некоторого пользовательского улучшения.Просьба оказать посильную помощь в их доработке. >:d---1. Инд. slope_direction_line.mq4 . Просьба добавить во Входные параметры (настройки) следующее:---1. Сдвиг -/+ по типу МА (это Главная задача - сначала это + то, что дастся сразу, потом остальное! )Ещё: Спойлер 2. Отключаемые алерты и Стрелки (с настройкой отступа от свечей) . 3. Подписать в коде памятку, комментариями, рядом со строками отвечающего кода,лучше вывести подписи в панель, что значат/дают настройки, их числа:Ещё лучше: вывести в панель настройки Метод МА и Применить к: ... с выбором - как в оригинальном МА от МТ4.4. Если удастся, добавить цветную "зону перехода" - на изгибах линии (при замедлении, смене направления) , из 2-х частей, с настройкой толщины и отдельными цветами:по умолч., на начале и завершении спада - Gold, на начале и завершении роста - Aqua5. Сделать MTF версию. slope_direction_line.mq4 Изменено 9 февраля, 2016 пользователем erkon 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 9 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 февраля, 2016 Посетила мысля как решить проблему цены начала недели на текущем ТФ. Делаем перебор - отматываем назад цикл от текущего бара до бара, где номер дня недели , меньше чем номер дня недели предыдущего бара. (через TimeDayOfWeek)Это и будет началом недели. Так мы решим проблему новогодних периодических сбоев по валютам и более частых сбоев по металлам в этом вопросе. Изменено 9 февраля, 2016 пользователем AndreyGold 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
dermitay Опубликовано 9 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 февраля, 2016 Посетила мысля как решить проблему цены начала недели на текущем ТФ. Делаем перебор - отматываем назад цикл от текущего бара до бара, где номер дня недели , меньше чем номер дня недели предыдущего бара. (через TimeDayOfWeek)Это и будет началом недели. Так мы решим проблему новогодних периодических сбоев по валютам и более частых сбоев по металлам в этом вопросе. я тебе об этом и говорил, но я хз как там у вас, может дневные бары тоже глючат, поэтому и предлагал еще более младшие ТФ. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 9 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 февраля, 2016 Посетила мысля как решить проблему цены начала недели на текущем ТФ. Делаем перебор - отматываем назад цикл от текущего бара до бара, где номер дня недели , меньше чем номер дня недели предыдущего бара. (через TimeDayOfWeek)Это и будет началом недели. Так мы решим проблему новогодних периодических сбоев по валютам и более частых сбоев по металлам в этом вопросе. я тебе об этом и говорил, но я хз как там у вас, может дневные бары тоже глючат, поэтому и предлагал еще более младшие ТФ. Ну кстати да, на текущем ТФ :1 вычисляем от текущем бара ориентир бара начала недели через "(к примеру в одном дне 24 бара н1, 48 баров м30, 96 баров м15 и так далее)"2 сравниваем номер дня недели на ориентире с номером дня недели предыдущего бара3 если номер дня недели не меньше, то перебором идем вперед к текущей дате и ищем два бара подряд, на предмет уменьшения дня недели.Так будет побыстрее, чем перебор циклом всех баров назад Ссылка на сообщение Поделиться на другие сайты More sharing options...
dermitay Опубликовано 9 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 февраля, 2016 ну я так и делал пару-тройку лет назад, именно так я и искал хаи/лои, пока не узнал о волшебных iLowest и iHighest :)) :d 8-} 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
SuTeRR Опубликовано 9 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 февраля, 2016 Добавил сдвиг и для удобства цифры заменил на константы ;) slope_direction_line_m01.mq4 Изменено 10 февраля, 2016 пользователем Старик 5 Ссылка на сообщение Поделиться на другие сайты More sharing options...
M1ckey M0u5e Опубликовано 9 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 февраля, 2016 для мах/мин всегда использую встроенные МКЛ функции типа: iHighest ( NULL, 0, MODE_HIGH, BarCount, 0 ) ; Спасибо, получилось. Была задача в нахождении не только минимумом/максимумом, но и минимальных/максимальных цен закрытия бара за n период, причём начиная не с последнего бара. И код красивый и удобно. ;) M1ckey M0u5e, в учебнике по MQL есть изящный код: //+------------------------------------------------------------------+extern int Quant_Bars =19; // Количество баров // Определяем Макс и Мин цены int i; //Номер бара double Maximum=Bid; //Максимальная цена double Minimum=Bid; //Минимальная цена for(i=0; i { if(High>Maximum) Maximum=High; if(Low Minimum=Low; } Alert("За последние ", Quant_Bars, " баров Мах = ",Maximum,", Мin = ", Minimum); Код работает, но чёт у меня не получилось сделать так, чтобы он "запускал цикл" поиска экстремумов не с последнего бара а с заданной свечи. Верхний вариант проще. Ссылка на сообщение Поделиться на другие сайты More sharing options...
JR Опубликовано 9 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 февраля, 2016 Вот такая очередная задачка: пытаюсь заставить своего мультивалютного сеточника избегать корреляции по долларовым парам. Т.е., если открыты какие либо позиции с USD - новых не открываем. Накропал вот такую функцию: bool CheckUSDcorrelation() //проверяем наличие в рынке USD пар - если их нету, возвращаем true { if (OrdersTotal() == 0) return(true); string sym = "USD"; if (StringFind(StringToUpper(Symbol()), sym, 0) > 0) { for (int i = OrdersTotal() - 1; i >= 0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (StringFind(StringToUpper(OrderSymbol()), sym, 0) > 0) return(false); } } }return(true); } Стал тестить - работает как-то коряво. То вроде нормально отрабатывает, то нет. Сегодня например была в работе USDCHF, через какое-то время открыл EURUSD. А до этого тестил - вроде нормально, пока в рынке одна USD-пара, другие не открывались. Входы индикаторные, не частые, так что одновременное открытие тут большая редкость. Есть идеи? Может это вообще можно по-другому реализовать? Ссылка на сообщение Поделиться на другие сайты More sharing options...
dermitay Опубликовано 9 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 февраля, 2016 У тебя ошибка.StringFind() например для USDCAD находит подстроку и... возвращает ноль, ведь функция возвращает именно позицию начала подстроки.В выражении где StringFind выстави нестрогое сравнение. Не ">" а ">=".Незачто, я на парсинге строк собаку съел))И убери этот стрингтуаппер, он тут вобще не нужен.А еще почитай "про это"... Работает и у нас на мт4. 3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 10 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 февраля, 2016 Вот пример работы тру-ЕЦН:на картинке ниже Вы видите несколько сделок Селл, на самом деле их 2 по 0,03 лота1 ордер открылся и закрылся штатно2 ордер открылся лотом 0,01 (из запрашиваемых 0,03), потом при очередном возврате цены к уровню открытия (прошло более 25 мин!) брокер до-открыл ещё 2 ордера по 0,01 лота - такая вот доливочка...всё закрылось штатно, моя прога уже готова к таким поворотам. - а Ваша готова? тогда ЕЦН идёт к Вам! v:)ПС: это я к разговору со Стариком об учёте ордеров в сетках... FxOpen-ECN-demo-3ord.png Изменено 10 февраля, 2016 пользователем 0ll 5 Ссылка на сообщение Поделиться на другие сайты More sharing options...
dermitay Опубликовано 10 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 февраля, 2016 Oll, да, прикольный алгоритм ты придумал. только как часто цена возвращается к твоей цене открытия первого ордера лотом 0,01 - вопрос.или это шутка такая? у меня бывают глюки визуализации и истории когда применяешь CloseBy() - частичное закрытие ордера. Изменено 10 февраля, 2016 пользователем dermitay Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 10 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 февраля, 2016 dermitay это не я придумал - сова послала брокеру ордер 0,03, а брокер его исполнил "как смог".Просто в случае сетки этот момент надо учитывать, а не тупо колени считать...ПС: да какие шутки? это только последний случай - особенный (большой временной разрыв), а вообще я такое регулярно наблюдаю... Ссылка на сообщение Поделиться на другие сайты More sharing options...
dermitay Опубликовано 10 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 февраля, 2016 dermitay это не я придумал - сова послала брокеру ордер 0,03, а брокер его исполнил "как смог".Просто в случае сетки этот момент надо учитывать, а не тупо колени считать...ПС: да какие шутки? это только последний случай - особенный (большой временной разрыв), а вообще я такое регулярно наблюдаю... ты считаешь что надо изгаляться с расчетом веса текущей сетки в лотах, вычислять недостающую разницу и исполнять ее? не проще найти нормального брокера, где нет таких причуд, которые ты показал.имхо, увидя такое, я бы валил первым рейсом из этой конторы. ты как бы пойми саму глубинную суть ECN - тебе предоставляют самое быстрое исполнение и самые "чистые" котировки одного или нескольких поставщиков ликвидности. но твой ордерок(заявка - приказ) дальше этого брокера не уйдет. ты все равно варишься внутри кухни, с своими лотами 0,01 тебя не пустят ни на одну мировую биржу, там лотность должна быть как минимум 1000 и плечо 1:1 ))это тебе к тому что сам брокер может "оправдываться" тем что мол мы послали заявку "куда-то там на мировую биржу"- но она выставилась у дилинга как лимитка а не как чистый селл. Изменено 10 февраля, 2016 пользователем dermitay Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 10 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 февраля, 2016 dermitay это не я придумал - сова послала брокеру ордер 0,03, а брокер его исполнил "как смог".Просто в случае сетки этот момент надо учитывать, а не тупо колени считать...ПС: да какие шутки? это только последний случай - особенный (большой временной разрыв), а вообще я такое регулярно наблюдаю... ты считаешь что надо изгаляться с расчетом веса текущей сетки в лотах, вычислять недостающую разницу и исполнять ее? не проще найти нормального брокера, где нет таких причуд, которые ты показал.имхо, увидя такое, я бы валил первым рейсом из этой конторы.Да нет. я так не считаю. Я такое видел у всех ецн брокеров - куда валить? в кухню? И изгаляться не надо. Брокер или сам дооткроет или нет. просто учёт в случае сетки надо вести не по количество ордеров. Я сделал по уровням усреднения и если открытый ордер не той лотности надо ждать дооткрытия (в моём случае) или хз что делать...Да с биржей понятно... у конторы будет суммарная позиция. Конторы меж собою их кроют на биржу никто не выводит (если только суммарная поза не превысит некий порог). Я о другом - такие финты возможны и сова должна быть готова... Изменено 10 февраля, 2016 пользователем 0ll Ссылка на сообщение Поделиться на другие сайты More sharing options...
dermitay Опубликовано 10 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 февраля, 2016 Да нет. я так не считаю. Я такое видел у всех ецн брокеров - куда валить? в кухню? И изгаляться не надо. Брокер или сам дооткроет или нет. просто учёт в случае сетки надо вести не по количество ордеров. Я сделал по уровням усреднения и если открытый ордер не той лотности надо ждать дооткрытия (в моём случае) или хз что делать... ну... ты ж когда посылаешь ордер сенд тебе возвратом идет тикет этого нового ордера, можно да, сразу же проверить его лотность, и если не совпадает с переменной лотности(у тебя считай все переменные под рукой, ведь ты их только что подготовил к отправке ОрдерСендом), то выбрасывать какую-либо булевую пеменную, означающую блок торгов или увеличение недостающей лотности в ордере на следующем колене.ЗЫ: у тикмила я таких глюков ни разу не наблюдал. у 4ю(счет ProSTP) тоже. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 10 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 февраля, 2016 ЗЫ: у тикмила я таких глюков ни разу не наблюдал. у 4ю(счет ProSTP) тоже.Если-б не было-бы глюка - жизнь была-б такая скука... :d 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Nicole White Опубликовано 10 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 февраля, 2016 Взялась за древнее ископаемое задание. Больно не бейте ибо блондинка и нуб x_x Цитата Создайте и заполните массив с максимальными ценами за последние X баров(указать как внешний параметр). Значения массива вывести на экрантерминала. Результат выводится в виде "номер бара цена", т.е.0 1.1222, 1 1.1223, 2 1.2455 ... Как сделать чтобы выводилось в обратном порядке? Т.е. сначала бар N, а в конце нулевой? 2 1.2455, 1 1.1223, 0 1.1222 ...Так было бы логичней - самый "свежий" бар самый правый и строке коммента так же. Test1.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Arius777 Опубликовано 10 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 февраля, 2016 Цитата Как сделать чтобы выводилось в обратном порядке? Т.е. сначала бар N, а в конце нулевой? Nicole, просто в цикле for для Вашей переменной str начните перебирать не с i=0, а с i=50 и в обратную сторону. И попробуйте еще для тренировки вот это число баров (50) :-? задать как переменную, голых вводов цифр Павел не советовал делать, что в принципе правильно 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
dermitay Опубликовано 10 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 февраля, 2016 А можно перед циклом "развернуть массив" через ArraySetAsSeries(), а после цикла опять его вернуть в исходное состояние))Вобще вариаций много) Задача напоминает "как добраться от ВДНХ до Рижской самым длинным путём" :d :)) 3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Nicole White Опубликовано 10 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 февраля, 2016 Цитата Как сделать чтобы выводилось в обратном порядке? Т.е. сначала бар N, а в конце нулевой? Nicole, просто в цикле for для Вашей переменной str начните перебирать не с i=0, а с i=50 и в обратную сторону. И попробуйте еще для тренировки вот это число баров (50) :-? задать как переменную, голых вводов цифр Павел не советовал делать, что в принципе правильно Дело в том, друг, что при обратном отсчете в цикле строка не выводится вообще. Я уже третий вечер с этой штукой воюю. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 10 февраля, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 февраля, 2016 Nicole White задачка не сложная, но в этом топике помогают учиться, а не дают готовые решения. Все подсказки Вами получены, надо внимательно реализовать. Вы как строку формируете? У Вас один цикл для заполнения массива и формирования строки или 2 отдельных? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти