Tâche terminée
Spécifications
Техническое задание.
Брокер https://gerchikco.com
Робот для торговли на демо и на реальном счете.
Робот присоединяется к каждому инструменту.
Только одна позиция одновременно в рынке по инструменту, к которому привязан робот. Даже если есть новые сигналы на вход.
Приоритет скорости исполнения сделок и точности работы всех параметров и функций.
Меню робота по пунктам сверху вниз с названиями и описанием функций и параметров. Если какой-то параметр не задан, значит, он не активен. При двойном нажатии в любой параметр меню робота, ранее указанное значение должно сразу же выделяться, чтобы сразу можно было вводить новое.
1.BuyLevel.
От этого уровня мы только покупаем. Указывается цена, например, 1,12253 на которой робот выставляет на графике уровень тонкой сплошной линией цвета LimeGreen. При касании данного уровня и закрытии выше уровня хотя бы на 1 тик свечей на рабочем ТФ, осуществляется вход в позицию по правилам:
1)Если свеча бычья, то вход на первом же тике следующей свечи.
2)Если свеча медвежья и имеет ранг ниже чем 3
(ранг 1 это самая большая свеча по ренжду в текущем дне по указанному у робота GTM, ранг меньше чем 3, это значит, что как минимум 3 свечи до этого в текущем дне по GTM робота, имеют рендж больше),
то она должна иметь полноту менее 65%. Это значит, что расстояние от хай до закрытия свечи, деленное на расстояние от хай до лоу свечи должно быть меньше 0,65.
3) Если свеча медвежья и имеет ранг 1-3, то она должна иметь полноту менее 85%. Это значит, что расстояние от хай до закрытия свечи, деленное на расстояние от хай до лоу свечи должно быть меньше 0,85.
При открытии позиции бай, она помечается маленькой зеленой (LimeGreen) стрелочкой слева направо. При закрытии позиции бай, она помечается зеленой стрелочкой справа налево.
2.SellLevel.
От этого уровня мы только продаем. Указывается цена, например, 1,12253 на которой робот выставляет на графике уровень тонкой сплошной линией цвета Red. При касании данного уровня и закрытии ниже уровня хотя бы на 1 тик свечей на рабочем ТФ, осуществляется вход в позицию по правилам:
1)Если свеча медвежья, то вход на первом же тике следующей свечи.
2)Если свеча бычья и имеет ранг ниже чем 3
(ранг 1 это самая большая свеча по ренжду в текущем дне по указанному у робота GTM, ранг меньше чем 3, это значит, что как минимум 3 свечи до этого в текущем дне по GTM робота, имеют рендж больше),
то она должна иметь полноту менее 65%. Это значит, что расстояние от лоу до закрытия свечи, деленное на расстояние от лоу до хай свечи должно быть меньше 0,65.
3) Если свеча медвежья и имеет ранг 1-3, то она должна иметь полноту менее 85%. Это значит, что расстояние от лоу до закрытия свечи, деленное на расстояние от лоу до хай свечи должно быть меньше 0,85.
При открытии позиции селл она помечается маленькой красной(RED) стрелочкой слева направо. При закрытии позиции справа налево.
3.Step.
Шаг в тиках от заданных уровней BuyLevel и SellLevel на котором выставляется сетка из 4х дополнительных уровней c указанным шагом. Уровни также отмечаются на графике RED тонкой линией Sell, и LimeGreen тонкой линией Buy. При достижении ценой каждого следующего уровня, предыдущие немедленно становятся неактивны и становятся пунктирной линией на графике, вместо сплошной. Правила входа от них те же самые.
Если я удаляю уровень BuyLevel или SellLevel, то сетка немедленно убирается.
Например, задан SellLevel 1,15113. И Step 100. Значит мы получили сетку 1,15113 – 1,15213-1,15313-1,15413-1,15513. Предположим ситуация, цена 1,14992. Стоят вышеуказанные уровни. Выходят новости. На рабочем ТФ идет огромная свеча, которая достигает уровня 1,55513 (самого последнего). Значит в процессе достижения ей в моменте предыдущих уровней, они все стали не активные (и сплошные линии превратились в пунктиры), при касании последнего уровня и активен остался только он. Соответственно, если уровень Sell,эта свеча имеет полноту <85% и ранг 1-3, и закрывается хотя бы на 1 тик ниже уровня, то вход. Либо полнота может быть <65% и ранг 4 и ниже. Либо она в моменте развернулась и стала медвежьей и тогда полнота не важно, т.к. медвежья от селл уровня, и главное закрытие хоть на тик ниже уровня для открытия Sell.
4.LevelOff.
Это тоже уровень цены, задается вручную конкретное значение и отображается на графике сплошной тонкой линией SteelGray. Если цена касается этого уровня раньше, чем было касание хотябы одного из заданных уровней Buy / Sell. То все уровни buy /sell становятся не активны. Если цена касается этого уровня, после касаний уровней buy/sell, то он в момент касания не производит никакого влияния на другие уровни, а становится неактивен сам и помечается пунктиром.
5.TF. (Minute1-Month1)
Рабочий ТФ эксперта, на котором будут заключаться сделки от уровней.
6.GTM – Время всех расчетов робота.
MT4 не позволяет задать GTM отображения свечей начала дня, а это важно для нас. Поэтому, время работы робота, расчет ATR, время переноса в бу, время отключения стопа, все должно вестись относительно не GTM брокера, а заданного в настройках робота GTM.
Например, время работы. Если задано с 08:00 до 17:59. И параметр GTM стоит +5, открытие позиций возможно только в это время по этому GTM, независимо от GTM брокера.
Например, расчет ATR, у брокера день может начинаться и заканчиваться в 00:00 по GTM. В обычном случае, для расчета ATR 5 Daily нужно сложить рендж диапазонов за предыдущие 5 дней с 00:00 по 00:00 (GTM 0) и поделить на 5. Но нам нужно по-другому. Чтобы если задано в параметрах робота GTM “+5”, то он считал ATR 5 Daily складывая диапазоны предыдущих 5 дней посчитанных с 05:00 по 05:00 (GTM 0). Если укажем GTM+3, значит с 3 до 3 по GTM 0.
Например, перенос в бу. Если задано 21:00 и GTM+5, то перенос должен быть в 21:00 по GTM+5, независимо от GTM , брокера.
7.TimeStart – Начало работы.
Если указано 09:00, и GTM+5, то позиции можно открывать в текущем дне только с этого времени по указанному GTM.
8.TimeFinish-Остановка работы.
Если указано 21:00, и GTM+5, то позиции можно открывать в текущем дне только до этого времени.
Сопровождать же позиции и подхватывать старые при отключении терминала, робот должен круглосуточно.
Эти два параметра работают совместно, и если хоть один не задан, то неактивны.
9.DepoSize – Размер депозита.
Указывается депозита в долларах, от которого будет рассчитываться риск.
Например: «10000». Значит, независимо от фактического депозита, баланса, средств, расчет риска и лота будет вестись от 10000.
10.RiskPerc – Процент риска на сделку.
Например, «0.1». Значит 0,1% от 10000, это 10$.
11.StopSize – Размер стопа.
Для расчёта берется ATR 5 Daily с учетом GTM заданного у робота.
Например, GTM брокера +3. GTM робота +5. Размер стопа задан 37.
Это значит робот должен сделать расчёт, что каждый день начинается и заканчивается в 05:00 утра (для золота, нефти, и некоторых инструментов, нужно учитывать, что есть неторговый час, когда нет котировок, т.е. для них с настройкой GTM5 день будет начинаться в 06:00, а заканчиваться в 05:00, а с 05 до 06 просто нет котировок). Относительно текущего времени берем рендж от хай до лоу 5 предыдущих диапазонов с 5утра до 5 утра(GTM0), складываем их и делим на 5.Получаем, например 89. Это средний диапазон хода за предыдущие 5 дней (5 диапазонов с 5 до 5, GTM0, тк задано GTM+5. Далее, т.к. размер стопа задан 37, множим 89 на 37%=32.56. Начиная с 5 мы округляем в большую сторону. До 5, округляем в меньшую сторону. Значит 32.56=33. И добаляем к полученному значению 10 тиков. Получаем 34 стандартных пункта. (или 340 тиков).
Т.е. стоп всегда будет округлен в большую или меньшую сторону+10 тиков, и получится круглый, 30,31,32 пункта и т.д.
При открытии позиции робот должен выставить стоп и пометить место выставления маленькой красной черточкой(RED).
12.ProfitSize- Размер профита.
Рассчитывается точно также как стоп, только от полученного при округлении значения мы отнимаем 10 тиков. При открытии позиции робот должен пометить место тейка, маленькой зеленой черточкой.(LimeGreen).
13.BreakEvenAtTime – перенос в безубыток.
Например, в 21:00. Значит, позиция переносится в бу в указанное время по заданному в настройках GTM робота, если она в плюсе. Если в указанное время позиция в 0 или минусе, то перенос осуществляется на следующий день в это же время и т.д. Важно, что если параметр был один, когда позиция открывалась, а через какое-то время после открытия параметр изменен, то робот должен это учесть и перенести в то время, которое указано в настройках, на момент фактического переноса.
14.StopAndTakeOffStart-убрать стоп с.
Например, указано 23:00, это значит что в 23:00 по GTM робота, стоп и профит убирается, однако робот помнит место стопа и профита и они остаются помечены черточкой, которая была выставлена при открытии позиции, и если цена BID (и для бай и для селл), коснется места стопа или тейк, робот немедленно должен закрыть позицию.
15.StopAndTakeOffFinish-убрать стоп и профит до.
Например, StopAndTakeOffStart = 23:00, а StopAndTakeOffFinish = 03:00. Значит с 23:00 до 03:00 (по GTM робота), стоп и тейк убираются, но робот немедленно закрывает позицию при достижении этих мест BIDом. Если ASKом, то нет.
Эти два параметра работают совместно, и если хоть один не задан, то неактивны.
После отключения стопа и тейка и возврата его на место, он должен возвращаться в то самое место, где был установлен изначально и где стоит отметка. Это стоит учесть, так как при отключении стопа, у нас ATR5 текущий может быть один, а при включении уже настал следующий день и он другой, и если это не учитывать то можно запрограмировать неправильно и стоп и тейк он вернет по ATR нового дня, что недопустимо. Стоп и тейк должны возвращаться ровно в те места где были установлены согласно ATR в день открытия позиции.
16.DayLimitOpen. (Например 2).
Максимальное количество позиций, которые можно открыть в одном рабочем дне. Рабочий день задается параметрами указанными ранее TimeStart – TimeFinish. И привязан к GTM робота. Помним, что это не одновременные позиции, т.к. робот может открывать только одну одновременно. А последовательно, вошли, получили стоп или тейк, опять, вошли. Если лимит стоял 3, мы получили 2 стопа и 1 профит и у нас опять сигнал на вход, то робот его игнорирует, а помечает место входа красными буквами LO.
Если позицию нельзя открыть не из-за лимита, а из-за нехватки маржи, это должно быть помечено на графике красными буквами LM.
Если у нас стоял лимит 2. Робот получил 2 стопа или профита. Мы поменяли в этот же день параметр на 3. Значит у робота осталась еще одна возможность зайти по сигналу сегодня, и если сигнал будет, он должен зайти.
17.ShowATR - true/false.
Отобразить ATR 5 Daily и ATR 1 Daily. Опять обращаю внимание, что это не ATR взятое со встроенного индикатора ATR, т.к. он рассчитывает по времени брокера. А ATR рассчитанный по времени GTM, заданное у робота. Синим цветом в левом верхнем углу. Первая строка «ATR5:», вторая строка «ATR1:». Размер шрифта по согласованию.
18.ShowDayPeriodFromGTM - true/false.
Отобразить разделители периодов по GTM заданное в настройках робота. Только дневные. Это значит, что на ТФ H1-M1 отображаются разделители одного дня от другого по GTM указанному в настройках робота. Оформление зеленый мелкий пунктир.
19.UseLog. true/false.
Использовать логирование.
20.MilliSecondTimer Значение 250.
Не помню зачем, но зачем-то это было нужно.
Если позиция робота закрыта вручную, он воспринимает это так, будто он сам закрыл. Если на том же инструменте открывается позиция чисто вручную, то робот на нее не обращает внимание. А учитывает только свои позиции и лимиты.
Возможно по рекомендации исполнителя, какой-то параметр нужно добавить, типа Magic.
Исключительные права на эксперта, принадлежат заказчику.
Исходный код робота, с возможностью править значения, исполнитель передает заказчику.
Расчет после проверки заказчиком правильной работы всех параметров.
Если после расчета появятся ошибки или обнаружится неверная работа параметров, то устранения таких ошибок входит в изначальную стоимость работы, и должна быть сделана как можно оперативнее.
Если что-то нужно будет добавить или скорректировать, совсем не по ТЗ, исполнитель согласен это сделать быстро и качественно, по разумной, адекватной с точки зрения расценок MQL фриланса, цене.
Возможно, в последующем нужна будет версия для MQL5. Важно, чтобы исполнитель также качественно это мог сделать.