Ідея коротко
Це не сигнал, а набір денних обмежувачів для будь-якої внутрішньоденної системи. На каналі проп-фірми IQ Capital п'ятеро трейдерів із різними методами (скальпінг за стаканом, скальпінг від VWAP, систематична VWAP-стратегія, торгівля від гамма-позиціонування, аукціонна теорія) окремо називають схожі правила. Торговий день закінчується після двох збитків поспіль. Угод на день небагато, від однієї-двох до чотирьох.
Двоє зупиняються і після прибутку: Robert Rother після першої прибуткової угоди, Matthias Fernholz після двох прибуткових поспіль. Chris Creamer додає час: через півтори години після відкриття Нью-Йорка він закінчує. Правила кожного трейдера записано нижче як варіанти. Їх зручно підключати до будь-якої картки з кількома угодами на день.
Чому це може працювати
Пояснень два. Перше психологічне, його дають Manuel і Chris. Після пари збитків трейдер починає торгувати не ринок, а бажання відігратися. За словами Manuel, рахунки зливають саме такі сесії, а не сам метод. Chris додає, що правило має бути конкретною дією, а не побажанням «не переторговувати».
Друге статистичне, за особистими журналами. Matthias за своєю таблицею в Excel бачив, що третя угода після двох прибуткових зазвичай збиткова. Chris помітив, що після півтори години від відкриття його угоди помітно гірші. Matteo Conti підібрав ліміт у чотири угоди на in-sample як найкращий для проходження челенджу.
Для механічної системи психологічний аргумент не працює. Якщо результати угод усередині дня незалежні, зупинка після двох збитків не змінює очікування однієї угоди. Вона лише скорочує кількість угод і згладжує денний результат. Користь з'являється, коли збитки йдуть серіями, наприклад у дні без напрямку. Це перевіряється на списку угод. Аргумент Matthias, що при 50-60% прибуткових третій прибуток поспіль малоймовірний, правильний лише за залежності угод. За незалежних угод шанс третього прибутку ті самі 50-60%. Його даних ми не бачили.
Правила
Зведення по трейдерах
| Трейдер | Ліміт угод | Стоп за збитками | Стоп за прибутком | Час |
|---|---|---|---|---|
| Matthias Fernholz | 3 | 2 поспіль | 2 поспіль | 1-1.5 години на день |
| Robert Rother | зазвичай 1-2, іноді 3 | 2 поспіль | перша угода в плюс | не названо |
| Matteo Conti | 4, одна позиція | 2 за день | немає | входи до 15:30 ET, вихід 15:55 ET |
| Manuel | не названо | 2 поспіль | немає | не названо |
| Chris Creamer | зазвичай 0-2 | 2 поспіль | немає | перші 90 хвилин після 09:30 ET |
Спільні лічильники дня (Finetiq)
IF почалася нова торгова сесія
TradesToday = 0; LossesToday = 0; ConsecLosses = 0; ConsecWins = 0
DayOff = false
ON закриття угоди
TradesToday += 1
IF PnL < 0 THEN LossesToday += 1; ConsecLosses += 1; ConsecWins = 0
IF PnL > 0 THEN ConsecWins += 1; ConsecLosses = 0
// Finetiq: угода біля нуля (|PnL| менше за витрати на коло) серії не змінює.
// Автори цей випадок не розбирали
IF DayOff THEN CANCEL усі відкладені ордери; нових входів немає
Варіант A. Matthias Fernholz (скальпінг за стаканом)
IF TradesToday >= 3 THEN DayOff = true
IF ConsecLosses >= 2 THEN DayOff = true
IF ConsecWins >= 2 THEN DayOff = true
// автор: після «збиток, прибуток» третя угода дозволена
// Finetiq: «прибуток, збиток» автор не розбирав, за лічильниками третя угода теж дозволена
// автор: торгує не більше години-півтори на день
Варіант B. Robert Rother (скальпінг від VWAP на ES)
IF перша угода дня: PnL > 0 THEN DayOff = true // автор: «вимикаю комп'ютер»
IF перша угода дня: PnL < 0
пауза // Finetiq: тривалість не названа, стартове значення 15 хвилин
дозволена друга угода
IF друга угода: PnL > 0 THEN третя угода допустима // автор: «можу розглянути»
IF ConsecLosses >= 2 THEN DayOff = true
Варіант C. Matteo Conti (картка drift-vwap-pullback)
MaxOpenPositions = 1
IF TradesToday >= 4 THEN DayOff = true
IF LossesToday >= 2 THEN DayOff = true
// автор каже і «максимум два збитки на день», і «дві збиткові поспіль».
// Finetiq: при ліміті 4 угоди це різні правила, перевірте обидва
нових входів після 15:30 ET немає
EXIT усі позиції at 15:55 ET
Варіант D. Manuel (гамма-позиціонування та об'ємний профіль)
IF ConsecLosses >= 2 THEN DayOff = true
// ведучий формулює «два збитки за сесію», Manuel уточнює «дві угоди поспіль у збиток»
RiskPerTrade <= 1% рахунку
Варіант E. Chris Creamer (аукціонна теорія і footprint)
TradeWindow = 09:30-11:00 ET // автор: «перші півтори години Нью-Йорка»; Finetiq: переведено в точний час
IF Time >= 11:00 ET THEN DayOff = true
IF ConsecLosses >= 2 THEN DayOff = true
IF груба помилка (вхід до підтвердження, гонитва за ціною) THEN DayOff = true
// останнє правило дискреційне, у механічній системі його немає
Параметри
| Параметр | Значення | Звідки |
|---|---|---|
| Максимум угод на день | 3 | автор (Matthias) |
| Максимум угод на день | 4, одна позиція одночасно | автор (Matteo) |
| Стоп за збитками | 2 поспіль | автор (Matthias, Robert, Manuel, Chris) |
| Стоп за збитками | 2 за день | автор (Matteo), трактування Finetiq |
| Стоп за прибутком | 2 поспіль | автор (Matthias) |
| Стоп за прибутком | перша угода в плюс | автор (Robert) |
| Вікно торгівлі | 90 хвилин після 09:30 ET | автор (Chris) |
| Останній вхід і вихід | 15:30 і 15:55 ET | автор (Matteo) |
| Ризик на угоду | до 1% | автор (Manuel) |
| Пауза після першого збитку | 15 хвилин | Finetiq |
| Угода біля нуля | не змінює серії | Finetiq |
Що перевірити
- Чи залежать угоди одна від одної всередині дня. На списку угод своєї системи порівняйте частку прибуткових після збитку того самого дня, після двох збитків поспіль і після двох прибутків поспіль із загальною часткою. Якщо різниці немає, обмежувачі працюють лише як скорочення кількості угод.
- Проти випадкового скорочення. Приберіть з історії стільки ж угод, скільки відсікає правило, але випадково і в ті самі дні, і повторіть 1000 разів. Якщо правило не краще за більшість випадкових варіантів, його користь лише в меншій експозиції.
- Поспіль чи за день. Два збитки поспіль проти двох збитків за день і проти трьох. При ліміті 3-4 угоди ці правила спрацьовують у різні дні.
- Стоп після прибутку. Без нього, після першої прибуткової угоди, після двох прибуткових поспіль. Дивіться окремо на середній результат дня і на максимальну просадку.
- Околиця ліміту угод. Від однієї до шести угод на день. Matteo обрав чотири на in-sample, перевірте на періоді поза підбором.
- Вікно часу. Розкладіть результат угод по півгодинах після відкриття. Відсічка через 60, 90, 120 і 180 хвилин.
- Проп-правила. Якщо мета пройти челендж, моделюйте денний ліміт збитку і трейлінг-просадку конкретної фірми з обмежувачами і без них. У симуляції перемішуйте дні, а не окремі угоди, щоб порядок усередині дня зберігся.
Особливості платформ
TradingView (Pine Script)
strategy.risk.max_intraday_filled_orders(n)рахує ордери, а вхід і вихід це два ордери. Після досягнення ліміту стратегія закриває позицію і не торгує до кінця сесії. Сесія тут це торговий день символу: у ф'ючерсів CME він починається о 18:00 ET напередодні, а не о 09:30.- Серію збитків рахуйте самі. Коли зростає
strategy.closedtrades, беріть результат останньої угоди черезstrategy.closedtrades.profit(strategy.closedtrades - 1). Лічильники обнуляйте на першому барі після 09:30 ET заtime(timeframe.period, "0930-1600", "America/New_York"). strategy.risk.max_cons_loss_daysрахує збиткові дні поспіль, а не угоди. Для правила «два збитки поспіль» він не підходить.- Якщо стоп і ціль зачеплено в одній свічці, тестер сам обирає порядок, і послідовність прибутків і збитків змінюється. Для правил за серіями це важливо: потрібен
use_bar_magnifierабо молодший таймфрейм.
MultiCharts і TradeStation (EasyLanguage)
- Нову закриту угоду видно за зростанням
TotalTrades, її результат даєPositionProfit(1). Лічильники серій зберігайте в змінних. - Кількість входів за день дає
EntriesToday(Date). Скидання заDate <> Date[1]на цілодобовому графіку ф'ючерса відбувається опівночі, а не о 09:30. Для правил за основною сесією скидайте лічильники на першому барі після відкриття (на 5-хвилинкахTime = 935). - Ордери в EasyLanguage живуть один бар, тому обмежувач це просто умова перед надсиланням ордерів. Перевірте, що стоп і ціль уже відкритої позиції при цьому й далі надсилаються.
- Порядок стопа і цілі всередині бару уточнюйте через Look-Inside-Bar у TradeStation або Bar Magnifier у MultiCharts, інакше серії в тесті будуть іншими.
MetaTrader 5 (MQL5)
- Закриті угоди за день:
HistorySelect(початок дня, TimeCurrent()), перебірHistoryDealsTotal(), фільтр заDEAL_ENTRY_OUTі своїм magic. Результат рахуйте якDEAL_PROFITплюсDEAL_COMMISSIONіDEAL_SWAP, інакше угода «біля нуля» потрапить до прибуткових. - Часткове закриття дає кілька угод виходу на одну позицію. Рахуйте угоди за
DEAL_POSITION_ID, інакше ліміт спрацює раніше. - Початок дня в MT5 це північ сервера брокера. 09:30 ET переводьте в серверний час з урахуванням літнього часу.
- Лічильники в пам'яті радника обнуляються при перезапуску терміналу. У тестері цього не видно, а в реальній торгівлі радник після перезапуску забуде ранкові збитки. Надійніше щоразу рахувати їх з історії.
Де ідея може зламатися
- Четверо з п'яти авторів торгують за ситуацією, і їхні аргументи здебільшого про дисципліну. Для механічної системи ці причини не діють, а статистична користь не доведена.
- Цифри з особистих журналів (таблиця Matthias, статистика Chris) не опубліковані. Твердження про третю угоду після двох прибуткових суперечить простій імовірності, якщо угоди незалежні.
- Усі інтерв'ю записано на каналі проп-фірми, у розмові про виплати й челенджі. Обмежувачі там підібрано під денні ліміти збитку фірм.
- Ліміт у чотири угоди в Matteo підібрано на in-sample.
- Якщо система робить одну-дві угоди на день, правило двох збитків майже не спрацьовує і на результат не впливає. Якщо угод багато, обмежувач відрізає основну частину вибірки, і оцінка очікування стає шумнішою.
- Угоди в нуль, часткові виходи й перевороти автори не розбирають. Від того, як їх рахувати, залежить, коли закінчиться день.