Скользящая средняя с фильтрацией

Скользящая средняя с фильтрацией

Фильтр — это дополнительное условие к первичному сигналу, которое позволяет исключить некоторые убыточные сделки. к пересечению цены и скользящей средней добавим положительный наклон этой скользящей средней как фильтр. На графике сразу видно как исчезло большое количество убыточных сделок, и мы достигли то, что задумали.

Дневник разработки торгового робота

Автор: Николай Солабуто

Каждый, кто впервые приходит на фондовый рынок, задается вопросом: как торговать, чтобы не потерять деньги и еще заработать. Если спросиь об этом профессионала, ответ будет однозначным — создавать систему принятия решений.
Система принятия решенийэто набор жестких правил, которые разделены на два блока:

  • первый блок — «Торговый метод»;
  • второй блок — «Управление капиталом».

Торговый метод — инструмент, который помогает ответить на вопрос: «Что делать?». Ответов три — покупать, продавать или держать (ничего не делать).
Управление капиталом — инструмент, который отвечает на один вопрос: «Сколько?». Планируя сделку, инвестор должен знать, сколько акций (лотов) брать.
Я предлагаю пройти по шагово путь создания торгового метода.

Шаг 1. Идея

Торговая система начинается с идеи. Это правила образующие торговый метод. Метод может быть простым или сложным, на ваше усмотрение. В конечном счете, это не имеет значения. Главное, чтобы она зарабатывала деньги.

Подробней этот блок опишу позже.

Шаг 2. Сформулируйте торговый метод

Все условия должны пониматься однозначно.
Например, предписание входить в длинную позицию, когда быстрая скользящая средняя пересечет снизу вверх медленную скользящую среднюю, означает, что следует купить на открытии следующего бара по цене закрытия бара, в котором произошло пересечение. И никак иначе! Не надо ждать, пойдет рынок в вашу сторону или, наоборот, отката для вхождения по более привлекательной цене. Нужно просто купить.
Неполное и/или абстрактное определение правил стратегии — одна из самых распространенных ошибок при разработке систем.

В окончательном виде торговая система представляет набор четких правил и формул.
Для трейдеров, которые не владеют языками программирования, разработано специальное дружественное программное обеспечение. Это так называемые программы для технического анализа графиков — TradeMatic, MetaStock, Omega, Wealth-Lab и другие. Они позволяют трейдеру описывать и тестировать торговые идеи, не имея опыта программирования.

Шаг 3. Тест

Тестирования включает три основных стадии:

  • убедиться, что все формулы считаются компьютером так, как должны исчисляться согласно торговой идеи;
  • получить предварительное представление о доходах и риске;
  • получить представление об устойчивости торгового метода.

На первом этапе нужно посмотреть, правильно ли система исполняет вашу идею. Другими словами, генерирует ли она сигнал на покупку именно на том баре, на котором короткая скользящая средняя пересекает длинную скользящую среднюю, или что исполняется любое другое условие, которое вы запраграмировали.
После компьютерного тестирования осуществляется проверка торгового метода. Необходима представительная выборка данных, чтобы каждая формула и правило торговой модели были задействованы для генерации как минимум одного сигнала на покупку и продажу. Полученные торговые сигналы проверяются визуально: вы пробегаете глазами график и смотрите, ставит ли компьютер стрелки туда, где они, по идее, должны находиться. Если система функционирует правильно, первая стадия тестирования завершена. Если неправильно, нужно проверить код системы; возможно, там допущена ошибка.
Просмотр всех переменных, правил, ордеров на вход и выход должен подтвердить, что сделки генерировались соответствующими формулами и правилами. Единственный способ получить желаемый результат, — сравнить вычисления, полученные в ручном режие, с вычислениями, выполненными компьютером. Достаточно ограниченной выборки (несколько сделок).
Следующий шаг — проверка протокола сделок. Это отчет в табличной форме, содержащий дату покупки или продажи, цену и итоговые значения прибыли или убытка по каждой закрытой сделке. Цель — подтвердить, что модель покупает (продает) в тот момент и по той цене, по которой должна. Другими словами, необходимо удостовериться в действиях модели согласно вашему замыслу. По ходу такая проверка раскрывает все прочие недоработки, пропущенные во время ручного контроля.
Затем переходим к следующему этапу — получаем представление о профиле прибыли и риске торгового метода до оптимизации. Торговый метод должен быть умеренно прибыльным на нескольких рынках и в течение ряда временных отрезков. Каждый тест не обязательно будет показывать прибыль. Но если всякий раз фиксируется проигрыш, от такого метода лучше отказаться. Первый тест дает общее представление о прибыли и риске; панорамный обзор эффективности системы на основе «разумных» значений параметров. Главное правило — временное падение капитала не должны превышать среднегодовую прибыль (в рамках данного этапа придавать большое значение показателю прибыльности некорректно).

От торгового метода, который демонстрирует низкую эффективность, следует отказаться.

Шаг 4. Оптимизация

Оптимизировать что-либо, значит, сделать его использование более эффективным.
Проведя тест, мы получили прибыльную торговую методику, но ее результаты основаны только на одном значении — стандартном параметре индикатора. Чтобы повысить отдачу метода, его нужно изменить.
Оптимизация может улучшить один или несколько параметров:

  1. Повышение среднегодовой ставки доходности.
  2. Снижение годового риска, измеряемого временным максимальным проседанием капитала.
  3. Повышение доходности без повышения риска.

Перед оптимизацией трейдер должен определить для себя норму прибыли для приемлемого уровня риска.
Еще существуют так называемые параметры психологического комфорта. Например, процент выигрышных сделок. Если в результате оптимизации мы получаем больший процент прибыльных сделок, это значительно расширяет «зону комфорта» трейдера, что приводит к большей уверенности в модели и готовности следовать ей, не пытаться оспаривать поступающие сигналы.
Некорректная оптимизация часто приводит к «подстройке». Если допущена ошибка, торговый метод покажет очень хорошие результаты в процессе оптимизации и плохую эффективность при реальной торговле. Поэтому методы правильной оптимизации крайне важны для успешной торговли.

Цель оптимизации — найти значения параметров модели, которые будут сообщать ей максимальную эффективность в реальном времени.
Инвесторы, проводящие оптимизацию в программе для технического анализа графиков, получают список результатов, первую строчку которого занимают параметры переменной с максимальной доходностью. Они воспринимают эти параметры как самые лучшие для торгового метода. Но если взять весь список оттестированных параметров, независимо от доходности, и построить график, где по горизонтали будут параметры переменной, а по вертикали — доходность, получится весьма интересная картина.

На графике видно, как максимальная доходность достигается при определенном значение усреднения индикатора. Проблема заключается в том, что медиана не постоянна и каждый раз перемещается по горизонтали. Причем не раз в год или вслед за изменениями рыночной ситуации, а при каждой новой сделке. То есть у каждой сделки есть свой максимально эффективный период усреднения индикатора. Таким образом, период усреднения не оптимален, а пиковая доходность будет постоянно мигрировать. В результате при реальной торговле в будущем наш торговый метод даст доходность отличную от ожидаемой и как правило в худшию сторону. Если она нас устраивает, можно использовать в торговом методе найденный период усреднения. Но лучше выбрать плоский участок и взять центральное значение усреднения индикатора на этом участке.
Разумеется, начиная торговать по своему методу, мы рассчитываем на большую доходность, а не на убытки. Поэтому вывод простой: правильная оптимизация или никакой. Чтобы не сбиться с заданного курса, следует избегать типичных ошибок.

Шаг 5. Тест в реальном времени

После оформления своей идеи в стройный код программы для технического анализа графиков, тестирования полученного торгового метода на исторических периодах и проведения правильной оптимизации, мы в целом готовы выйти на рынок и совершать сделки с использованием настоящих, а не виртуальных денег. Каждому на данном этапе не терпится поскорее начать торговлю. Но нужно остановиться и провести еще работу. Назовем данный шаг тестом в реальном времени. Это может быть симуляция торговли в реальном времени без капитала или торговля «в живую» маленьким объемом (например, одним лотом), чтобы отрицательные результаты не стали фатальными.

Зачем нужен такой тест? Дело в том, что виртуальные сделки, совершаемые компьютером на стадии тестирования, отличаются от сделок при реальной торговле. В итоге получается искажение. При тестировании компьютер вводит или выводит вас из рынка по цене условия совершения сделки, не обращая внимания на то, что по этой цене у актива может не хватить ликвидности для удовлетворения выставленного приказа или не окажется встречной заявки, и придется исполнять приказ по худшей цене (отрицательное проскальзывание).
Например, у вас есть торговый метод, основный на пробое ценового уровня. Значит, нужно входить в рынок по цене на один тик выше заданного уровня. По ходу теста компьютер так и делает; все сделки получаются точно по заданной цене. Но на практике все иначе: цена стремительно пробивает условный уровень и взлетает, причем основательно. Вы уже не в состоянии получить исполнение по заданной цене, и приходится исполнять свой приказ, имея отрицательное проскальзывание, которое уменьшает доход от прибыльной сделки и увеличивает убыток системы.

Как видим, исполнение сделок на стадии тестирования и в реальности неодинаково. Если вы выяснили, что в настоящей торговле появляется отрицательное проскальзывание, стоит его учесть. По ходу теста в реальном времени вы определяете размер данного проскальзывания, и торговый метод отправляется на вторичное тестирование уже с учетом данного фактора. Компьютеру дается задание отнимать от прибыльных сделок величину проскальзывания, и ее же прибавлять к убыточным сделкам.
Если по результатам тестирования торговый метод показал отрицательный результат, вы возвращаетесь назад, на стадию «Идеи». Если положительная доходность сохраняется, и ее размер вас устраивает, можно переходить к торговле «живыми» деньгами.

Построение торгового метода

Я не ставлю перед собой задачу рассмотреть все торговые системы. Их существуетогромное количество; многие описаны  в книге Джеффри Оуэна Каца и Донна Л. Маккормика «Энциклопедия торговых стратегий».

Первый блок. Первичный сигнал

Любая торговая система начинается с первичного сигнала. Если мы изначально решили строить метод на индикаторах технического анализа, первичный сигнал будет выглядеть просто – что-то с чем-то пересеклось. Например, две скользящие средние или цена со своей скользящей средней или Стохастик с уровнем. В MetaStoke 160 встроенных индикаторов и по любому из них можно построить первичный сигнал.

К примеру, бирем метод пересечения цены и скользящей средней: когда цена пересекает скользящую среднею снизу вверх и закрывается выше скользящей средней с выбранным периодом, покупаем; если цена пересекает сверху вниз скользящую среднею и закрывается ниже, закрываем свою позицию.
Код стратегии в программе для технического анализа графиков Wealth-Lab выглядит так:

var Bar, p: integer;
PlotSeries( SMASeries( #Close, 20 ), 0, #Teal, #Thick );
for Bar := 20 to BarCount - 1 do
begin
  if LastPositionActive then
  begin
    p := LastPosition;
    if CrossUnder( Bar, #Close, SMASeries( #Close, 20 ) ) then
    begin
      SellAtMarket( Bar + 1, p, '' );
    end;
  end
  else
  begin
    if not LastPositionActive then
    begin
      if CrossOver( Bar, #Close, SMASeries( #Close, 20 ) ) then
      begin
        BuyAtMarket( Bar + 1, '0' );
      end;
    end;
  end;
end;

На графике это выглядит так:

Сначала рынок падал, затем пошел в рост. В данной ситуации нужно всего лишь купить. Но, как видим, торговый метод на основании первичного сигнала дает слишком много сделок. Если мы протестируем его на исторических данных, станет ясно, что убыточных сделок намного больше, чем прибыльных (например, 80% к 20%), а коэффициент соотношения средней прибыльной сделки к средней убыточной не велик (например 1, 2).
Что нас не устраивает в этой ситуации? Разумеется, количество убыточных сделок. Необходим хотя бы паритет прибылей и убытков (50/50). Чтобы устранить ненужные убытки, требуется фильтр.

Второй блок. Фильтр

Фильтр — это дополнительное условие к первичному сигналу, которое позволяет исключить некоторые убыточные сделки.

Теперь с импровизируем мозговой штурм. Что в нашей ситуации может стать фильтром? Ясно, что все 160 встроенных индикаторов не понадобятся. Будет вполне достаточно ограниченного набора индикаторов. Например:

  • Если мы используем в методе скользящую среднею, понимаем, что она сбоит при наличии на рынке «мути» — коррекционных движений. Такое происходит после длительного падения либо после продолжительного роста. Отфильтровать убыточные сделки, которые появляются на коррекции после падения, можно, добавив в систему еще одну скользящую среднюю, но более медленную. Фильтр, скорее всего, прозвучит так: мы игнорируем все сигналы, пока цена находиться ниже медленной скользящей средней. Но это не спасет от убыточных сделок, приходящих после длительного роста либо на промежуточных коррекциях на тренде. С ними придется смириться.
  • Если мы воспользуемся в качестве фильтра еще одной скользящей средней, первичный сигнал появится на пересечении двух скользящих средних. В итоге получим торговый метод, где первичный сигнал и фильтр образуют одно действие. Таких вариантов очень много. Есть и индикаторы, которые объединяют оба блока торгового метода.

  • В качестве фильтра можно использовать индикатор направленного движения ADX. Он показывает, есть на рынке тренд или нет. Когда индикатор растет, на рынке есть направленное движение. И неважно — в какую сторону. Фильтр будет звучать так: мы открываем длинные позиции при пересечении цены и скользящей средней, если линия ADX растет. Он обеспечивает достаточное запаздывание для четкого определения тренда. Пропускается часть тренда уменьшается величина средней прибыльной сделки. Но увеличивается количество прибыльных сделок.
  • Для фильтра подойдет и сама направленность скользящей средней. В этом случае мы открываем длинные позиции, если значение скользящей средней на текущем баре выше ее же значения на прошлом баре или двумя барами ранее. На рисунке видно, как на падении при коррекции цена пересекала снизу вверх скользящую среднюю, и что все сделки привели бы к убыткам. Введенный нами фильтр аннулирует убыточные сделки, тем самым, повышая процент прибыльных сделок.

  • Одним из показательных торговых методов является система, которую применяли «Черепашки» (три дня Дончиана). Длинная позиция открывается, если цена поднялась выше 20 дневного максимума. Для удобства применения этого метода в программах технического анализа графиков есть индикатор «Ценовой канал», который отслеживает максимальное и минимальное значения цены за конкретный период и наглядно показывает, при пробитии какого значения нужно покупать и при каком — продавать. Все хорошо, но при падении на отскоках нас будет затягивать в убыточные позиции. Чтобы их отфильтровать, Дончиан предложил использовать в качестве фильтра скользящую среднею, а именно — ее наклон. Фильтр звучит так: если наклон скользящей средней отрицателен, игнорируются все сигналы на покупку.
  • Помимо образцов трендовых методик, есть контртрендовые индикаторы. Если рассмотреть торговый метод на основании индекса силы Уайлдера (RSI), то, покупая при выходе индикатора из зоны перепроданности и продавая при выходе индикатора из зоны перекупленности, мы неплохо зарабатываем, если рынок находится в боковике. Но как только он переходит в тренд, сигналы этого индикатора приводят к убыткам. Для фильтрации подобных сигналов Болинджер предложил использовать скользящую среднюю с отложенными от нее полосами на величину двух стандартных отклонений. В этом случае фильтр будет звучать так: мы применяем сигналы на покупку и продажу от нашего индикатора RSI, если цена находится в границах полос Болинджера, и игнорируем их, если цена выходит за рамки полос Болинджера.

После разбора нескольких примеров становится понятно, что достичь паритетного соотношения между количеством прибыльных и убыточных сделок возможно. Запрограммировав свой торговый метод в программе технического анализа графиков, мы запрограммировали и первичный сигнал, и фильтр, и заодно протестировали свой метод на исторических графиках, получили соотношение прибыльных и убыточных сделок и коэффициент соотношения средней прибыльной сделки к средней убыточной: 50х50 1,8

Добавим фильтр в код, к пересечению цены и скользящей средней добавим положительный наклон этой скользящей средней как фильтр:

var Bar, p: integer;
PlotSeries( SMASeries( #Close, 20 ), 0, #Teal, #Thick );
for Bar := 20 to BarCount - 1 do
begin
  if LastPositionActive then
  begin
    p := LastPosition;
    if CrossUnder( Bar, #Close, SMASeries( #Close, 20 ) ) then
    begin
      SellAtMarket( Bar + 1, p, '' );
    end;
  end
  else
  begin
    if not LastPositionActive then
    begin
      if SMA( Bar, #Close, 20 ) > SMA( Bar - 1, #Close, 20 ) then
      begin
        if CrossOver( Bar, #Close, SMASeries( #Close, 20 ) ) then
        begin
          BuyAtMarket( Bar + 1, '0' );
        end;
      end;
    end;
  end;
end;

На графике сразу видно как исчезло большое количество убыточных сделок, и мы достигли то, что задумали. Рынок падал, а потом стал расти и нам нужно тут просто купить. Что у нас и получилось.

Итак, паритет между прибыльными и убыточными сделками достигнут. Когда, наконец, все устраивает, обращаемся ко второму показателю — соотношению средней прибыльной сделки и средней убыточной. Что теперь не так? Скорее всего, не нравится маленькая величина этого показателя. Для его увеличения нужно двигаться сразу в двух направлениях — уменьшать величину средней убыточной сделки и увеличивать размер средней прибыльной.

Третий блок. Первичный стоп

Первичный стоп нужен, чтобы уменьшить величину убытка от сделки. Мы не ликвидируем такую сделку по факту, но уменьшаем негативные последствия. До введения «первичного стопа» сигналом на закрытие позиции служило зеркальное отражение нашего «первичного сигнала». Складывается ситуация, когда цена находится выше «первичного сигнала», но есть предпосылки на то, что удерживать позицию дальше не имеет смысла, потому что вряд ли она приведет к прибыли. Чтобы определить данный момент и своевременно закрыть позицию, и нужен «первичный стоп».

Есть правильные методы выставления «первичных стопов». Они основаны на понимании теории вол Эллиотта. Эксперт утверждал, что если идет направленное движение, все откаты цены не превосходят по величине волны движения. Коррекционные волны всегда меньше волн движения; при коррекции цена не достигает уровня начала движения. Если же она его коснется, на рынке нет движения или есть, но в противоположном направлении к вашим позициям. Поэтому если цена на откате преодолевает точку начала волны движения, удерживать позицию не имеет смысла. И наоборот: возможно, есть смысл перевернуться — закрыть предыдущую позицию и открыть новую в противоположном направлении.

Согласно этому подходу мы выставляем свой «первичный стоп» на минимуме той волны движения, в которой нас затащило в позицию.

Мы добавили такой стоп себе в код:

var Bar, p: integer;
PlotSeries( SMASeries( #Close, 20 ), 0, #Teal, #Thick );
PlotSeries( OffsetSeries(LowestSeries( #Low, 20 ),-1), 0, #Blue, #Thin );
for Bar := 20 to BarCount - 1 do
begin
  if LastPositionActive then
  begin
    p := LastPosition;
    if CrossUnder( Bar, #Close, SMASeries( #Close, 20 ) ) then
    begin
      SellAtMarket( Bar + 1, p, '' );
    end
    else
    if CrossUnder(Bar,#Low,OffsetSeries(LowestSeries( #Low, 20 ),-1)) then
    begin
       SellAtMarket(Bar+1, LastPosition, 'ExitLong');
    end;
  end
  else
  begin
    if not LastPositionActive then
    begin
      if SMA( Bar, #Close, 20 ) > SMA( Bar - 1, #Close, 20 ) then
      begin
        if CrossOver( Bar, #Close, SMASeries( #Close, 20 ) ) then
        begin
          BuyAtMarket( Bar + 1, '0' );
        end;
      end;
    end;
  end;
end;

На графике он виден синей линией идущей от минимальных значений:

Четвертый блок. Текущий стоп

Благодаря предыдущему блоку мы уменьшили величину средней убыточной сделки. Теперь пора думать, как повысить размер средней прибыльной сделки. На рынке часто складывается ситуация, когда цена находится выше и «первичного сигнала», и «первичного стопа», и при этом есть предпосылки для закрытия позиции. Если же цена упадет, наша «бумажная» прибыль растает, хотя, возьми мы ее, она увеличила бы размер сделки. Таким образом, в метод просится еще один блок — «текущий стоп».

Для реализации «текущего стопа» можно использовать разныеиндикаторы. Для начала разберем сам подход с точки зрения теории волн. Эллиотт утверждал, что коррекционные волны всегда короче волн движения, поэтому защитные остановки и стопы лучше размещать на минимумах волн движения. Если они срабатывают, значит, движение, тренд закончился, и хорошо, что мы вышли из рынка. Именно по такому принципу выставляется «первичный стоп» на минимуме первой волны движения. Но что делать дальше? Как воспользоваться волновой теорией, чтобы превратить «первичный стоп» в «текущий»?
Согласно закону волн, если цена преодолевает свое предыдущее максимальное значение, на рынке развивается тенденция. В данный момент он находится в волне движения, и ее минимум можно использовать для выставления защитной остановки. Таким образом, мы перемещаем свой «первичный стоп» с минимума первой волны на минимум второй волны. В данный момент наш стоп может еще не защищать часть нашей прибыли. То, что он уменьшит размер нашей убыточной сделки — это точно.

Тенденция развивается дальше, и на смену волне отката приходит волна движения. Движение продолжается, и цена преодолевает предыдущий максимум. Затем мы аккуратненько переносим свой стоп на минимум следующей волны. В этом случае стоп точно защищает нашу прибыль, то есть превращается в «текущий стоп».

Какой индикатор выбрать для реализации «текущего стопа» в своем торговом методе, — решать самому трейдеру. При этом нельзя забывать главный принцип: после того, как срабатывает «текущий стоп”, цена не всегда идет против нас. Она может развернуться и пойти в прежнем направлении, а мы уже ликвидировали свои позиции. Чтобы ничто не мешало зарабатывать на тренде, «текущий стоп» необходимо предусмотреть на должном расстоянии от цены; он не должен к ней «прилипать». Так у нас будет шанс снова войти в рынок на основании «первичного сигнала». Следовательно, «первичный сигнал» и «текущий стоп» следует разрабатывать вместе, чтобы они дополняли друг с друга.

В нашем коде не пришлось ничего менять, так как условие, которое мы прописали при иницилизации первиченого стопа выполняют еще и функции скользящего стопа. На графике видно как синия линия начала скользить за графиком при росте цены:

Мы разобрали все четыре блока, из которых может состоять торговый метод. И наши усилии не прошли даром. Созданный нами торговый метод показал результаты лучше, чем если бы мы просто купили акции и их просто держали в своем портфеле. Зеленым цветом показан наш счет, а синия линия показывает результативность пассивного портфеля.

В завершение нужно сказать несколько общих слов по этому поводу. Сразу отмечу: для прибыльной торговли подойдет и одноблочный, и двухблочный и многоблочный торговый метод. Для дохода набор блоков роли не играет. Но разница существует. Она проявляется в соотношении средней годовой доходности и максимального падения капитала, встречающегося в истории.
Рассматривая соотношение средней годовой доходности и величины максимального исторического падения капитала, мы выявим некоторую закономерность. У одноблочных или двухблочных торговых методов заметно равенство этих двух показателей. Например, если у такого метода среднегодовая доходность лежит в районе 30%, то и падение капитала находится в той же области. А если доходность выше и составляет 60%, нужно готовиться к тому, что в один прекрасный момент капитал упадет на эти самые 60%. Собираясь работать с такими торговыми методами, нужно учитывать эту зависимость.
Если торговый метод насчитывает три блока или более, зависимость между средней годовой доходностью и максимальным падением капитала начинает смещается в сторону доходности. Например, если наш трехблочный метод показывает доходность в 30%, от него вполне ожидаемо падение капитала в районе 20%.
Еще пара советов для более удачной работы. Чтобы улучшить результаты трейдинга (сгладить колебания на кривой доходности счета), можно использовать сразу несколько торговых систем. Желательно подобрать такие, которые имеют небольшую корреляцию результатов. Сформируйте группу систем, распределяя между ними свой капитал, а результаты суммируйте и ведите общую статистику по счету. Суммарный итог работы портфеля систем всегда оказывается выше результатов отдельных систем.
Далее разделите длинные и короткие позиции по отдельным системам. Так, чтобы одни торговали исключительно от покупки (с длинной стороны), а другие, если будет нужда, — только от продажи (с короткой стороны). Различия в природе, механизмах роста и падения акций подразумевают наличие разных систем и их параметров для торговли "вверх" или "вниз ". Хотя существуют и универсальные системы для движения в обоих направлениях. Более эффективными всегда оказываются те из них, которые разделяют длинные и короткие позиции.

Как самому реализовать торговую систему и работать по ней
Итак, мы разобрались, как будем создавать, тестировать и оптимизировать свой торговый метод, и какие нюансы есть при его разработке. Но это все — теория. А как подступиться на практике?
С торговой идеей придется помучиться, таковых всегда много. Каждый раз надо будет проверять ее работоспособность, то есть тестировать на исторических данных. Сделать это можно тремя способами:

  • вручную, открывая бар за баром и записывая сделки;
  • автоматически в программе технического анализа (например, TradeMatic);
  • автоматически, написав свою собственную программу на языке программирования (например, С# или C++).

Поскольку ручное тестирование отнимает очень много времени и связано с большим количеством субъективных ошибок (например, пропуски сделок из-за усталости при тестировании больших объемов данных), а языками программирования на профессиональном уровне владеют немногие, тестирование системы в программе теханализа является оптимальным вариантом для большинства трейдеров.

Написать администратору