Пишемо тестер-оптимізатор своїми руками! частина 1

Спонсор цієї статі - сайт Richinvest.biz - торгуйте бінарніми опціонами з максимальним прибутком!

Вступ. Методи оптимізації стратегійЯк ви вже зрозуміли з попередньої статті, оптимізація методом перебору не ефективна. З огляду на швидкості тестування, недоцільно перебирати всі можливі параметри. Є, звичайно, вже готові продуктивні оптимізатори стратегій в інших програмних продуктах. Але як в них перевести свої стратегії? Чи всі може цей тестувальник, що нам потрібно? Чи будуть тести відображати реальність? Як правило, до них потрібні всякі коннектори, конвертори і ін. Милиці, що не належать до наших завдань. До того ж це "чорні ящики" і як вони там вважають насправді, ніхто не знає. А коли справа стосується грошей не повинно бути місця всяким випадковостям і невизначеностей. На слово виробникам такого програмного забезпечення я не вірю. Скільки разів стикався в найсерйозніших продуктах з всякими глюками і багами, листами і дзвінками в техпідтримку. При цьому ми стаємо залежними від абсолютно не потрібних нам людей. Загалом, довіри у мене до них ніякого. Всі ці проблеми сильно уповільнюють реалізацію наших алгоритмів, і відповідно забирають наш час і гроші. І я задався питанням: "А чому б не написати свій оптимізатор? Невже так складно?" Як виявилося складно, але цілком реально. До того ж з'являється впевненість у результатах і свобода в настройках та модернізації і модифікаціях програми. Власне з цими думками я взявся за роботу. За основу взяв стохастическую оптимізацію. Стохастична оптимізація - це клас алгоритмів оптимізації, що використовує випадковість в процесі пошуку оптимуму. Алгоритми стохастичною оптимізації використовуються в разі, якщо цільова функція складна, багатоекстремального, з розривами, з перешкодами і ін. При цьому вона дозволяє досліджувати тільки частина області варіантів стратегій і на підставі отриманих даних скласти уявлення про простір в цілому.Ознайомився з основними застосовуваними стохастическими способами оптимізації - генетика, монте-карло їх різновидами і іншими методами. Взагалі різновидів стохастичних методів як виявилося дуже багато. Наприклад, метод "Роя частинок". Або настільки популярні "Генетичні алгоритми". Є елегантні рішення типу алгоритму "Імітації відпалу" Наприклад, останній спосіб з високим ступенем гарантує знаходження глобального екстремуму. Так як при цьому методі він періодично відхиляється від шляху і додатково вивчає сусідні області. Але швидкість дослідження не найвища. Суть методів одна - ми вибираємо випадкові значення і так чи інакше їх аналізуємо. Від способу до способу змінюються лише два параметри - швидкість і точність дослідження. Причому обернено пропорційно. Чим вище швидкість тестування, тим гірше якість результатів і навпаки. При виборі методу кожен вирішує сам, ніж готовий пожертвувати. Пошук екстремумів Наприклад, метод "Імітації відпалу" дозволяє знайти глобальний екстремум. Однак, якщо подумати, то сам глобальний екстремум нам ні до чого, якщо до нього немає збіжності. Тобто якщо навколо екстремуму сусідні умовно рівномірно не зменшуються, то дуже ймовірно, що цей глобальний екстремум носить випадковий характер і користі нам від нього буде мало так як він неадекватний, а розрахунки нам зіпсує. Тому так важливо вивчити параметри навколо екстремуму. Якщо є збіжність, значить є система і цю стратегію можна вивчати далі. Все стохастичні методи оптимізації мають один спільний недолік - можуть упертися в якийсь локальний екстремум, а той самий оптимальний випустити з виду. Щоб цього уникнути, потрібно максимально збільшувати області вибірок і кількість ітерацій. Але від цього страждає швидкість розрахунків. Так що потрібно завжди шукати золоту середину. Через складність і не очевидності розрахунків, методи "Імітації отжиги" та інші "Рої частинок" я відклав убік) В результаті прийшов до висновку, що найдоступніший і зручний спосіб в моєму випадку це оптимізація методом "Монте-Карло". Інтерфейс тестера-оптимізатора "Монте-Карло":

Продовження читайте в другій частині. Хотілося б поблагодоріть хлопців з S #, за те що, допомогли мені почати мій шлях в алготрейдінг. Всім висхідного тренда! З повагою, Bond. Мій нік в Скайпі: bond_algotrade