ну на самом деле тут уже надо ковырять логику, чего ты хочешь? считаешь ли ты "новой неделей" четверг если в среду торговля была по золоту выключена? ну и так далее. привязывайся ко времени на младших ТФ, вычисляй разницу между барами с привязкой к младшему ТФ(к примеру в одном дне 24 бара н1, 48 баров м30, 96 баров м15 и так далее), контролируй корректность вычисления "начала".
это не невыполнимая задача, а голая математика.
Обучение языку MQL4 под MetaTrader 4📌
От xbms, 13 апреля, 2013 в Уголок Программиста
Гриб к посту dermitay добавлю, вместо условия : TimeHour(TimeCurrent()) == HourStop
я бы использовал: Hour() >= HourStop - если потом настройки окончания торгов поменяете на 19, то после 20 бот сможет опять открыть сделки...
Изменено 9 февраля, 2016 пользователем 0ll
А как бы ещё какой-нибудь текст на график вывести, типа Comment, в левом верхнем углу?
А как бы ещё какой-нибудь текст на график вывести, типа Comment, в левом верхнем углу?
1. создай индюк,
2. в нем пропиши что надо в коменте.
3. индюк кинь на график с подгружаемым темплейтом.
4. темплейт пересохрани.
5. профит!!!
Есть несколько действенных индикаторов для контроля тенденций/тренда требующие некоторого пользовательского улучшения.
Просьба оказать посильную помощь в их доработке. >:d
---
1. Инд. slope_direction_line.mq4 . Просьба добавить во Входные параметры (настройки) следующее:
---
1. Сдвиг -/+ по типу МА (это Главная задача - сначала это + то, что дастся сразу, потом остальное! )

Ещё:
2. Отключаемые алерты и Стрелки (с настройкой отступа от свечей) .
3. Подписать в коде памятку, комментариями, рядом со строками отвечающего кода,
лучше вывести подписи в панель, что значат/дают настройки, их числа:
Ещё лучше: вывести в панель настройки Метод МА и Применить к: ... с выбором - как в оригинальном МА от МТ4.
4. Если удастся, добавить цветную "зону перехода" - на изгибах линии (при замедлении, смене направления) ,
из 2-х частей, с настройкой толщины и отдельными цветами:
по умолч., на начале и завершении спада - Gold, на начале и завершении роста - Aqua
5. Сделать MTF версию.
Изменено 9 февраля, 2016 пользователем erkon
Посетила мысля как решить проблему цены начала недели на текущем ТФ.
Делаем перебор - отматываем назад цикл от текущего бара до бара, где номер дня недели , меньше чем номер дня недели предыдущего бара. (через TimeDayOfWeek)
Это и будет началом недели.
Так мы решим проблему новогодних периодических сбоев по валютам и более частых сбоев по металлам в этом вопросе.
Изменено 9 февраля, 2016 пользователем AndreyGold
Посетила мысля как решить проблему цены начала недели на текущем ТФ.
Делаем перебор - отматываем назад цикл от текущего бара до бара, где номер дня недели , меньше чем номер дня недели предыдущего бара. (через TimeDayOfWeek)
Это и будет началом недели.
Так мы решим проблему новогодних периодических сбоев по валютам и более частых сбоев по металлам в этом вопросе.
я тебе об этом и говорил, но я хз как там у вас, может дневные бары тоже глючат, поэтому и предлагал еще более младшие ТФ.
Посетила мысля как решить проблему цены начала недели на текущем ТФ.
Делаем перебор - отматываем назад цикл от текущего бара до бара, где номер дня недели , меньше чем номер дня недели предыдущего бара. (через TimeDayOfWeek)
Это и будет началом недели.
Так мы решим проблему новогодних периодических сбоев по валютам и более частых сбоев по металлам в этом вопросе.
я тебе об этом и говорил, но я хз как там у вас, может дневные бары тоже глючат, поэтому и предлагал еще более младшие ТФ.
Ну кстати да, на текущем ТФ :
1 вычисляем от текущем бара ориентир бара начала недели через "(к примеру в одном дне 24 бара н1, 48 баров м30, 96 баров м15 и так далее)"
2 сравниваем номер дня недели на ориентире с номером дня недели предыдущего бара
3 если номер дня недели не меньше, то перебором идем вперед к текущей дате и ищем два бара подряд, на предмет уменьшения дня недели.
Так будет побыстрее, чем перебор циклом всех баров назад
ну я так и делал пару-тройку лет назад, именно так я и искал хаи/лои, пока не узнал о волшебных iLowest и iHighest :)) :d 8-}
Добавил сдвиг и для удобства цифры заменил на константы ;)
Изменено 10 февраля, 2016 пользователем Старик
Спасибо, получилось. Была задача в нахождении не только минимумом/максимумом, но и минимальных/максимальных цен закрытия бара за n период, причём начиная не с последнего бара. И код красивый и удобно. ;)
для мах/мин всегда использую встроенные МКЛ функции типа: iHighest ( NULL, 0, MODE_HIGH, BarCount, 0 ) ;
Код работает, но чёт у меня не получилось сделать так, чтобы он "запускал цикл" поиска экстремумов не с последнего бара а с заданной свечи. Верхний вариант проще.
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);
Вот такая очередная задачка: пытаюсь заставить своего мультивалютного сеточника избегать корреляции по долларовым парам. Т.е., если открыты какие либо позиции с 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-пара, другие не открывались. Входы индикаторные, не частые, так что одновременное открытие тут большая редкость. Есть идеи? Может это вообще можно по-другому реализовать?
У тебя ошибка.
StringFind() например для USDCAD находит подстроку и... возвращает ноль, ведь функция возвращает именно позицию начала подстроки.
В выражении где StringFind выстави нестрогое сравнение. Не ">" а ">=".
Незачто, я на парсинге строк собаку съел))
И убери этот стрингтуаппер, он тут вобще не нужен.
А еще почитай "про это"... Работает и у нас на мт4.
Вот пример работы тру-ЕЦН:
на картинке ниже Вы видите несколько сделок Селл, на самом деле их 2 по 0,03 лота
1 ордер открылся и закрылся штатно
2 ордер открылся лотом 0,01 (из запрашиваемых 0,03), потом при очередном возврате цены к уровню открытия (прошло более 25 мин!) брокер до-открыл ещё 2 ордера по 0,01 лота - такая вот доливочка...
всё закрылось штатно, моя прога уже готова к таким поворотам. - а Ваша готова? тогда ЕЦН идёт к Вам! v:)
ПС: это я к разговору со Стариком об учёте ордеров в сетках...
Изменено 10 февраля, 2016 пользователем 0ll
или это шутка такая? у меня бывают глюки визуализации и истории когда применяешь CloseBy() - частичное закрытие ордера.
Изменено 10 февраля, 2016 пользователем dermitay
Просто в случае сетки этот момент надо учитывать, а не тупо колени считать...
ПС: да какие шутки? это только последний случай - особенный (большой временной разрыв), а вообще я такое регулярно наблюдаю...
dermitay это не я придумал - сова послала брокеру ордер 0,03, а брокер его исполнил "как смог".
Просто в случае сетки этот момент надо учитывать, а не тупо колени считать...
ПС: да какие шутки? это только последний случай - особенный (большой временной разрыв), а вообще я такое регулярно наблюдаю...
ты считаешь что надо изгаляться с расчетом веса текущей сетки в лотах, вычислять недостающую разницу и исполнять ее? не проще найти нормального брокера, где нет таких причуд, которые ты показал.
имхо, увидя такое, я бы валил первым рейсом из этой конторы.
ты как бы пойми саму глубинную суть ECN - тебе предоставляют самое быстрое исполнение и самые "чистые" котировки одного или нескольких поставщиков ликвидности. но твой ордерок(заявка - приказ) дальше этого брокера не уйдет. ты все равно варишься внутри кухни, с своими лотами 0,01 тебя не пустят ни на одну мировую биржу, там лотность должна быть как минимум 1000 и плечо 1:1 ))
это тебе к тому что сам брокер может "оправдываться" тем что мол мы послали заявку "куда-то там на мировую биржу"- но она выставилась у дилинга как лимитка а не как чистый селл.
Изменено 10 февраля, 2016 пользователем dermitay
Да нет. я так не считаю. Я такое видел у всех ецн брокеров - куда валить? в кухню? И изгаляться не надо. Брокер или сам дооткроет или нет. просто учёт в случае сетки надо вести не по количество ордеров. Я сделал по уровням усреднения и если открытый ордер не той лотности надо ждать дооткрытия (в моём случае) или хз что делать...
dermitay это не я придумал - сова послала брокеру ордер 0,03, а брокер его исполнил "как смог".
Просто в случае сетки этот момент надо учитывать, а не тупо колени считать...
ПС: да какие шутки? это только последний случай - особенный (большой временной разрыв), а вообще я такое регулярно наблюдаю...
ты считаешь что надо изгаляться с расчетом веса текущей сетки в лотах, вычислять недостающую разницу и исполнять ее? не проще найти нормального брокера, где нет таких причуд, которые ты показал.
имхо, увидя такое, я бы валил первым рейсом из этой конторы.
Да с биржей понятно... у конторы будет суммарная позиция. Конторы меж собою их кроют на биржу никто не выводит (если только суммарная поза не превысит некий порог). Я о другом - такие финты возможны и сова должна быть готова...
Изменено 10 февраля, 2016 пользователем 0ll
Да нет. я так не считаю. Я такое видел у всех ецн брокеров - куда валить? в кухню? И изгаляться не надо. Брокер или сам дооткроет или нет. просто учёт в случае сетки надо вести не по количество ордеров. Я сделал по уровням усреднения и если открытый ордер не той лотности надо ждать дооткрытия (в моём случае) или хз что делать...
ну... ты ж когда посылаешь ордер сенд тебе возвратом идет тикет этого нового ордера, можно да, сразу же проверить его лотность, и если не совпадает с переменной лотности(у тебя считай все переменные под рукой, ведь ты их только что подготовил к отправке ОрдерСендом), то выбрасывать какую-либо булевую пеменную, означающую блок торгов или увеличение недостающей лотности в ордере на следующем колене.
ЗЫ: у тикмила я таких глюков ни разу не наблюдал. у 4ю(счет ProSTP) тоже.
Если-б не было-бы глюка - жизнь была-б такая скука... :d
ЗЫ: у тикмила я таких глюков ни разу не наблюдал. у 4ю(счет ProSTP) тоже.
Взялась за древнее ископаемое задание. Больно не бейте ибо блондинка и нуб x_x
ЦитатаСоздайте и заполните массив с максимальными ценами за последние X баров
(указать как внешний параметр). Значения массива вывести на экран
терминала.
Результат выводится в виде "номер бара цена", т.е.
0 1.1222, 1 1.1223, 2 1.2455 ...
Как сделать чтобы выводилось в обратном порядке? Т.е. сначала бар N, а в конце нулевой?
2 1.2455, 1 1.1223, 0 1.1222 ...
Так было бы логичней - самый "свежий" бар самый правый и строке коммента так же.
ЦитатаКак сделать чтобы выводилось в обратном порядке? Т.е. сначала бар N, а в конце нулевой?
Nicole, просто в цикле for для Вашей переменной str начните перебирать не с i=0, а с i=50 и в обратную сторону. И попробуйте еще для тренировки вот это число баров (50) :-? задать как переменную, голых вводов цифр Павел не советовал делать, что в принципе правильно
А можно перед циклом "развернуть массив" через ArraySetAsSeries(), а после цикла опять его вернуть в исходное состояние))
Вобще вариаций много) Задача напоминает "как добраться от ВДНХ до Рижской самым длинным путём" :d :))
ЦитатаКак сделать чтобы выводилось в обратном порядке? Т.е. сначала бар N, а в конце нулевой?
Nicole, просто в цикле for для Вашей переменной str начните перебирать не с i=0, а с i=50 и в обратную сторону. И попробуйте еще для тренировки вот это число баров (50) :-? задать как переменную, голых вводов цифр Павел не советовал делать, что в принципе правильно
Дело в том, друг, что при обратном отсчете в цикле строка не выводится вообще. Я уже третий вечер с этой штукой воюю.
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем