Бектестинг на Форекс: як перевірити стратегію без зазирання в майбутнє
Бектестинг на Форекс застосовує чіткі торгові правила до минулих цін і показує, які угоди виникли б за заданих умов виконання. Корисний тест розкриває послідовність подій, дані й витрати. Він не встановлює, як саме виконав би заявки брокер і скільки стратегія заробить у майбутньому.
Автор · Редактор
- Автор
- Микола Заваров
- Редактор
- Андрій Бондаренко
Перевірено

Головне
Сигнал може використовувати завершену свічку лише після її закриття. Виконання має відбуватися за наступної події, яку допускає модель тесту.
Спред, проковзування та комісію потрібно враховувати узгоджено. Витрати, уже включені в ціни виконання, не можна віднімати повторно.
Відкладена історична вибірка втрачає незалежність, коли її результати впливають на подальші рішення. Вигаданий приклад нижче навчає механіки, а не підтверджує стратегію.
Що таке бектестинг на Форекс?
Бектестинг — це послідовне відтворення: беруть фіксоване правило, проходять доступні спостереження в часі та записують рішення, припущення щодо виконання й результат. Для стратегії Форекс потрібно визначити валютну пару, цінові дані, розмір позиції, входи, виходи та торгові витрати. Питання в тому, що вийшло за цих правил і припущень, а не в тому, чи можна заднім числом знайти привабливі угоди.
Ручний тест можна провести з покроковим переглядом графіка та журналом. Автоматичний доручає ту саму послідовність програмі. Автоматизація полегшує повторення, проте не виправляє правило, яке непомітно використовує майбутні ціни, або припущення щодо виконання, для якого в даних бракує інформації.
Уявіть перевірку, яка дивиться лише на те, чи досягла ціна цілі коли-небудь після входу. Вона не відповідає, чи спрацював раніше стоп, за якою стороною котирування можна було укласти угоду та чи існував сигнал у момент входу. Змістовний тест визначає це до оцінки підсумкового числа.
Розділяйте три питання: що правило встигло побачити, яке виконання допустила модель і які записи внаслідок цього з’явилися в журналі.
Визначте правила до перегляду результату
Складіть короткий опис, якого інша людина зможе дотримуватися без запитань про те, які угоди вам сподобалися. Формулювання «купувати за посилення імпульсу» недостатньо. Укажіть ціни, за якими оцінюється імпульс, момент їхньої доступності й дії за суперечливих умов. Зберігайте версію та дату, щоб змінене правило непомітно не підмінило початково перевірене.
- Інструмент і спостереження: символ, таймфрейм, торгові години, часовий пояс та допустимий спосіб обробки пропусків.
- Вхід і вихід: точні умови, час формування сигналу, допустима подія виконання та стан позиції.
- Обсяг: фіксована кількість одиниць або повністю описане правило розрахунку, зокрема можливість збільшувати відкриту позицію.
- Виконання й витрати: сторона котирування, спред, комісія, проковзування та фінансування перенесення через ніч.
- Межі: підготовка індикатора, облік відкритої позиції та сигналів на останньому спостереженні.
В інтерактиві використано навмисно просте правило лише для довгих позицій. Після закриття кожної п’ятихвилинної свічки її ціну закриття порівнюють із середнім трьох останніх закриттів, включно зі щойно завершеною свічкою. Якщо позиції немає й close вище SMA3, купівля стає в чергу на відкриття наступної свічки. Якщо довга позиція є й close нижче SMA3, у чергу стає вихід. За рівності нічого не змінюється. Повторне закриття вище середньої не додає обсяг до вже відкритої позиції.
Це умова «вище/нижче», а не обов’язковий перетин середньої й не рекомендація стратегії. Розмір позиції завжди становить 10 000 EUR. У власному дослідженні можна задати інші правила, але зміна кількох умов після перегляду результату створює новий експеримент. Шаблон торгового плану допомагає відокремити чинну специфікацію від запропонованих змін.
Виберіть дані, достатні для моделі виконання
Почніть із питання, на яке дані здатні відповісти. Свічка OHLC містить відкриття, максимум, мінімум і закриття; чотири значення не показують усі проміжні ціни та послідовність досягнення максимуму й мінімуму. Якщо всередині однієї свічки розташовані і стоп, і ціль, за цією свічкою зазвичай не можна встановити, що спрацювало раніше. Тут midpoint — ціна (Bid + Ask) / 2 у конкретний момент. SMA3 — середнє значення цін midpoint на закритті трьох послідовних барів.
Дані або налаштування | Що з’ясувати до тесту |
|---|---|
Bid, Ask, середня ціна або Last | Визначте основу котирування. Середня ціна між Bid і Ask сама собою не є ціною купівлі чи продажу. |
Свічки або тики | Узгодьте деталізацію з логікою заявок. Не вигадуйте точний шлях ціни всередині свічки за чотирма значеннями. |
Час і сесії | Запишіть часовий пояс, межі свічок, розриви вихідних та відсутні інтервали. |
Специфікація символу | Перевірте крок ціни, розмір контракту, валюту результату й одиниці зазначеного спреда. |
Прокрутіть убік, щоб порівняти всі стовпці ↔
Документація MetaTrader 5 про тики пояснює, чому потрібно розрізняти ціни графіка й виконання: купівля та продаж використовують різні сторони котирування, а доступний графік не обов’язково показує обидві. Для чутливого до ціни правила це може змінити і можливість угоди, і її результат.
Режим «реальні тики» також потребує перевірки даних. Документація MQL5 з тестування описує ситуації, коли тестер генерує тики за відсутності або неузгодженості записів реальних тиків. Записуйте вибраний режим і з’ясовуйте причини попереджень про покриття: сама назва налаштування не описує кожне використане спостереження.
Наш інтерактив містить 36 вигаданих свічок EURUSD за середньою ціною, з інтервалом п’ять хвилин, усередині однієї умовної денної сесії. Це не завантажена ринкова історія. У прикладі немає стопових і лімітних заявок або цілей, порядок виконання яких довелося б відновлювати всередині свічки. Він пояснює послідовність подій та облік витрат, але не показує, чи працює правило SMA на EURUSD.
Простежте шлях сигналу до наступної події виконання
Розберіть бектест крок за кроком
Простежте за фіксованим правилом на 36 вигаданих п’ятихвилинних барах EUR/USD. Їхні ціни mid розташовані посередині між Bid та Ask. Змініть припущення щодо витрат і перевірте сигнал, наступне відкриття та облік результату.
Лише навчальні дані. Ці бари вигадані: це не ринкова історія і не доказ дієвості правила.
Правило залишається незмінним
Після закриття бара порівняйте ціну mid на його закритті із середнім значенням цін mid на закритті цього та двох попередніх барів. Вище SMA3 — відкрити лонг, якщо позиції немає. Нижче SMA3 — закрити лонг. За рівності нічого не змінювати. Розмір позиції — 10 000 EUR, результат — у USD.
Рішення може виконатися лише на наступному відкритті всередині вибраного вікна. Повторні сигнали на купівлю не збільшують позицію. Тут немає шортів, стопів, лімітних ордерів, плати за перенесення та підбору параметрів.
Бар 36 вибраного вікна (1–36) · 11:55
Звірте результат
- Закриті угоди · чистий P/L
- -3,70 USD
- Відкрита позиція · оцінка P/L з комісією за вхід
- 16,25 USD
- Загальний P/L моделі
- 12,55 USD
Чистий результат закритих -3,70 USD + оцінка відкритої 16,25 USD = загальний результат 12,55 USD.
Закрито позицій: 4. Виконань до цього кроку: 9.
Відкритий лонг оцінюється за останньою ціною mid на закритті мінус половина спреда. Сплачена комісія за вхід віднімається один раз. Майбутні комісія та проковзування під час виходу в цю оцінку не входять.
Сигнал на продаж на барі 36 ще очікує виконання. Позиція залишається відкритою, комісію за вихід не нараховано. Наступного відкриття всередині вікна немає, тому останній сигнал тут не виконається.
Де враховані витрати
- P/L закритих позицій за цінами виконання
- -0,90 USD
- Комісії закритих позицій
- 2,80 USD
- Оцінка відкритого P/L до комісії за вхід
- 16,60 USD
- Сплачена комісія за вхід у відкриту позицію
- 0,35 USD
- Усі сплачені комісії
- 3,15 USD
- Вплив спреда, уже врахований у виконаннях
- 5,40 USD
- Проковзування, уже враховане у виконаннях
- 1,80 USD
- Додаткова половина спреда в оцінці відкритої позиції
- 0,60 USD
Спред і проковзування вже закладені в ціни виконання: не віднімайте показані суми повторно. Комісія — окреме списання. Оцінка відкритої позиції не означає виконаний вихід.
Раннє та пізнє вікна — окремі навчальні відрізки. Це не позавибіркова перевірка і не форвард-тест на майбутніх котируваннях. Позиція з раннього вікна не закривається приховано й не переноситься в пізнє. Їхній P/L не можна додавати як безперервну історію рахунку.
Показано лише пройдені бари. Суцільна лінія з’єднує ціни mid на закритті, пунктир — SMA3. Трикутники вгору та вниз позначають умовні купівлі й продажі на відкритті відповідного бара. Вертикальна вісь — USD за EUR.
USD за EUR
П’ятихвилинний бар
- Ціна mid на закритті
- SMA3
- Купівля на відкритті
- Продаж на відкритті
Сигнал → наступне відкриття → позиція
Читайте рядок за часом: спочатку виконання попереднього рішення на відкритті, потім оцінка поточного закриття. Лінія між барами не додає проміжних цін або виконань.
| Бар · час прикладу | На цьому відкритті | Ціна mid закриття / SMA3 | На цьому закритті | Після закриття бара | Загальний P/L моделі |
|---|---|---|---|---|---|
| 109:00 | Виконання немає | 1,10000— | Менше трьох закриттів: рішення немає | Без позиції | 0,00 USD |
| 209:05 | Виконання немає | 1,10020— | Менше трьох закриттів: рішення немає | Без позиції | 0,00 USD |
| 309:10 | Виконання немає | 1,100401,10020 | Вище SMA3: купити на наступному відкритті | Без позиції | 0,00 USD |
| 409:15 | Купівля за 1,10058; сигнал бара 3 | 1,100801,1004667 | Вище SMA3: зберегти лонг без нової заявки | Лонг 10 000 EUR | 1,25 USD |
| 509:20 | Виконання немає | 1,101201,10080 | Вище SMA3: зберегти лонг без нової заявки | Лонг 10 000 EUR | 5,25 USD |
| 609:25 | Виконання немає | 1,101601,10120 | Вище SMA3: зберегти лонг без нової заявки | Лонг 10 000 EUR | 9,25 USD |
| 709:30 | Виконання немає | 1,101801,1015333 | Вище SMA3: зберегти лонг без нової заявки | Лонг 10 000 EUR | 11,25 USD |
| 809:35 | Виконання немає | 1,101601,1016667 | Нижче SMA3: продати на наступному відкритті | Лонг 10 000 EUR | 9,25 USD |
| 909:40 | Продаж за 1,10142; сигнал бара 8 | 1,101301,1015667 | Нижче SMA3: залишитися без позиції | Без позиції | 7,70 USD |
| 1009:45 | Виконання немає | 1,101001,10130 | Нижче SMA3: залишитися без позиції | Без позиції | 7,70 USD |
| 1109:50 | Виконання немає | 1,100801,1010333 | Нижче SMA3: залишитися без позиції | Без позиції | 7,70 USD |
| 1209:55 | Виконання немає | 1,101001,1009333 | Вище SMA3: купити на наступному відкритті | Без позиції | 7,70 USD |
| 1310:00 | Купівля за 1,10118; сигнал бара 12 | 1,101201,10100 | Вище SMA3: зберегти лонг без нової заявки | Лонг 10 000 EUR | 6,95 USD |
| 1410:05 | Виконання немає | 1,101001,1010667 | Нижче SMA3: продати на наступному відкритті | Лонг 10 000 EUR | 4,95 USD |
| 1510:10 | Продаж за 1,10072; сигнал бара 14 | 1,100701,1009667 | Нижче SMA3: залишитися без позиції | Без позиції | 2,40 USD |
| 1610:15 | Виконання немає | 1,100901,1008667 | Вище SMA3: купити на наступному відкритті | Без позиції | 2,40 USD |
| 1710:20 | Купівля за 1,10108; сигнал бара 16 | 1,101301,1009667 | Вище SMA3: зберегти лонг без нової заявки | Лонг 10 000 EUR | 3,65 USD |
| 1810:25 | Виконання немає | 1,101601,1012667 | Вище SMA3: зберегти лонг без нової заявки | Лонг 10 000 EUR | 6,65 USD |
| 1910:30 | Виконання немає | 1,101801,1015667 | Вище SMA3: зберегти лонг без нової заявки | Лонг 10 000 EUR | 8,65 USD |
| 2010:35 | Виконання немає | 1,101401,10160 | Нижче SMA3: продати на наступному відкритті | Лонг 10 000 EUR | 4,65 USD |
| 2110:40 | Продаж за 1,10122; сигнал бара 20 | 1,101001,10140 | Нижче SMA3: залишитися без позиції | Без позиції | 3,10 USD |
| 2210:45 | Виконання немає | 1,101201,10120 | Дорівнює SMA3: залишитися без позиції | Без позиції | 3,10 USD |
| 2310:50 | Виконання немає | 1,100801,10100 | Нижче SMA3: залишитися без позиції | Без позиції | 3,10 USD |
| 2410:55 | Виконання немає | 1,100401,10080 | Нижче SMA3: залишитися без позиції | Без позиції | 3,10 USD |
| 2511:00 | Виконання немає | 1,100601,10060 | Дорівнює SMA3: залишитися без позиції | Без позиції | 3,10 USD |
| 2611:05 | Виконання немає | 1,100901,1006333 | Вище SMA3: купити на наступному відкритті | Без позиції | 3,10 USD |
| 2711:10 | Купівля за 1,10103; сигнал бара 26 | 1,100601,10070 | Нижче SMA3: продати на наступному відкритті | Лонг 10 000 EUR | -2,15 USD |
| 2811:15 | Продаж за 1,10042; сигнал бара 27 | 1,100301,10060 | Нижче SMA3: залишитися без позиції | Без позиції | -3,70 USD |
| 2911:20 | Виконання немає | 1,100601,10050 | Вище SMA3: купити на наступному відкритті | Без позиції | -3,70 USD |
| 3011:25 | Купівля за 1,10078; сигнал бара 29 | 1,101101,1006667 | Вище SMA3: зберегти лонг без нової заявки | Лонг 10 000 EUR | -1,45 USD |
| 3111:30 | Виконання немає | 1,101501,1010667 | Вище SMA3: зберегти лонг без нової заявки | Лонг 10 000 EUR | 2,55 USD |
| 3211:35 | Виконання немає | 1,101901,10150 | Вище SMA3: зберегти лонг без нової заявки | Лонг 10 000 EUR | 6,55 USD |
| 3311:40 | Виконання немає | 1,102301,10190 | Вище SMA3: зберегти лонг без нової заявки | Лонг 10 000 EUR | 10,55 USD |
| 3411:45 | Виконання немає | 1,102701,10230 | Вище SMA3: зберегти лонг без нової заявки | Лонг 10 000 EUR | 14,55 USD |
| 3511:50 | Виконання немає | 1,103101,10270 | Вище SMA3: зберегти лонг без нової заявки | Лонг 10 000 EUR | 18,55 USD |
| 3611:55 | Виконання немає | 1,102501,1027667 | Нижче SMA3: продати на наступному відкритті | Лонг 10 000 EUR | 12,55 USD |
Таблиці прокручуються горизонтально. За потреби перейдіть до області таблиці клавішею Tab і скористайтеся стрілками.
Журнал позицій
Закрита позиція включає обидві сплачені комісії. Відкрита — лише комісію за вхід та оцінку за Bid, без вигаданої угоди закриття.
| Позиція | Виконання входу | Виконання виходу / оцінка | P/L за цінами mid без витрат | P/L за виконаннями / оцінкою | Сплачена комісія | Чистий P/L закриття / оцінки |
|---|---|---|---|---|---|---|
| 1Закрита | Бар 4 · 1,10058 | Бар 9 · 1,10142 | 10,00 USD | 8,40 USD | 0,70 USD | 7,70 USD |
| 2Закрита | Бар 13 · 1,10118 | Бар 15 · 1,10072 | -3,00 USD | -4,60 USD | 0,70 USD | -5,30 USD |
| 3Закрита | Бар 17 · 1,10108 | Бар 21 · 1,10122 | 3,00 USD | 1,40 USD | 0,70 USD | 0,70 USD |
| 4Закрита | Бар 27 · 1,10103 | Бар 28 · 1,10042 | -4,50 USD | -6,10 USD | 0,70 USD | -6,80 USD |
| 5Відкрита · лише оцінка | Бар 30 · 1,10078 | Бар 36 · 1,10244 | 18,00 USD | 16,60 USD | 0,35 USD | 16,25 USD |
CSV містить лише чинний розрахунок до вибраного бара. Сталі англійські назви полів, десяткова крапка та повна точність моделі дають змогу перевірити арифметику. Округлюється відображення, а не розрахунок.
Таблиці прокручуються горизонтально. За потреби перейдіть до області таблиці клавішею Tab і скористайтеся стрілками.
Переглянути вигадані дані OHLC
Усі ціни нижче — mid, середина між Bid та Ask. Максимуми й мінімуми показані для перевірки даних; правило «закриття → наступне відкриття» не вигадує за ними виконання. Рядки підготовки SMA позначені окремо й не створюють угод.
| Бар · час прикладу | Відкриття | Максимум | Мінімум | Закриття |
|---|---|---|---|---|
| 1 · 09:00 | 1,09980 | 1,10010 | 1,09970 | 1,10000 |
| 2 · 09:05 | 1,10000 | 1,10035 | 1,09980 | 1,10020 |
| 3 · 09:10 | 1,10020 | 1,10060 | 1,10005 | 1,10040 |
| 4 · 09:15 | 1,10050 | 1,10090 | 1,10040 | 1,10080 |
| 5 · 09:20 | 1,10080 | 1,10135 | 1,10060 | 1,10120 |
| 6 · 09:25 | 1,10120 | 1,10180 | 1,10105 | 1,10160 |
| 7 · 09:30 | 1,10160 | 1,10190 | 1,10150 | 1,10180 |
| 8 · 09:35 | 1,10180 | 1,10195 | 1,10140 | 1,10160 |
| 9 · 09:40 | 1,10150 | 1,10170 | 1,10115 | 1,10130 |
| 10 · 09:45 | 1,10130 | 1,10140 | 1,10090 | 1,10100 |
| 11 · 09:50 | 1,10100 | 1,10115 | 1,10060 | 1,10080 |
| 12 · 09:55 | 1,10080 | 1,10120 | 1,10065 | 1,10100 |
| 13 · 10:00 | 1,10110 | 1,10130 | 1,10100 | 1,10120 |
| 14 · 10:05 | 1,10120 | 1,10135 | 1,10080 | 1,10100 |
| 15 · 10:10 | 1,10080 | 1,10100 | 1,10055 | 1,10070 |
| 16 · 10:15 | 1,10070 | 1,10100 | 1,10060 | 1,10090 |
| 17 · 10:20 | 1,10100 | 1,10145 | 1,10080 | 1,10130 |
| 18 · 10:25 | 1,10130 | 1,10180 | 1,10115 | 1,10160 |
| 19 · 10:30 | 1,10165 | 1,10190 | 1,10155 | 1,10180 |
| 20 · 10:35 | 1,10175 | 1,10190 | 1,10120 | 1,10140 |
| 21 · 10:40 | 1,10130 | 1,10150 | 1,10085 | 1,10100 |
| 22 · 10:45 | 1,10100 | 1,10130 | 1,10090 | 1,10120 |
| 23 · 10:50 | 1,10120 | 1,10135 | 1,10060 | 1,10080 |
| 24 · 10:55 | 1,10080 | 1,10100 | 1,10025 | 1,10040 |
| 25 · 11:00 | 1,10040 | 1,10070 | 1,10030 | 1,10060 |
| 26 · 11:05 | 1,10060 | 1,10105 | 1,10040 | 1,10090 |
| 27 · 11:10 | 1,10095 | 1,10115 | 1,10045 | 1,10060 |
| 28 · 11:15 | 1,10050 | 1,10060 | 1,10020 | 1,10030 |
| 29 · 11:20 | 1,10030 | 1,10075 | 1,10010 | 1,10060 |
| 30 · 11:25 | 1,10070 | 1,10130 | 1,10055 | 1,10110 |
| 31 · 11:30 | 1,10110 | 1,10160 | 1,10100 | 1,10150 |
| 32 · 11:35 | 1,10150 | 1,10205 | 1,10130 | 1,10190 |
| 33 · 11:40 | 1,10190 | 1,10250 | 1,10175 | 1,10230 |
| 34 · 11:45 | 1,10230 | 1,10280 | 1,10220 | 1,10270 |
| 35 · 11:50 | 1,10270 | 1,10325 | 1,10250 | 1,10310 |
| 36 · 11:55 | 1,10310 | 1,10330 | 1,10235 | 1,10250 |
Таблиці прокручуються горизонтально. За потреби перейдіть до області таблиці клавішею Tab і скористайтеся стрілками.
Завантажте протокол дослідження
Заповніть редагований текстовий список до перегляду результатів окремого експерименту. Він не підтверджує якість тесту й не перетворює вигаданий ряд на ринкові докази.
Завантажити протокол · TXTМежі моделі
Фіксований обсяг, повні виконання, незмінні задані спред, проковзування й комісія; затримка — лише до наступного відкриття. Немає поточних котирувань, часткових виконань, плеча, ліквідації за маржею, поповнень, виведень і правил конкретного брокера. Це розбір послідовності та обліку, а не емулятор брокера чи оптимізатор стратегії.
Цей компонент обчислює в поточній вкладці: він не передає введені значення та не зберігає їх у сховищі браузера. Файли створюються лише після вашого натискання на завантаження. Це стосується лабораторії, а не решти сайту.
Просувайте приклад по одній свічці. На відкритті свічки виконується допустима інструкція, поставлена в чергу після попереднього закриття: використовуються поточна ціна відкриття та вибрані витрати. Лише потім модель отримує закриття цієї свічки й розраховує новий сигнал. Угода не може використовувати закриття, яке ще не відбулося.
Наприклад, сигнал купівлі після закриття свічки 3 може виконатися на відкритті свічки 4. Отримати ціну відкриття свічки 3 він не може. Тому розрив між свічками має значення. Документація стратегій TradingView також розділяє створення заявки й пізніший тик, на якому емулятор брокера може виконати її за стандартної послідовності розрахунку.
Порівняйте весь період із його першою або другою половиною. Кожний вибраний відрізок починається без позиції. Попередні закриття можуть підготувати середню, але не переносять відкриту позицію, давню комісію чи відкладену інструкцію. Це окремі навчальні запуски: їхні результати не можна додавати й подавати як безперервну історію одного рахунку.
Сигнал на останній свічці вибраного періоду не виконується, якщо наступне відкриття лежить за його межами. Уже відкрита позиція залишається видимою та оцінюється окремо; модель не вигадує вихід, щоб усі угоди стали завершеними. Зміна періоду тому може змінити і кількість угод, і відкритий стан наприкінці.
Дві половини прикладу не є перевіркою поза навчальною вибіркою. Обидві належать до одного невеликого вигаданого набору, а скидання позиції змінює експеримент.
Враховуйте витрати один раз і на одній основі
У цій моделі із середніми цінами купівля виконується за ціною відкриття плюс половина спреда плюс несприятливе проковзування. Продаж під час виходу — за ціною відкриття мінус половина спреда мінус несприятливе проковзування. Комісія окремо нараховується в USD за кожне виконання фіксованої позиції 10 000 EUR. У цьому прикладі EURUSD один піпс дорівнює 0,0001 USD за EUR.
Приклад повного входу й виходу | Розрахунок |
|---|---|
Середня ціна входу / виходу | 1,10000 / 1,10200 |
Припущення | Спред 1,2 піпса; проковзування 0,2 піпса на виконання; комісія $0,35 на виконання |
Ціни виконання входу / виходу | 1,10008 / 1,10192 |
Ціновий P/L після спреда та проковзування | 10 000 × (1,10192 − 1,10008) = $18,40 |
Чистий P/L закритої угоди | $18,40 − $0,35 − $0,35 = $17,70 |
Прокрутіть убік, щоб порівняти всі стовпці ↔
Сам рух середньої ціни дав би $20,00. Не віднімайте спред і проковзування від $18,40 ще раз: вони вже закладені у виконання. Якщо середня ціна входу й виходу однакова, за цих припущень результат становитиме −$2,30. Збільшення спреда на один піпс зменшує результат повного входу й виходу на $1,00, оскільки на кожній стороні враховується половина доданого спреда.
Якщо позиція залишається відкритою, інтерактив оцінює її за останньою модельною ціною Bid і враховує вже сплачену комісію за вхід. Майбутню комісію за вихід і проковзування на виході не списують до виконання виходу. Показаний підсумок — модельний P/L, а не повний розрахунок коштів на торговому рахунку.
Постійні витрати дозволяють окремо побачити їхній вплив, але не обіцяють реальних умов котирування. Для справжнього дослідження можуть знадобитися змінний спред, інші комісії та фінансування перенесення через розрахунковий час. Наш внутрішньоденний приклад не враховує своп. У гайді про проковзування пояснено різницю між запитаною ціною, доступним котируванням і фактичним виконанням.
Розділяйте розробку, відкладену історію та майбутні спостереження
До перегляду перевірного періоду визначте, які історичні спостереження можуть впливати на розробку. Пізніший відрізок здатен перевірити правило, вибране раніше, лише поки його результати не беруть участі у виборі. Якщо постійно дивитися на відкладену вибірку й підлаштовувати стратегію, цей відрізок стає матеріалом для розробки.
Етап | Призначення | Чого він не підтверджує |
|---|---|---|
Розробка | Створити правило й дослідити припущення на дозволених для розробки даних. | Що вибрана версія збереже властивості на інших даних. |
Відкладена історична вибірка | Застосувати зафіксовану версію до пізніших, раніше не використаних спостережень. | Фактичне виконання брокера або майбутню прибутковість. |
Спостереження вперед у часі | Стежити за новими цінами після фіксації правил. | Що модельні виконання збігатимуться з реальними. |
Прокрутіть убік, щоб порівняти всі стовпці ↔
Налаштування Forward у MetaTrader 5 використовує пізнішу частину вибраного історичного інтервалу. Попри назву, це не те саме, що дочекатися майбутніх ринкових даних. У записах чітко розрізняйте назву функції платформи та метод дослідження.
Хронологія стосується й підготовки індикатора. Ранніші спостереження можуть дати потрібну історію для розрахунку на старті перевірного періоду. Вони не повинні підмішувати майбутнє закриття або непомітно створювати позицію, якщо за умовами експеримент починається без неї.
Якщо відкладена вибірка виявила проблему, зафіксуйте її. Змінена стратегія може заслуговувати на новий експеримент, але попередня вибірка вже відома. Не можна зберегти за нею статус «непереглянутого тесту», просто перейменувавши файл або вибравши іншу метрику результату.
Перевірте помилки до інтерпретації дохідності
Гарний результат — привід дослідити журнал, а не припинити перевірку. Виберіть кілька входів і виходів, зокрема незручну межу періоду, та відновіть інформацію, доступну в момент кожного рішення. Найкориснішим рядком може виявитися невиконаний сигнал або неприваблива угода, яку легко пропустити під час суб’єктивного перегляду.
- Зазирання в майбутнє: рішення використовує пізніше закриття, підтверджений майбутніми свічками патерн або значення, недоступне в зазначений час.
- Перенавчання: перевірено багато налаштувань, але збережено лише переможця без історії перебору.
- Зміщення відбору: залишено зручні дати, інструменти чи угоди, а незручні спостереження зникли.
- Невідповідність виконання: від свічкових даних вимагають підтвердити послідовність подій усередині свічки, якої в них немає.
- Помилки обліку: повторні сигнали додають незаплановані позиції, витрати списуються двічі або відкрита угода зникає на межі.
Приклади зазирання в майбутнє від TradingView показують, як майбутня інформація може створювати неправдоподібні історичні результати. Практичне питання: чи вдалося б записати той самий сигнал, якби спостереження надходили по одному? Якщо пізніші дані змінюють попереднє рішення, дослідіть цю залежність до оцінювання звіту.
Змінюйте припущення цілеспрямовано, а не до отримання зручного результату. Наприклад, порівняйте одне фіксоване правило за кількох наперед зазначених рівнів витрат. Якщо невелике збільшення витрат змінює знак результату, повідомте про цю чутливість. Це властивість експерименту, а не привід приховувати вимогливіший сценарій.
Збережіть відтворюваний протокол тесту
Після вибору періоду й витрат завантажте протокол експерименту з інтерактиву. Зберігайте його разом із показаним сценарієм і журналом. Позначка про вигадані дані суттєва: передавання чисел без цього контексту перетворить навчальну вправу на оманливе твердження про результативність.
У власному дослідженні протокол має дозволяти повернутися через місяць і зрозуміти, що саме перевірялося. Знімка підсумкового прибутку недостатньо, якщо змінилися дані, момент сигналу або спосіб обліку витрат.
- Укажіть версію правила, питання дослідження та зміни порівняно з попереднім запуском.
- Опишіть набір даних, основу котирування, часовий пояс, період, пропуски та підготовку.
- Запишіть час сигналу, припущення щодо виконання, розмір позиції, витрати й поводження з кінцевою відкритою позицією.
- Відокремте дати розробки від дат перевірки й зазначте, чи впливали перевірні результати на подальші рішення.
- Збережіть кількість угод, журнал виконань, відкритий стан і невдалі перевірки разом із підсумком.
Шаблон торгового журналу допомагає організувати окремі спостереження, а протокол описує експеримент, який їх породив. Зберігайте невдалий запуск так само ретельно, як привабливий: інакше сама історія дослідження стане вибіркою вдалих результатів.
Читайте метрики разом із контекстом
Почніть із кількості: доступних спостережень, закритих угод, виконань із нарахованою комісією та позицій, що залишилися відкритими. Відсоток без свого знаменника може зробити крихітну вибірку переконливішою, ніж вона є. Сигнал у черзі на межі періоду — не закрита угода, а відкрита позиція — не зафіксований виграш чи збиток.
Потім звірте чистий результат закритих угод з оцінкою відкритих і вже сплаченими витратами. Подивіться, де виникають втрати й наскільки підсумок залежить від кількох угод. В інтерактиві немає депозиту, моделі маржі та виведень коштів, тому його траєкторію P/L не можна читати як баланс брокерського рахунку.
Визначення та обмеження окремих показників розібрано в гайдах про профіт-фактор, криву капіталу і коефіцієнт Кальмара. Привабливий коефіцієнт не виправляє зазирання в майбутнє або нереалістичне виконання. Кілька годин вигаданих спостережень також не обґрунтовують річну дохідність чи висновок про довгострокову просадку.
Корисний висновок описує умови: яке правило перевірили, на яких даних, за яких припущень і що залишилося невідомим. «Ця версія дала збиток за підвищення витрат» — зрозуміліший результат дослідження, ніж нічим не підтверджена обіцянка прибутковості наступної версії.
Поширені запитання
Чи можна перевірити стратегію Форекс вручну?
Так. Відкривайте спостереження в часі, дотримуйтеся письмових правил і записуйте кожну допустиму угоду та припущення. Не переглядайте готовий графік із відбором лише впізнаваних ситуацій. Ручна робота потребує тих самих правил витрат і меж періоду, що й автоматичний тест.
Що вибрати для бектесту: MetaTrader 5 чи TradingView?
Вибір залежить від правила, даних і поведінки виконання, яку потрібно дослідити. Вивчіть налаштування тестера чи емулятора брокера та перегляньте окремі виконання. Різні стандартні налаштування можуть дати різні результати; саме по собі це не підтверджує прибутковість стратегії на жодній платформі.
Чи завжди потрібні реальні тики?
Потрібна деталізація залежить від правила. Стратегії, чутливій до подій усередині свічки, потрібні відомості, яких свічка може не містити. Тики додають деталі, але однаково потребують перевірки покриття, сторін котирування й припущень щодо виконання. Більше рядків не означає відсутності обмежень моделі.
Скільки угод потрібно для надійного бектесту?
Універсального числа, що підтверджує будь-яку стратегію, немає. Важливі частота, залежність між угодами, ринкові умови й кількість випробуваних варіантів. Указуйте розмір вибірки та обмеження. Невеликий вигаданий приклад тут навмисно не придатний для статистичного твердження про результативність.
Чому реальні результати можуть відрізнятися від бектесту?
Ціни, час, спред, доступна ліквідність, витрати та обробка заявок можуть відрізнятися від моделі. Тест також не містить ринкових умов, яких не було в його даних. Історичний результат залишається умовним свідченням; нові спостереження та фактичне виконання потрібно фіксувати окремо.
Чи доводить прибутковий бектест наявність переваги?
Ні. Спочатку виключіть витік майбутньої інформації та помилки обліку, потім оцініть, як обиралася й перевірялася стратегія. Результат може бути внутрішньо узгодженим і водночас залежати від невеликого чи нерепрезентативного періоду. Бектест допомагає дослідженню, але не гарантує майбутнього результату.
Джерела та матеріали
- MetaTrader 5 — Strategy TestingПеревірено
- MetaTrader 5 — Real and Generated TicksПеревірено
- MQL5 — Testing Trading StrategiesПеревірено
- TradingView — StrategiesПеревірено