Советник на пересечении SMA 50/200
ТЗ: Советник для MT5 · Образец ТЗ · зафиксировано для примера
Это ТЗ описывает, что должен делать советник. Это задание для разработчика, а не обещание доходности. Каждое значение процитировано из материала трейдера или выбрано им самим; пункты, оставленные разработчику, и значения из примеров перечислены в заметках ниже.
- Материал
- Запрос (текст) + Pine Script (код)
- Заметки для разработчика
- На усмотрение разработчика оставлено 4 пункта.
На усмотрение разработчика
- Допустимое проскальзывание · Исполнение приказов
- Магический номер · Исполнение приказов
- Комментарий к приказу · Исполнение приказов
- Настройки во внешних параметрах · Внешние параметры
В этой стратегии не используется
Эти пункты не реализовывать и не уточнять у трейдера.
- Термины · Замысел стратегии— Не нужен: в ТЗ нет рыночных терминов без определения.
- Дополнительные таймфреймы · Инструменты и таймфреймы— «Только H4»
- По каким часам считается время · Инструменты и таймфреймы— Нужен только вместе с пунктами «Торговая сессия», «Дни торговли» или «Во сколько обнуляется дневной убыток», а они не используются.
- Условие сигнала на продажу · Сигналы— «Только покупки, продаж нет.»
- Сигнал внутри свечи · Сигналы— Нужен только при ответе «На каждом тике» на «Когда проверяются сигналы»; ответ — «Раз на закрытии свечи».
- Цена отложенного ордера · Правила входа— Нужен только при ответе «Лимитный приказ» или «Стоп-приказ» на «Тип приказа на вход»; ответ — «Рыночный приказ».
- Срок жизни отложенного ордера · Правила входа— Нужен только при ответе «Лимитный приказ» или «Стоп-приказ» на «Тип приказа на вход»; ответ — «Рыночный приказ».
- Перенос отложенного ордера · Правила входа— Нужен только при ответе «Лимитный приказ» или «Стоп-приказ» на «Тип приказа на вход»; ответ — «Рыночный приказ».
- Дополнительные условия входа · Правила входа— Нужен только при ответе «Да» на «Есть ли условия перед выставлением приказа»; ответ — «Нет».
- Сколько действует сигнал · Правила входа— Нужен только при ответе «Да» на «Есть ли условия перед выставлением приказа»; ответ — «Нет».
- Выход по времени · Правила выхода— «Выхода по времени нет.»
- Трейлинг-стоп · Правила выхода— «Трейлинг-стопа нет.»
- Перенос в безубыток · Правила выхода— «Стоп никогда не переносится в безубыток.»
- Как часто проверяются трейлинг и безубыток · Правила выхода— Нужен только вместе с пунктами «Трейлинг-стоп» или «Перенос в безубыток», а они не используются.
- Как закрывается серия целиком · Правила выхода— Нужен только при ответе «Да» на «Новые позиции, пока открыта первая»; ответ — «Нет».
- Другие способы закрытия · Правила выхода— «Больше ничего не закрывает позицию.»
- Где открывается следующая позиция серии · Управление позициями— Нужен только при ответе «Да» на «Новые позиции, пока открыта первая»; ответ — «Нет».
- Что происходит после закрытия серии · Управление позициями— Нужен только при ответе «Да» на «Новые позиции, пока открыта первая»; ответ — «Нет».
- Добавление к открытой позиции · Управление позициями— Нужен только при ответе больше 1 на «Сколько позиций может быть открыто»; ответ — «1».
- Противоположный сигнал при открытой позиции · Управление позициями— Нужен только вместе с пунктом «Условие сигнала на продажу», а он не используется.
- Частичное закрытие · Управление позициями— «Позиция закрывается целиком.»
- Как меняется лот · Управление риском— Нужен только при ответе «Да» на «Лот, зависящий от предыдущих сделок»; ответ — «Нет».
- Когда лот возвращается к начальному · Управление риском— Нужен только при ответе «Да» на «Лот, зависящий от предыдущих сделок»; ответ — «Нет».
- Наибольший лот · Управление риском— Нужен только вместе с пунктами «Как меняется лот» или «Где открывается следующая позиция серии», а они не используются.
- Дневной лимит убытка · Управление риском— Нужен только при ответе «Да» на «Есть ли ограничения на убытки сверх одной сделки»; ответ — «Нет».
- Что считается дневным убытком · Управление риском— Нужен только вместе с пунктом «Дневной лимит убытка», а он не используется.
- Что делать при достижении дневного лимита · Управление риском— Нужен только вместе с пунктом «Дневной лимит убытка», а он не используется.
- Во сколько обнуляется дневной убыток · Управление риском— Нужен только вместе с пунктом «Дневной лимит убытка», а он не используется.
- Другие ограничения риска · Управление риском— Нужен только при ответе «Да» на «Есть ли ограничения на убытки сверх одной сделки»; ответ — «Нет».
- Дни торговли · Фильтры и ограничения— Нужен только при ответе «Да» на «Есть ли ограничения на то, когда можно торговать»; ответ — «Нет».
- Торговая сессия · Фильтры и ограничения— Нужен только при ответе «Да» на «Есть ли ограничения на то, когда можно торговать»; ответ — «Нет».
- Максимальный спред · Фильтры и ограничения— Нужен только при ответе «Да» на «Есть ли ограничения на то, когда можно торговать»; ответ — «Нет».
- Новостной фильтр · Фильтры и ограничения— Нужен только при ответе «Да» на «Есть ли ограничения на то, когда можно торговать»; ответ — «Нет».
- Другие фильтры · Фильтры и ограничения— Нужен только при ответе «Да» на «Есть ли ограничения на то, когда можно торговать»; ответ — «Нет».
- Что помнить после перезапуска · Состояние и память— «Ничего запоминать на диске не нужно.»
- Что показывать на графике · Что советник показывает— Нужен только при ответе «Да» на «Показывает или записывает ли советник что-нибудь во время работы»; ответ — «Нет».
- Журнал · Что советник показывает— Нужен только при ответе «Да» на «Показывает или записывает ли советник что-нибудь во время работы»; ответ — «Нет».
- Оповещения · Что советник показывает— Нужен только при ответе «Да» на «Показывает или записывает ли советник что-нибудь во время работы»; ответ — «Нет».
- Сигналы на покупку и продажу одновременно · Особые ситуации— Нужен только вместе с пунктом «Условие сигнала на продажу», а он не используется.
- Другие особые ситуации · Особые ситуации— «Больше ничего.»
- Что оптимизировать и в каких пределах · Проверка работы— Нужен только при ответе «Да» на «Будете ли оптимизировать советник»; ответ — «Нет».
- По какому критерию выбирать результат · Проверка работы— Нужен только при ответе «Да» на «Будете ли оптимизировать советник»; ответ — «Нет».
Общее
Название проекта: «Советник на пересечении SMA 50/200». Советник работает на счёте с хеджированием.
- Режим позиций на счётеРешение трейдера
Хеджирование
Ответ трейдера: Счёт с хеджированием
Замысел стратегии
Стратегия следует за долгосрочным трендом: открытая покупка удерживается, пока SMA 50 выше SMA 200. Стиль стратегии — «По тренду».
- Замысел стратегииРешение трейдера
Идти за долгосрочным трендом: держать покупку, пока SMA 50 выше SMA 200.
Формулировка для разработчика
Советник следует долгосрочному тренду: открывает и удерживает покупку, пока SMA 50 находится выше SMA 200.
- Тип стратегииРешение трейдера
По тренду
Инструменты и таймфреймы
Советник торгует только инструментами из фиксированного списка, которые будут названы; в список входит EURUSD. Робот работает на одном заданном таймфрейме — H4. Дополнительные таймфреймы в этой стратегии не используются.
- На каких инструментах работает советникРешение трейдера
Заданный список инструментов
Ответ трейдера: Только те пары, которые я назову
- ИнструментыИз материала трейдера
EURUSD
- На каком таймфрейме работает советникРешение трейдера
Один заданный таймфрейм
- Рабочий таймфреймИз материала трейдера
H4
«EURUSD H4»Запрос
Сигналы
Используются две простые скользящие средние: SMA с периодом 50 и применением к закрытию и SMA с периодом 200 и применением к закрытию, что соответствует `ta.sma(close, 50) / ta.sma(close, 200)`. При пересечении быстрой средней снизу вверх через `ta.crossover(fast, slow)` открывается покупка: `strategy.entry("Long", strategy.long)`. Сигналы оцениваются один раз на закрытии свечи. Продажи в стратегии не используются.
- Индикаторы и их настройкиИз материала трейдера
SMA (период 50, по цене закрытия); SMA (период 200, по цене закрытия)
«ta.sma(close, 50)»Pine Script
«ta.sma(close, 200)»Pine Script
- Условие сигнала на покупкуИз материала трейдера
if ta.crossover(fast, slow) strategy.entry("Long", strategy.long)
- Когда проверяются сигналыРешение трейдера
Раз на закрытии свечи
Правила входа
Вход выполняется рыночным приказом непосредственно при пересечении SMA 50 и SMA 200. Дополнительные условия перед размещением приказа отсутствуют.
- Тип приказа на входРешение трейдера
Рыночный приказ
- Есть ли условия перед выставлением приказаРешение трейдера
Нет
Ответ трейдера: Нет, вход происходит по самому пересечению.
- Момент входаСледует из ответа
Сразу по сигналу
Следует из ответа «Нет» на «Есть ли условия перед выставлением приказа»
Правила выхода
Для открытой покупки устанавливается стоп-лосс в размере 150 пипсов. Тейк-профита нет; позиция закрывается на обратном пересечении: if ta.crossunder(fast, slow) strategy.close("Long"). Выхода по времени нет, трейлинг-стопа нет, стоп никогда не переносится в безубыток.
- Стоп-лоссРешение трейдера
150 пипсов
- Тейк-профитРешение трейдера
Не задан
Ответ трейдера: Тейк-профита нет; позиция закрывается на обратном пересечении.
- Закрывается ли отдельная позиция или двигается ли её стоп как-то ещё, кроме исходных стопа и тейкаРешение трейдера
Да
Ответ трейдера: Да, обратное пересечение закрывает позицию.
- Выход по сигналуИз материала трейдера
if ta.crossunder(fast, slow) strategy.close("Long")
Управление позициями
Советник открывает не более одной позиции одновременно. Ограничение применяется ко всему советнику: допускается только одна позиция на весь советник. При закрытии позиция закрывается целиком, частичное закрытие не используется.
- Новые позиции, пока открыта перваяРешение трейдера
Нет
Ответ трейдера: Нет, позиции открываются только по сигналам.
- Сколько позиций может быть открытоРешение трейдера
1
Ответ трейдера: Одна позиция за раз
- К чему относится ограничение на позицииРешение трейдера
На весь советник
Ответ трейдера: Одна позиция на весь советник
Управление риском
Размер позиции рассчитывается исходя из риска 1% от баланса на сделку. Ограничений на убытки сверх размера одной сделки нет: 1% на сделку — единственное ограничение.
- Объём позицииРешение трейдера
Риск 1% от баланса на сделку
- Лот, зависящий от предыдущих сделокРешение трейдера
Нет
Ответ трейдера: Нет, лот всегда один и тот же.
- Есть ли ограничения на убытки сверх одной сделкиРешение трейдера
Нет
Ответ трейдера: Нет, 1% на сделку — единственное ограничение.
Фильтры и ограничения
Торговать можно при любом пересечении.
- Есть ли ограничения на то, когда можно торговатьРешение трейдера
Нет
Ответ трейдера: Нет, торговать можно при любом пересечении.
Исполнение приказов
- Допустимое проскальзываниеНа усмотрение разработчика
На усмотрение разработчика
Трейдер оставил это на усмотрение разработчика: выбрать разумное значение и записать его.
- Магический номерНа усмотрение разработчика
На усмотрение разработчика
Трейдер оставил это на усмотрение разработчика: выбрать разумное значение и записать его.
- Комментарий к приказуНа усмотрение разработчика
На усмотрение разработчика
Трейдер оставил это на усмотрение разработчика: выбрать разумное значение и записать его.
- Что делать, если приказ не прошёлРешение трейдера
Отклонённый приказ повторить один раз через 5 секунд, затем пропустить сигнал.
Формулировка для разработчика
Если приказ отклонён, советник повторяет его один раз через 5 секунд. Если повторный приказ не прошёл, советник пропускает сигнал.
Состояние и память
Ничего запоминать на диске не нужно. После перезапуска найти открытую позицию по магическому номеру и продолжить ею управлять.
- Поведение после перезапуска терминалаРешение трейдера
После перезапуска найти открытую позицию по магическому номеру и продолжить ею управлять.
Формулировка для разработчика
После перезапуска советник должен найти открытую позицию по магическому номеру и продолжить ею управлять.
Внешние параметры
Состав настраиваемых входных параметров определяется разработчиком.
- Настройки во внешних параметрахНа усмотрение разработчика
На усмотрение разработчика
Трейдер оставил это на усмотрение разработчика: выбрать разумное значение и записать его.
Что советник показывает
Советник не должен ничего показывать или записывать во время работы. Советник работает молча.
- Показывает или записывает ли советник что-нибудь во время работыРешение трейдера
Нет
Ответ трейдера: Нет, советник работает молча.
Особые ситуации
- Нет данных индикатора или они негодныеРешение трейдера
Пропустить свечу, если хотя бы одну скользящую среднюю посчитать не удалось.
Формулировка для разработчика
Если не удалось рассчитать хотя бы одну скользящую среднюю, советник должен пропустить эту свечу.
- Временно нет котировок или торговля недоступнаРешение трейдера
Не торговать, пока котировки снова не пойдут.
Формулировка для разработчика
Пока котировки отсутствуют или торговля недоступна, советник не торгует. Когда котировки снова появляются, советник возобновляет торговлю.
Проверка работы
На EURUSD H4, когда SMA 50 закрывается выше SMA 200, на следующем тике открывается одна покупка; когда она закрывается обратно ниже, эта позиция закрывается. Тестовая матрица: EURUSD H4, с 2019 по 2024 год, каждый тик на реальных тиках. Критерий приемки: в тестере стратегий за 2023 год каждое открытие соответствует пересечению на закрытии свечи, и позиций никогда не больше одной.
- Примеры для проверкиРешение трейдера
На EURUSD H4, когда SMA 50 закрывается выше SMA 200, на следующем тике открывается одна покупка; когда она закрывается обратно ниже, эта позиция закрывается.
Формулировка для разработчика
На EURUSD H4, когда SMA 50 закрывается выше SMA 200, на следующем тике открывается одна покупка. Когда SMA 50 закрывается обратно ниже SMA 200, эта позиция закрывается.
- Что прогнать в тестереРешение трейдера
EURUSD H4, с 2019 по 2024 год, каждый тик на реальных тиках.
Формулировка для разработчика
Тестирование проводится на EURUSD на таймфрейме H4 за период с 2019 по 2024 год. В тестере используется режим «каждый тик на реальных тиках».
- Будете ли оптимизировать советникРешение трейдера
Нет
Ответ трейдера: Без оптимизации.
- Условия приёмкиРешение трейдера
В тестере стратегий за 2023 год каждое открытие соответствует пересечению на закрытии свечи, и позиций никогда не больше одной.
Формулировка для разработчика
В тестере стратегий за 2023 год каждое открытие должно соответствовать пересечению SMA на закрытии свечи. Одновременно открытых позиций не должно быть больше одной.
Чего делать не нужно
Советник не должен добавлять сетку, мартингейл или торговлю на новостях.
- Чего делать не нужноРешение трейдера
Не добавлять сетку, мартингейл и торговлю на новостях.
Чек-лист приёмки
По одной проверке на каждый решённый пункт — словами, которые принял трейдер. Пункт без сценария всё равно входит в ТЗ: проверить значение так, как оно записано.
1. Условие сигнала на покупку — if ta.crossover(fast, slow) strategy.entry("Long", strategy.long)
На EURUSD на таймфрейме H4 после закрытия свечи SMA с периодом 50, рассчитанная по закрытию, пересекает SMA с периодом 200, рассчитанную по закрытию, снизу вверх. При такой проверке советник выполняет `if ta.crossover(fast, slow) strategy.entry("Long", strategy.long)`, и должна быть открыта покупка рыночным ордером.
2. Когда проверяются сигналы — Раз на закрытии свечи
Сигналы проверяются один раз, когда свеча закрылась (в момент открытия следующей), поэтому в режиме «Только цены открытия» советник открывает сделки на тех же свечах, что и в режиме «Каждый тик на основе реальных тиков». Выходы, срабатывающие внутри свечи, в этих режимах могут отличаться: итог оценивается в режиме «Каждый тик на основе реальных тиков» — он ближе всего к реальной торговле.
3. Тип приказа на вход — Рыночный приказ
На EURUSD H4 после закрытия свечи SMA 50 пересекает SMA 200 снизу вверх, и сигнал на покупку оценивается на следующем тике. Советник открывает позицию приказом «Рыночный приказ». В журнале или свойствах исполненного ордера должно быть видно, что для открытия позиции использован рыночный тип приказа.
4. Стоп-лосс — 150 пипсов
Для открытой покупки советника на EURUSD в режиме H4 задаётся стоп-лосс. Когда цена достигает уровня, отстоящего от цены открытия на 150 пипсов в неблагоприятную для позиции сторону, позиция закрывается. Должно быть видно, что позиция закрыта по стоп-лоссу, а не установлен тейк-профит.
5. Тейк-профит — Не задан
На EURUSD H4 открыта покупка, и после неё происходит обратное пересечение SMA 50 и SMA 200. Советник не устанавливает для позиции тейк-профит, а при обратном пересечении закрывает её: «Тейк-профита нет; позиция закрывается на обратном пересечении.»
6. Выход по сигналу — if ta.crossunder(fast, slow) strategy.close("Long")
На EURUSD H4 открыта одна покупка, и на закрытии свечи fast пересекает slow сверху вниз, что соответствует условию «if ta.crossunder(fast, slow) strategy.close("Long")». После этого советник закрывает позицию Long, и открытой покупки не остаётся.
7. Сколько позиций может быть открыто — 1
При работе советника на EURUSD на H4 по всему советнику уже открыта одна позиция, и появляется новый сигнал на открытие позиции. Советник не размещает новый ордер, и в любой момент остаётся не более одной открытой позиции: «Одна позиция за раз».
8. Объём позиции — Риск 1% от баланса на сделку
На EURUSD с таймфреймом H4 после закрытия свечи возникает сигнал на покупку, и для сделки установлен стоп-лосс 150 пипсов. Советник размещает рыночный ордер с рассчитанным объёмом позиции. При срабатывании стоп-лосса сумма риска по этой сделке составляет «Риск 1% от баланса на сделку».
9. Что делать, если приказ не прошёл — Отклонённый приказ повторить один раз через 5 секунд, затем пропустить сигнал.
Настроить советник так, чтобы на закрытии свечи возник сигнал на покупку, и платформа отклонила рыночный приказ. Когда советник получит отклонение, он должен повторить приказ один раз через 5 секунд. Если повторный приказ тоже отклонён, сигнал должен быть пропущен и новых попыток по нему не должно быть.
10. Поведение после перезапуска терминала — После перезапуска найти открытую позицию по магическому номеру и продолжить ею управлять.
Перед перезапуском терминала на EURUSD есть открытая позиция с магическим номером советника. После перезапуска советник должен найти открытую позицию по магическому номеру. После этого советник должен продолжить ею управлять.
11. Нет данных индикатора или они негодные — Пропустить свечу, если хотя бы одну скользящую среднюю посчитать не удалось.
На EURUSD H4 при расчёте SMA 50 или SMA 200 на закрытой свече платформа не возвращает корректное значение хотя бы для одной скользящей средней. Советник должен «Пропустить свечу, если хотя бы одну скользящую среднюю посчитать не удалось», поэтому по этой свече ордер не размещается.
12. Временно нет котировок или торговля недоступна — Не торговать, пока котировки снова не пойдут.
У советника есть сигнал на вход. Когда котировки временно отсутствуют или торговля недоступна, советник не отправляет торговые приказы, пока котировки снова не пойдут.
Входные параметры, которые следуют из этих значений
Решённые значения в виде входных параметров советника. Значения по умолчанию — это значения самого трейдера; для нерешённого пункта строки нет.
| Параметр | Тип | По умолчанию | Как записано | Откуда |
|---|---|---|---|---|
| InpSymbols | string | "EURUSD" | EURUSD | Инструменты · Инструменты и таймфреймы |
| InpExecutionTimeframe | ENUM | PERIOD_H4 | H4 | Рабочий таймфрейм · Инструменты и таймфреймы |
| InpSMAPeriod | int | 50 | SMA (период 50, по цене закрытия) | Индикаторы и их настройки · Сигналы |
| InpSMAPeriod2 | int | 200 | SMA (период 200, по цене закрытия) | Индикаторы и их настройки · Сигналы |
| InpStopLossPips | int | 150 | 150 пипсов | Стоп-лосс · Правила выхода |
| InpMaximumOpenPositions | int | 1 | 1 | Сколько позиций может быть открыто · Управление позициями |
| InpRiskPercent | double | 1.00 | Риск 1% от баланса на сделку | Объём позиции · Управление риском |
Как читать это ТЗ
- Расстояния указаны в тех единицах, что записаны рядом с ними. Пункт — минимальный шаг цены инструмента; на пятизначной котировке форекс один пипс равен десяти пунктам.
- Закрытая свеча — свеча, которая уже закрылась; текущая свеча ещё формируется, и её значения меняются.
- Время и дни указаны по часам, названным в ТЗ. Если часы не названы, уточнить у трейдера, прежде чем считать, что это время сервера брокера.
- Каждое значение в этом ТЗ взято из материала трейдера или из его ответа, кроме пунктов на усмотрение разработчика. Пункт с пометкой «не обсуждалось» не даёт права выбрать значение самому: спросить у трейдера.
- Робот управляет только позициями, которые открыл сам и узнаёт по своему магическому номеру, и никогда не трогает сделки, открытые вручную или другим роботом.
- Цены, объёмы и стоп-уровни перед отправкой приказа приводятся к шагу цены инструмента, шагу лота и минимальному расстоянию до стопа; значение, которое брокер отклоняет, не подменяется молча другим.
- Это ТЗ не обещает торгового результата. Оно описывает поведение, которое нужно реализовать и проверить.