Зміст статті
- Докази та сфера застосування
- Ілюстрація
- Процес
- Ковзна межа — не підтверджений свінг
- Задайте опорний рівень до класифікації події
- Одна межа може призвести до різних допустимих результатів
- Час ордерів, скасування й сплив строку
- Обсяг може відбирати сильні рухи й дорожчі виконання
- Перевірте розрахунок опорних даних перед застосуванням стратегії
- Поширені помилки
- Практичний список перевірки
- Поширені запитання
- Джерела дослідження
Докази та сфера застосування
Джерела підтверджують формули каналу, зміщення даних та імітацію часу ордерів. Жодне твердження про історичне відстеження тренду не розглядається як доказ того, що конкретний вхід, поріг обсягу та вихід, запропоновані тут, є прибутковими.
Практична послідовність дій
- Зібрати N барівВикористовуйте завершені спостереження до поточного бару.
- Заморозьте U та DЗбережіть ціни й вік кожного екстремуму.
- Класифікуйте подіюПробій за закриттям відрізняється від виносу й повернення за рівень.
- Застосуйте фільтр обсягуЛише ознаки, відомі під час надсилання ордера.
- Імітація виконанняЗастосуйте задані правила входу, стопа й строку дії.
Ковзна межа — не підтверджений свінг
Дончіан бере екстремуми N спостережень; TradingView описує верхню й нижню межі та середину [1]. На відміну від півота з підтвердженням з обох боків, наступний розворот не потрібен. Завершене попереднє вікно відоме на початку нового бару. У тренді верхня межа може зростати, не стримуючи ціну як опір.
Запропоноване причинно-наслідкове визначення має вигляд U[t]=max(H[t−N:t]), D[t]=min(L[t−N:t]), M[t]=(U[t]+D[t])/2, при цьому верхня кінцева точка зрізу виключена. Таким чином, вікно закінчується в t−1. Якщо H[t] включено в U[t], умова H[t]>U[t] стає неможливою за конструкцією.
Це розмежування впливає на весь експеримент. Індикатор може для наочності включати поточний бар у межу; стратегія все одно має визначати історичний знімок. Зберігайте час і ціну вихідного екстремуму, щоб відрізняти свіжі межі від старих екстремумів, які скоро вийдуть із вікна.
Задайте опорний рівень до класифікації події
У pandas зсув значень відокремлює вікно посилань від рядка, що оцінюється, [2]. Одна з реалізацій - high.shift(1).rolling(N).max(). Зсув індексу за допомогою freq не замінює переміщення спостережуваних значень відносно рядка рішення. Вимагайте повного дійсного вікна замість того, щоб непомітно дозволяти зміну кількості спостережень.
Базовий варіант класифікує закриття завершеного бару за межею з буфером b=max(2 ticks,0.1×ATR[t−1]); N=20 і 0.1 — дослідницькі параметри. Для негайної класифікації одного бару щоразу розраховуйте рівень попереднього вікна. Для виносу й повернення за рівень на кількох барах фіксуйте початковий рівень при створенні кандидата.
Інакше бар виносу ввійде в наступне вікно й пересуне межу повернення. Повернення нижче оновленої межі може відрізнятися від повернення нижче справді пробитого рівня. Зберігайте candidate_id, frozen_level, час опорного рівня й строк кандидата, щоб умова не змінювалася протягом сетапу.
U = max(H[t-N:t]); D = min(L[t-N:t])
b = max(2*tick, 0.1*ATR[t-1])
if no_active_setup and C[t] > U+b:
emit('up_breakout', signal_at=t, frozen_level=U)
if no_active_setup and H[t] > U+b and C[t] < U:
emit('upper_reclaim', signal_at=t, frozen_level=U)
# These labels represent different hypotheses.
# A close-confirmed order can be processed only after close t.
Одна межа може призвести до різних допустимих результатів
Синтетичний приклад: попередні 20 барів мають U=105, D=99 та ATR=1. За tick=0.01 буфер b=0.10. Поточний бар H=106, C=105.4 дає пробій угору за закриттям. Пропонована купівля на наступному відкритті 105.5, стоп 103.9 і ціль 108.7 дають початковий ризик 1.6 пункту й ціль 2R до витрат.
Невдалий шлях: після відкриття за 105.5 ціна падає до 103.8. Стоп може спрацювати, хоча сигнальне закриття виконало всі умови. Якби вихідний бар мав H=106 та C=104.7, це не був би пробій за закриттям. Він міг би бути виносом угору з поверненням нижче межі для окремої стратегії коротких продажів. Не перейменовуйте збитковий пробій на винос після відомого збитку.
Більш тонкий випадок виникає, коли старий максимум 105 залишає вікно N-бару, а U падає до 104. Ціна на 104.5 тепер може перевищити канал, не утворюючи нового нещодавнього торгового максимуму. Це законна подія переміщувального вікна. Її виключення вимагає додаткової зареєстрованої умови щодо походження або руху опорного рівня.
Навмисно перевіряйте рівність. Закриття точно на U+b відхиляється суворою умовою "більше ніж" у цій базовій лінії. Округлення тиків має відбуватися за фіксованою угодою перед поданням ордера; інакше шум з плаваючою комою може визначити, чи знаходиться спостереження трохи вище чи точно на межі.
Час ордерів, скасування й сплив строку
TradingView розрізняє створення ордера після закриття й виконання на наступному доступному тику в емуляторі [3]. Версії з підтвердженням закриттям потрібні наступна доступна ціна, спред і прослизання. Заздалегідь виставлений buy-stop вище U — інша модель: вхід може виконатися всередині бару, а ціна розвернутися до закриття. Несприятливе закриття не скасовує виконання заднім числом.
Виходи: фіксований структурний стоп, підтягування стопа за нижньою межею каналу з коротшим вікном або вихід за часом. Виберіть просту конфігурацію до оцінювання. Для входу на ретесті задайте глибину повернення, допустиму реакцію й строк ордера в барах. Брак ретесту — записана пропущена можливість, а не дозвіл наздоганяти ціну.
Бар, що торкнувся стопа й цілі, потребує детальніших даних або заданого консервативного порядку подій. Тести гепів змінюють фактичне виконання й ризик, але не початковий час сигналу чи зафіксований рівень. Відмова до надсилання та збитковий виконаний ордер — різні результати.
Для рухомого трейлінг-стопу також потрібне правило часу. Якщо вчорашня нижня смуга оновлюється після сьогоднішнього закриття, новий стоп не може захистити попередній рух всередині бару. Зберігайте кожну редакцію стопу та час його активації, замість того, щоб застосовувати остаточний трейлінг у зворотному напрямку вздовж бару.
Обсяг може відбирати сильні рухи й дорожчі виконання
Пропонований фільтр вимагає RVOL≥1.5 відносно порівнянної історії часу сесії. При рішенні після завершеного закриття весь обсяг сигнального бару відомий. Для стоп-ордера на вхід, надісланого раніше, дозвіл виставлення залежить лише від уже відомого обсягу. Повний обсяг, виміряний після виконання, не може дозволити вхід заднім числом.
Розділіть гілку, що орієнтована лише на ціну, гілку з мінімальною ліквідністю та гілку з аномальним обсягом. Вони відповідають на різні питання: базова торгова здатність проти додаткової інформації. Підмножина з високим RVOL може рухатися далі, водночас зазнаючи більших розривів та спредів, тому реакція валової ціни є недостатньою.
Порівняйте чисте математичне очікування, експозицію та число відхилених можливостей. Бюджети ризику мають збігатися між варіантами; звітуйте за ліквідністю або часом доби за групами, визначеними на минулих даних. Вища частка виграшів у малій підвибірці автоматично не покращує дохідності чи просадки портфеля.
Для повернення за рівень на кількох барах окремо зберігайте обсяг виносу й повернення. Їхнє відношення можна досліджувати з нормалізацією різної тривалості інтервалів. Агреговані OHLCV не показують, чи активність була точно на рівні Дончіана, чи деінде всередині широкого бару.
Перевірте розрахунок опорних даних перед застосуванням стратегії
Зареєструйте невелику сітку параметрів розробки, наприклад N=10,20,40. Для кожного сигналу зберігайте ціни меж, час екстремумів і вік рівня, зокрема його зміну через вихід старого екстремуму з вікна. Це відділяє ринкову поведінку від механіки вікна й полегшує аналіз чутливості.
Тест причинності змінює H[t], зберігаючи попередню історію: U[t] має лишитися незмінним. Зміна H[t−1] може змінити U[t]. Додайте випадки пропущених барів, свят, гепів відкриття й застарілих даних. Порівняйте пакетний та потоковий розрахунки, щоб помилка зміщення на один бар не ховалася за правдоподібним графіком.
Лише потім оцінюйте заздалегідь відкладений позавибірковий період: оборот, комісії, експозицію, просадку й чутливість до виконання. Відбір спеціальних новин, відкриття чи закриття сесії рахуйте окремими дослідницькими пробами. Звітуйте про невдалих кандидатів і ретести, яких не було, а не лише завершені угоди від зручних меж.
Поширені помилки
Пересувати рівень услід за виносом
Повернення за оновлену межу може відрізнятися від повернення за початково пробитий рівень.
Плутати дотик із перетином
Рівність U ще не означає пробій; зафіксуйте округлення до тику й правила порівняння.
Короткі вікна приховують свої витрати на оборот
Менше N може створювати часті сигнали, вартість виконання яких переважає їхню валову перевагу.
Список перевірки перед застосуванням методу
Позначайте кожен пункт після перевірки на власних даних. Прогрес зберігається в цьому браузері й не засвідчує прибутковість стратегії.
Поширені запитання
Чи продавати при дотику до верхньої межі?
Загального висновку немає. Продаж у розрахунку на відбій від межі та купівля її пробою — протилежні гіпотези з окремими визначеннями й тестами.
Чи може Дончіан замінити півоти?
Він дає рівень для пробою, але не підтвердження розвороту барами праворуч і не послідовність свінгів, як детектор півотів.
Джерела дослідження
Кожне джерело підтверджує визначення або докази, описані поруч. Псевдокод, штучні приклади та запропоновані параметри потребують окремої перевірки.
- Donchian ChannelsTradingView. Прочитано формули каналу та опис застосування. Перевірено: .
- pandas.Series.shiftpandas. Прочитано документацію API для перевірки зсуву значень. Перевірено: .
- Pine Script: StrategiesTradingView. Прочитано опис створення ордерів, наступного доступного тику та поведінки стоп-ордерів. Перевірено: .
Пов’язані методи
Примітка про ризики
Матеріал призначений для навчання й планування досліджень, а не є фінансовою порадою. Backtest моделює минулі дані, не гарантує майбутніх результатів і не здійснює реальних угод. Методи бібліотеки не обов’язково реалізовані в застосунку. Дивіться методологію і навчальний центр.
Перевірте правила, перш ніж ризикувати реальним капіталом
Перевірте можливості застосунку, дані й кожну змодельовану угоду; складні детектори можуть потребувати окремої реалізації.
Завантажити Backtest в App Store