﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Рассказ нашего ученика 2</title>
  <id>~/topic/310/rasskaz-nashego-uchenika-2/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-10T11:36:37Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=310" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/199/</id>
    <title type="text">В прошлой статье рассмотрели общую схему создания и проектирования системы для алгоритмической торго...</title>
    <published>2013-12-18T00:50:55Z</published>
    <updated>2016-07-28T17:58:33Z</updated>
    <author>
      <name>Валентин Мирошниченко</name>
      <uri>https://stocksharp.ru/users/6156/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;В прошлой &lt;a href="http://stocksharp.com/articles/10413-rasskaz-nashego-uchenika"&gt;статье&lt;/a&gt; рассмотрели общую схему создания и проектирования системы для алгоритмической торговли на бирже. Рассмотрим более подробно работу каждого модуля.&lt;/p&gt;
&lt;p&gt;Как получить исторические данные для работы мы уже знаем. Сейчас рассмотрим необходимый минимальный функционал для своего терминала визуализации.&lt;/p&gt;
&lt;p&gt;Ниже буду приводить скриншоты моей последней версии «Анализатора», более раннюю версию можно скачать с серверов S#. Просто опишем, что из себя представляет система визуализации стратегий.
&lt;img src="/file/103035/1.png" alt="" /&gt;
Задаем диапазон тестирования, таймфрейм и тестируемый инструмент. Как дополнительно, но не обязательно можно задать комиссию, начальный депозит и др. настраиваемые параметры.&lt;/p&gt;
&lt;p&gt;Строим свечной график, также выводим индикаторы. Снизу строим график Эквити. В данном примере для оценки стратегии я использую свой расчет Профита. В стандартной версии графика PnL от S# используется немного другой вариант, более приспособленный для торговли в реальном времени с расчетом вариационной маржи.&lt;/p&gt;
&lt;p&gt;Выводим сделки на график в виде стрелок. Зеленая стрелка покупка, красная продажа. Это стандартная функция. Прикрутить к коду не сложно, главное округлить время сделки до времени свечки, а то она может выставиться некорректно.
&lt;img src="/file/103036/2.png" alt="" /&gt;
Что нам еще нужно? Не плохо бы знать, что и в какой последовательности делала наша стратегия. Нам нужно Логирование! В стандартных версиях полно разных видов окон логирования, но я как всегда не ищу легких путей и сделал свое логирование на базе ListView из WPF C#.
&lt;img src="/file/103037/3.png" alt="" /&gt;
Для удобства вывел на экран кнопки для запуска результатов тестирования и таблицу с расчетом статистических данных стратегии.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Статистика&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Очень важно перед запуском стратегии для реальной торговли на бирже проверить ее на работоспособность – протестировать. Как нам узнать какая стратегия хорошая, а какая плохая? Оказывается итоговая прибыль в конце тестирования не единственно важный показатель нашего алгоритма. Для полной картины нам нужно изучить статистические показатели нашей стратегии.&lt;/p&gt;
&lt;p&gt;Основные формулы для расчета показателей стратегии:
&lt;strong&gt;1. Profit factor (PF)&lt;/strong&gt;
Рассчитывается как отношение за определённый период суммы всех прибыльных сделок к сумме всех убыточных с положительным знаком. Большее значение соответствует меньшей вероятности разорения.
Profit Factor = [Сумма прибылей всех прибыльных сделок] / [Сумма прибылей всех убыточных сделок]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Maximum Intraday Drawdown (MIDD)&lt;/strong&gt;
Максимально Нарастающий Убыток (MIDD — Maximum Intraday Drawdown). Он обозначает самую большую финансовую яму, в которую попадала наша система.
Максимальный нарастающий убыток – это глубина максимальной просадки за период.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Вероятность выигрыша %W (P)&lt;/strong&gt;
%W(P) вероятность выигрыша (отношение количества выигрышных сделок к общему их количеству).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;вероятность выигрыша &amp;gt; 0,5.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;4. Математическое ожидание M[X]&lt;/strong&gt;
Математическое ожидание — понятие среднего значения случайной величины в теории вероятностей. В зарубежной литературе обозначается через Е[X], в русской M[X]. В статистике часто используют обозначение μ.
Наиболее распространенные варианты расчета:&lt;/p&gt;
&lt;ol class="contains-task-list"&gt;
&lt;li class="task-list-item"&gt;M&lt;input disabled="disabled" type="checkbox" checked="checked" /&gt; Математическое ожидание = вероятность выигрыша * средняя величина выигрыша + вероятность проигрыша * средняя величина проигрыша (в качестве результата прирост на 1 сделку в абсолютных величинах)&lt;/li&gt;
&lt;li class="task-list-item"&gt;M&lt;input disabled="disabled" type="checkbox" checked="checked" /&gt; Математическое ожидание (1+( средняя величина выигрыша / средняя величина проигрыша))* вероятность выигрыша -1 (в качестве результата вероятность в % получения прибыли за период)&lt;/li&gt;
&lt;/ol&gt;
&lt;ul class="contains-task-list"&gt;
&lt;li class="task-list-item"&gt;M&lt;input disabled="disabled" type="checkbox" checked="checked" /&gt; &amp;gt; 0,6 верно для варианта 2.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;5. Фактор восстановления (RF)&lt;/strong&gt;
RF (фактор восстановления, restoration factor) = отношение прибыли за период (Profit) к максимально нарастающему убытку (MIDD) за тот же период.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;при тестировании RF должен быть &amp;gt; 2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;6. Стандартное отклонение (σ)&lt;/strong&gt;
Стандартное отклонение σ или SD (sigma) — это широко используемая мера разброса или вариабельности (изменчивости) данных. Стандартное отклонение популяции определяется формулой:
SD= [S(xi-m)2/N]1/2, где m — среднее популяции, N — размер популяции.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7. Z-счет&lt;/strong&gt;
Z-счет позволяет определить эффективность торговой системы одной цифрой, предоставляя более точные результаты при сравнении с другими ТС. Кроме того, положительный либо отрицательный результат Z-счета несет в себе дополнительную информацию об особенностях использования взятой торговой системы.
Собственно, формула вычисления Z-счета имеет вид:
Z-счет = (N*(R — 0.5) — X)/((X*(X — N))/(N -1))^(1/2)
N – общее количество сделок;
X – 2&lt;em&gt;количество прибыльных сделок&lt;/em&gt;количество убыточных сделок;
R – количество серий (сколько раз после прибыльной сделки шла убыточная и наоборот);
^(1/2) – это квадратный корень.
Для определения Z-счета необходимо иметь данные как минимум по 30 сделкам. Положительный либо отрицательный Z-счет несет в себе дополнительную информацию:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Положительный Z-счет означает, что практически после каждой прибыльной сделки следует убыточная, т.е. торговая система склонна к чередованию. И, чем больше число Z-счета, тем чаще происходит чередование. Основываясь на этом, следует после каждой убыточной сделки увеличивать размер лота (т.к. следующая сделка будет прибыльной), а после прибыльной – уменьшать лот.&lt;/li&gt;
&lt;li&gt;Отрицательный Z-счет означает, что ТС имеет последовательные серии как прибыльных, так и убыточных сделок. Эти данные вырисовывают следующий сценарий – если система склонна к сериям, то после первой убыточной сделки следует прекратить торговлю и войти в рынок снова только после первой прибыльной сделки. Мы пропускаем одну прибыльную сделку, но, при этом, минуем серию убыточных.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Прочая статистическая информация:
8. Общее число сделок.
9. Число прибыльных сделок.
10. Число убыточных сделок.
11. Средняя прибыль от сделки.
12. Средний убыток от сделки.
13. Максимальная прибыль.
14. Максимальный убыток.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Есть, конечно, и другие показатели стратегии, но эти наиболее распространенные и информативные.
Так выглядит статистика в сводной таблице стратегий:
&lt;img src="/file/103038/4.png" alt="" /&gt;
&lt;strong&gt;Подробнее о тестировании и простой оптимизации&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ранее мы рассмотрели на примерах как можно визуализировать свою стратегию:
&lt;img src="/file/103039/5.png" alt="" /&gt;
И рассчитать основные ее показатели:
&lt;img src="/file/103040/6.png" alt="" /&gt;
Но все эти приложения имеют графическую оболочку (англ. Graphical user interface, GUI), что сказывается на производительности таких приложений. Для того чтобы тестировать много стратегий и очень быстро нам нужно использовать более производительную архитектуру приложений.&lt;/p&gt;
&lt;p&gt;Например, консольные приложения, хотя некоторые профессионалы умудряются обходиться вообще без GUI.&lt;/p&gt;
&lt;p&gt;Рассмотрим простое консольное приложение для тестирования стратегий методом перебора.
&lt;img src="/file/103041/7.png" alt="" /&gt;
Для тестирования нам совсем не обязательно выводить графики, строить свечки, визуализировать таблицы. Все это можно оставить на заднем плане.&lt;/p&gt;
&lt;p&gt;На примере стратегии из двух пересекающихся SMA (Simple Moving Average, простое скользящее среднее) постараемся выбрать лучшие варианты из сочетания длин периодов «короткой» и «длинной» скользящих средних.&lt;/p&gt;
&lt;p&gt;Для этого создадим диапазон параметров «длинной» SMA от 20 до 120 и выберем шаг для этого диапазона равным 1. Итоговые данные сохраним в одномерном массиве {20, 21, 22, … ,120}. Аналогично для «короткой» SMA с диапазоном от 5 до 20 с тем же шагом 1 создадим одномерный массив {5, 6, 7, …, 20}.&lt;/p&gt;
&lt;p&gt;Теперь сформируем массив всех возможных вариантов стратегий сочетанием значений массива «длинной» и «короткой» SMA. Получим следующий массив всех вариантов параметров нашей стратегии: {{20, 5}, {20, 6}, …, {20, 20}, {21, 5}, …, {120, 19}, {120, 20}}. Итого 1500 вариантов нашей стратегии. Не мало. Поэтому нам так важна скорость тестирования.&lt;/p&gt;
&lt;p&gt;В S# есть простые примеры как провести такое тестирование. Я брал исходные параметры наших SMA из массива параметров стратегий и по очереди в цикле их тестировал. В итоге, после каждого теста получал массив []MyTrades в котором хранились данные времени совершения сделок, их направление (Покупка или Продажа), объем сделок (количество контрактов в сделке) и цены сделок за временной период тестирования.&lt;/p&gt;
&lt;p&gt;В конце мы получили число массивов с результатами тестирования равное числу всех возможных параметров нашей стратегии. Сохраняем (сериализуем в бинарный файл) все наши параметры и результаты тестирования. Открываем эти файлы в рассмотренном ранее «Анализаторе», рассчитываем по этим данным статистику и получаем итоговую таблицу с результатами тестирования. Сортируем данные, например, по матожиданию и анализируем результаты. При этом можем сразу визуализировать заинтересовавшую нас стратегию.
&lt;img src="/file/103042/8.png" alt="" /&gt;
Примерно так проходит тестирование и оптимизация стратегий. Но оптимизация методом перебора зарекомендовала себя как неэффективная и ресурсоемкая при больших объемах данных. В следующей статье мы рассмотрим другие более производительные варианты оптимизации стратегий.&lt;/p&gt;
&lt;p&gt;Всем восходящего тренда! С уважением, Bond.
&lt;a href="http://stocksharp.com/edu/"&gt;Бонд наш ученик!&lt;/a&gt;&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/29069/</id>
    <title type="text">Бонд, Чем рисовали графики графики в своем анализаторе - я имею ввиду эквити, цена, индикаторы? Комп...</title>
    <published>2014-01-15T09:20:50Z</published>
    <updated>2014-01-15T09:20:50Z</updated>
    <author>
      <name>dice</name>
      <uri>https://stocksharp.ru/users/28185/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Бонд,&lt;/p&gt;
&lt;p&gt;Чем рисовали графики графики в своем анализаторе - я имею ввиду эквити, цена, индикаторы?
Компонент чартинга способен выводить несколько индикаторов сразу или каждый только в своем окне?
S# фреймворк использовали к-нибудь для приложения или все только С#/VisualStudio?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/28940/</id>
    <title type="text">MenDel: Всем привет! Прошу прощения за немного тупой вопрос, но все же Объясните пожалуйста, что дае...</title>
    <published>2014-01-09T18:55:05Z</published>
    <updated>2014-01-09T18:55:05Z</updated>
    <author>
      <name>Bond</name>
      <uri>https://stocksharp.ru/users/26882/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(28933)" rel="nofollow" target="_blank"&gt;MenDel&lt;/a&gt;:&lt;/strong&gt;
Всем привет!
Прошу прощения за немного тупой вопрос, но все же
Объясните пожалуйста, что дает нам M[X], где в качестве результата вероятность в % получения прибыли за период
4. Математическое ожидание M[X]
2) M[X] Математическое ожидание (1+( средняя величина выигрыша / средняя величина проигрыша))* вероятность выигрыша -1 (в качестве результата вероятность в % получения прибыли за период)&lt;/p&gt;
&lt;ul class="contains-task-list"&gt;
&lt;li class="task-list-item"&gt;M&lt;input disabled="disabled" type="checkbox" checked="checked" /&gt; &amp;gt; 0,6 верно для варианта 2.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Что это за показатель?
Вот получил я 67%, а что эти 67% дают?
Кто нибудь может доходчиво объяснить?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;В трейдинге ты не можешь контролировать свой доход. Никто не знает заработаешь ты в следующей сделке или проиграешь.
Но ты можешь контролировать риски. Так вот, если матожидание больше 60%, то вероятность, что в следующей сделке ты выиграешь, а не проиграешь больше. Чем больше этот процент, тем выше вероятность удачной сделки.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/28933/</id>
    <title type="text">Всем привет! Прошу прощения за немного тупой вопрос, но все же Объясните пожалуйста, что дает нам M[...</title>
    <published>2014-01-09T16:06:45Z</published>
    <updated>2014-01-09T16:06:45Z</updated>
    <author>
      <name>MenDel</name>
      <uri>https://stocksharp.ru/users/6356/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Всем привет!
Прошу прощения за немного тупой вопрос, но все же
Объясните пожалуйста, что дает нам M[X], где в качестве результата вероятность в % получения прибыли за период
4. Математическое ожидание M[X]
2) M[X] Математическое ожидание (1+( средняя величина выигрыша / средняя величина проигрыша))* вероятность выигрыша -1 (в качестве результата вероятность в % получения прибыли за период)&lt;/p&gt;
&lt;ul class="contains-task-list"&gt;
&lt;li class="task-list-item"&gt;M&lt;input disabled="disabled" type="checkbox" checked="checked" /&gt; &amp;gt; 0,6 верно для варианта 2.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Что это за показатель?
Вот получил я 67%, а что эти 67% дают?
Кто нибудь может доходчиво объяснить?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/28681/</id>
    <title type="text">MenDel: Ребят, скажите свое мнение. Имеет ли смысл учитывать при тестировании показатели при реинвес...</title>
    <published>2013-12-18T22:59:24Z</published>
    <updated>2013-12-18T22:59:24Z</updated>
    <author>
      <name>loop</name>
      <uri>https://stocksharp.ru/users/49839/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(28677)" rel="nofollow" target="_blank"&gt;MenDel&lt;/a&gt;:&lt;/strong&gt;
Ребят, скажите свое мнение.
Имеет ли смысл учитывать при тестировании показатели при реинвестирование?
Или же правильнее будет оптимизировать стратегию торговлей 1 контрактом?&lt;/p&gt;
&lt;p&gt;Обьясните пожалуйста, как рассчитывается фактор восстановления?
Допустим при торговле 1 контрактом за 8 лет профит был 77% максимальная просадка (MIDD) составила 1,5%,
то фактор восстановления будет равен 77/1,5=51,3?&lt;/p&gt;
&lt;p&gt;Да, и как считается MIDD при тестировании на 1 контракте?
Допустим стартовая сумма составила 100000 руб. идет убыточная серия сделок и мы теряем 10000 руб, Получается MIDD = 10%.
А если мы позже заработали деньги и на счете стало 200000 руб, то при тех же потерях в 10000 руб. MIDD будет = 5%.
Это как то не правильно получается, убыток то понесли одинаковый.&lt;/p&gt;
&lt;p&gt;Без реинвестирования показатель максимальной просадки в 1,5% не несет никакой смысловой нагрузки,
а вот если торговать с реинвестированием показатель отразит реальную суть вещей.
Чего кстати нельзя сказать о показателе профита. Ни там, ни там они ни о чем нам не скажут.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Одним потому что тогда нет экспоненциального искажения.
50  к 1 прибыль к риску это МегаГрааль, тут уже неважно какими метриками пользоваться.
Естественно, если прибыли в двое больще то и относительная просадка в двое меньше, потому что она относительная, всё верно.&lt;/p&gt;
&lt;p&gt;Нет, реинвестирование это пост-эффект, пост-масштабирование, при тестировании оно мешает, его можно включить только чтоб воодушевление получить:) потому что экспонента очень сексуальна.&lt;/p&gt;
&lt;p&gt;PS: Так что, где и когда сие творение можно скачать протестировать? Я надеюсь это не просто картинки, такой интерфейс я тоже могу нарисовать.
Если вдруг окажется, что это что то платное, то я меняю свое мнение на противоположное, и вместо похвалы осуждаю(не пробовал но осуждаю) такой вид пиара или как это можно ещё назвать. Это даже не пиар а веб дизайн какой то. Проект в студию, или хотя бы скомпиленный работающий продукт.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/28677/</id>
    <title type="text">Ребят, скажите свое мнение. Имеет ли смысл учитывать при тестировании показатели при реинвестировани...</title>
    <published>2013-12-18T19:18:08Z</published>
    <updated>2013-12-18T20:18:50Z</updated>
    <author>
      <name>MenDel</name>
      <uri>https://stocksharp.ru/users/6356/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Ребят, скажите свое мнение.
Имеет ли смысл учитывать при тестировании показатели при реинвестирование?
Или же правильнее будет оптимизировать стратегию торговлей 1 контрактом?&lt;/p&gt;
&lt;p&gt;Обьясните пожалуйста, как рассчитывается фактор восстановления?
Допустим при торговле 1 контрактом за 8 лет профит был 77% максимальная просадка (MIDD) составила 1,5%,
то фактор восстановления будет равен 77/1,5=51,3?&lt;/p&gt;
&lt;p&gt;Да, и как считается MIDD при тестировании на 1 контракте?
Допустим стартовая сумма составила 100000 руб. идет убыточная серия сделок и мы теряем 10000 руб, Получается MIDD = 10%.
А если мы позже заработали деньги и на счете стало 200000 руб, то при тех же потерях в 10000 руб. MIDD будет = 5%.
Это как то не правильно получается, убыток то понесли одинаковый.&lt;/p&gt;
&lt;p&gt;Без реинвестирования показатель максимальной просадки в 1,5% не несет никакой смысловой нагрузки,
а вот если торговать с реинвестированием показатель отразит реальную суть вещей.
Чего кстати нельзя сказать о показателе профита. Ни там, ни там они ни о чем нам не скажут.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>