
Кевин Дж. Дэйви сравнивает простой выход по противоположному сигналу с трейлинг-стопами, ATR-стопами и другими способами закрытия позиции. Историческая выборка: 2010–2020 годы.
В предыдущем исследовании я провёл более 500 000 бэктестов алгоритмических стратегий, чтобы выяснить, какой способ выхода показывает лучшие результаты. Я рассмотрел следующие варианты.
Простые выходы
1. Выход «стоп и разворот»
2. Выход, основанный на времени
3. Стоп-лосс, выраженный в фиксированной сумме в долларах
4. Тейк-профит, выраженный в фиксированной сумме в долларах
5. Стоп-лосс и тейк-профит, выраженные в фиксированной сумме в долларах
6. Стоп-лосс, основанный на ATR
7. Тейк-профит, основанный на ATR
8. Стоп-лосс и тейк-профит, основанные на ATR
Выходы средней сложности
9. Скользящий стоп-лосс
10. Стоп-лосс на уровне безубыточности
Сложные стопы
11. Параболический стоп-лосс
12. Chandelier стоп-лосс
13. Стоп-лосс Yo-Yo
14. Выход, основанный на канале
15. Выход, основанный на скользящей средней
Комбинированные выходы
16. Тейк-профит, выраженный в фиксированной сумме в долларах, + стоп-лосс на уровне безубыточности
17. Тейк-профит, выраженный в фиксированной сумме в долларах, + скользящий стоп-лосс
18. Стоп-лосс, выраженный в фиксированной сумме в долларах, + выход на уровне безубыточности
19. Стоп-лосс, выраженный в фиксированной сумме в долларах, + скользящий стоп-лосс
20. Стоп-лосс/тейк-профит, выраженный в фиксированной сумме в долларах, + выход на уровне безубыточности
21. Стоп-лосс/тейк-профит, выраженный в фиксированной сумме в долларах, + скользящий стоп-лосс
Каждый из этих выходов я протестировал с 5 разными входами:
1. Простой импульсный вход
If close>close[InputVar2] then buy next bar at market;If close<close[InputVar2] then sell short next bar at market;2. Вход на следующем баре после пробоя
If high=highest(high,InputVar2) then buy next bar at market;If low=lowest(low,InputVar2) then sell short next bar at market;3. Вход при пересечении скользящей средней
If close crosses above average(close,InputVar2) then buy next bar at market;If close crosses below average(close,InputVar2) then sell short next bar at market;4. Вход по полосам Боллинджера
If close crosses above BollingerBand(close, InputVar2, -2) then buy next bar at market;If close crosses below BollingerBand(close, InputVar2, +2) then sell short next bar at market;5. Вход по волатильности
If Close> close[1] + AvgTrueRange(InputVar2) * 1.5 then buy next bar at market;If Close< close[1] – AvgTrueRange(InputVar2) * 1.5 then sellshort next bar at market;Из 21 способа выхода лучшим оказался простой «стоп и разворот» — Stop & Reverse. При таком подходе противоположный сигнал закрывает текущую позицию и открывает позицию в другую сторону.
Я ожидал другого результата. Судя по комментариям, многие читатели тоже были удивлены.
В конце исследования я объявил конкурс Exit Challenge: предложил читателям прислать варианты выхода, которые, по их мнению, могли бы превзойти простой «стоп и разворот».
Отклик был хорошим: заявки поступили со всего мира. Я добавил несколько собственных вариантов и в итоге протестировал 13 новых способов выхода.
Прежде чем перейти к конкурсу, рассмотрим три популярных типа выходов.
Скользящие стопы
Стопы, основанные на ATR
Стопы в виде фиксированной суммы в долларах
Хорош ли трейлинг-стоп?
Трейлинг-стоп следует за ценой: для длинной позиции защитный уровень располагается ниже текущей цены. Если рынок достаточно сильно движется против позиции, стоп закрывает её.
Такой стоп используют для ограничения убытка или защиты накопленной прибыли.
Например, в длинной позиции можно подтягивать стоп на $500 ниже последнего минимума. По мере роста цены и появления более высоких минимумов стоп тоже поднимается, сохраняя заданный отступ. Так можно защитить часть накопленной прибыли. Примечание редакции: отступ $500 от минимума сам по себе не означает риск ровно $500 от цены входа; фактический риск зависит от положения входа, размера позиции и исполнения.
Трейлинг-стоп популярен и психологически комфортен. Однако по финансовому результату он не обязательно лучше простого выхода «стоп и разворот».
Что такое ATR-стоп?
В TradeStation стоп на основе ATR с периодом 14 можно записать так:
SetStopLoss(X * AvgTrueRange(14)* BigPointValue);Преимущество ATR-стопа — реакция на текущую волатильность. На более волатильном рынке расстояние до стопа увеличивается, что может снизить число выходов из-за рыночного шума. Недостаток в том, что денежный размер стопа тоже может стать чрезмерным.
Один из вариантов — ограничить ATR-стоп минимальной или максимальной суммой в долларах. Тогда он сохраняет реакцию на волатильность, но в заданных пределах.
Стоп с фиксированной суммой в долларах
В TradeStation такой стоп задаётся следующим образом:
SetStopLoss(DollarAmount);DollarAmount — выбранная сумма, обычно на один контракт; возможен и расчёт на всю позицию.
Многим трейдерам не нравится, что фиксированный денежный стоп не зависит от волатильности. Однако в моих тестах он во многих случаях работал лучше ATR-стопа.
Имеет смысл проверить оба варианта и сравнить их применительно к своей стратегии.
Теперь вернёмся к Exit Challenge.
Сначала опишу каждый выход, для части из них приведу использованные фрагменты кода, а затем расскажу об условиях тестирования. Ваши результаты могут существенно отличаться: многое зависит от допущений и настроек.
Участники Exit Challenge
Выход №1: PP8175
Этот выход подтягивает защиту позиции, меняя долю сохраняемой прибыли по мере роста её максимума. Пример: после достижения максимальной открытой прибыли $1 000 позиция закрывается, если текущая открытая прибыль опускается ниже 50% этого максимума.
При максимуме $2 000 в примере защищается 65%, а при $3 000 — 80%. Пороговые значения и доли задаются параметрами. Значения по умолчанию в листинге отличаются от этого иллюстративного примера.
Примечание редакции. Листинги ниже — фрагменты исходного исследования, а не готовая торговая система. Они требуют проверки синтаксиса, объявлений переменных и порядка исполнения в вашей версии платформы. Отдельные фрагменты в источнике содержат незавершённые конструкции; они не должны запускаться без проверки.
//Exit Challenge Submittal
//Catchy Exit Name: PP8175
//Code:
//Inputs, ranges:
//ppfloor1 = 1000 to 3000, step 1000 (3 values)
//ppratio1 = .50 to .70, step .10 (3 values)
//set ppfloor and ppratio values to protect profit
Input: ppfloor1(1000); //don’t invoke exit 1 until $1000 profit level is reached
Var: ppfloor2(0); //don’t invoke exit 2 until ppfloor2 profit level is reached
Var: ppfloor3(0); //don’t invoke exit 3 until ppfloor3 profit level is reached
ppfloor2=2*ppfloor1;
ppfloor3=3*ppfloor1;
Var:ppratio(0); //depends on maxpositionprofit
Input:ppratio1(.60); //profit exit 1 keep ratio – keep 60% of maximum profit
Var:ppratio2(0); //profit exit 2 keep ratio – keep ppratio2 of maximum profit
Var:ppratio3(0); //profit exit 3 keep ratio – keep ppratio3 of maximum profit
ppratio2=ppratio1+.15;
ppratio3=ppratio2+.15;
If maxpositionprofit>=ppfloor1 then ppratio=ppratio1;
If maxpositionprofit>=ppfloor2 then ppratio=ppratio2;
If maxpositionprofit>=ppfloor3 then ppratio=ppratio3;
If maxpositionprofit>=ppfloor1 then begin
if (openpositionprofit/maxpositionprofit)<ppratio then begin
if marketposition=1 then Sell next bar at market;
if marketposition=-1 then Buy To Cover Next bar at market;
End;
End;Выход №2: SetPerReplace — замена SetPercentTrailing в TradeStation
Почти каждый начинающий пользователь TradeStation пробует встроенный выход SetPercentTrailing и удивляется результатам. Кривая капитала нередко выглядит примерно так — иногда даже лучше:

Проблема в том, что из-за особенностей работы этой встроенной функции результат бэктеста может оказаться совершенно неточным.
По словам автора, TradeStation предложила замену SetPercentTrailing, которая даёт корректные результаты при использовании Look Inside Bar Backtesting (LIBB) с минутной детализацией внутри основного бара.
//Inputs, ranges:
//FloorAmt = 500 to 2500, step 1000 (3 values)
//TrailingPct = 20 to 60, step 20 (3 values)
inputs:
PositionBasis(false),
FloorAmt(1),
TrailingPct(20) ;
variables:BSE(0), HH(0), LL(0), HighProfit(0), CalcFloor(0), Trail(0), MyStopPrice(0) ;
if MarketPosition <> 0 then
begin
BSE = BarsSinceEntry(0) ;
CalcFloor = FloorAmt ;
if PositionBasis then
HighProfit = MaxPositionProfit(0)
else
HighProfit = MaxContractProfit(0) ;
end;
if MarketPosition = 1 then
begin
HH = Highest(High, BSE) ;
if HighProfit >= CalcFloor then
begin
Trail = (TrailingPct * .01) * (HH - EntryPrice(0)) ;
MyStopPrice = HH - Trail ;
end;
end;
if MarketPosition = -1 then
begin
LL = Lowest(Low, BSE) ;
if HighProfit >= CalcFloor then
begin
Trail = (TrailingPct * .01) * (EntryPrice(0) - LL) ;
MyStopPrice = LL + Trail ;
end;
end;
if MarketPosition <> 0 and MaxPositionProfit > FloorAmt and MyStopPrice <> 0 then
begin
if MarketPosition = 1 then
Sell ("Alt%Trl LX") Next Bar at MyStopPrice Stop ;
if MarketPosition = -1 then
BuytoCover ("Alt%Trl SX") Next Bar at MyStopPrice Stop ;
end ;Выход №3: BoBo
Вариант трейлинг-стопа, в котором для определения защитного уровня используются пивотные точки.
Код не опубликован: это закрытая разработка.
Выход №4: MeowMeow — процентный трейлинг-стоп с тейк-профитом
В этом варианте процентный трейлинг-стоп сочетается с целью по прибыли.
Код не опубликован: это закрытая разработка.
Выход №5: LogExit
Ещё одна небольшая вариация трейлинг-стопа.
Код не опубликован: это закрытая разработка.
Выход №6: ConsecCloses
Всё хорошее когда-нибудь заканчивается. Если X последовательных закрытий баров прошли в пользу позиции, возможно, пора выйти — пока всё идёт хорошо. Джордж Костанза из сериала «Сайнфелд» называл это «уйти на высокой ноте».
//calculate the number of consecutive up and down closes
input:InputVar2(3),InputVar4(3); //both go 3 to 5
var: upclose01(0),upclose02(0),upclose03(0),upclose04(0),upclose05(0),upclose06(0),upclose07(0),upclose08(0),upclose09(0),upclose10(0);
var:br(" ");
upclose01=0;upclose02=0;upclose03=0;upclose04=0;upclose05=0;
If (close[0]>close[1] and close[1]<=close[2]) then upclose01=upclose01+1;
If close[0]>close[1] and close[1]>close[2] and close[2]<=close[3] then upclose02=upclose02+1;
If close[0]>close[1] and close[1]>close[2] and close[2]>close[3] and close[3]<=close[4] then upclose03=upclose03+1;
If close[0]>close[1] and close[1]>close[2] and close[2]>close[3] and close[3]>close[4] and close[4]<=close[5] then upclose04=upclose04+1;
If close[0]>close[1] and close[1]>close[2] and close[2]>close[3] and close[3]>close[4] and close[4]>close[5] and close[5]<=close[6] then upclose05=upclose05+1;
//commented out, in case you want to look at more than 5 consec closes
//If close[0]>close[1] and close[1]>close[2] and close[2]>close[3] and close[3]>close[4] and close[4]>close[5] and close[5]>close[6] and close[6]<=close[7] then upclose06=upclose06+1;
//If close[0]>close[1] and close[1]>close[2] and close[2]>close[3] and close[3]>close[4] and close[4]>close[5] and close[5]>close[6] and close[6]>close[7] and close[7]<=close[8] then upclose07=upclose07+1;
//If close[0]>close[1] and close[1]>close[2] and close[2]>close[3] and close[3]>close[4] and close[4]>close[5] and close[5]>close[6] and close[6]>close[7] and close[7]>close[8] and close[8]<=close[9] then upclose08=upclose08+1;
//If close[0]>close[1] and close[1]>close[2] and close[2]>close[3] and close[3]>close[4] and close[4]>close[5] and close[5]>close[6] and close[6]>close[7] and close[7]>close[8] and close[8]>close[9] and close[9]<=close[10] then upclose09=upclose09+1;
//If close[0]>close[1] and close[1]>close[2] and close[2]>close[3] and close[3]>close[4] and close[4]>close[5] and close[5]>close[6] and close[6]>close[7] and close[7]>close[8] and close[8]>close[9] and close[9]>close[10] and close[10]<=close[11] then upclose10=upclose10+1;
//if lastbaronchart then print("up",br,upclose01,br,upclose02,br,upclose03,br,upclose04,br,upclose05,br,upclose06,br,upclose07,br,upclose08,br,upclose09,br,upclose10);
If InputVar2=3 and upclose03=1 then sell next bar at market;
If InputVar2=4 and upclose04=1 then sell next bar at market;
If InputVar2=5 and upclose05=1 then sell next bar at market;
var: dnclose01(0),dnclose02(0),dnclose03(0),dnclose04(0),dnclose05(0),dnclose06(0),dnclose07(0),dnclose08(0),dnclose09(0),dnclose10(0);
//var:br("");
dnclose01=0;dnclose02=0;dnclose03=0;dnclose04=0;dnclose05=0;
If (close[0]<close[1] and close[1]>=close[2]) then dnclose01=dnclose01+1;
If close[0]<close[1] and close[1]<close[2] and close[2]>=close[3] then dnclose02=dnclose02+1;
If close[0]<close[1] and close[1]<close[2] and close[2]<close[3] and close[3]>=close[4] then dnclose03=dnclose03+1;
If close[0]<close[1] and close[1]<close[2] and close[2]<close[3] and close[3]<close[4] and close[4]>=close[5] then dnclose04=dnclose04+1;
If close[0]<close[1] and close[1]<close[2] and close[2]<close[3] and close[3]<close[4] and close[4]<close[5] and close[5]>=close[6] then dnclose05=dnclose05+1;
//If close[0]<close[1] and close[1]<close[2] and close[2]<close[3] and close[3]<close[4] and close[4]<close[5] and close[5]<close[6] and close[6]>=close[7] then dnclose06=dnclose06+1;
//If close[0]<close[1] and close[1]<close[2] and close[2]<close[3] and close[3]<close[4] and close[4]<close[5] and close[5]<close[6] and close[6]<close[7] and close[7]>=close[8] then dnclose07=dnclose07+1;
//If close[0]<close[1] and close[1]<close[2] and close[2]<close[3] and close[3]<close[4] and close[4]<close[5] and close[5]<close[6] and close[6]<close[7] and close[7]<close[8] and close[8]>=close[9] then dnclose08=dnclose08+1;
//If close[0]<close[1] and close[1]<close[2] and close[2]<close[3] and close[3]<close[4] and close[4]<close[5] and close[5]<close[6] and close[6]<close[7] and close[7]<close[8] and close[8]<close[9] and close[9]>=close[10] then dnclose09=dnclose09+1;
//If close[0]<close[1] and close[1]<close[2] and close[2]<close[3] and close[3]<close[4] and close[4]<close[5] and close[5]<close[6] and close[6]<close[7] and close[7]<close[8] and close[8]<close[9] and close[9]<close[10] and close[10]>=close[11] then dnclose10=dnclose10+1;
//if lastbaronchart then print("dn",br,dnclose01,br,dnclose02,br,dnclose03,br,dnclose04,br,dnclose05,br,dnclose06,br,dnclose07,br,dnclose08,br,dnclose09,br,dnclose10);
If InputVar4=3 and dnclose03=1 then buytocover next bar at market;
If InputVar4=4 and dnclose04=1 then buytocover next bar at market;
If InputVar4=5 and dnclose05=1 then buytocover next bar at market;Выходы №7–11: 200ATR Crew
Идею предложил трейдер из Хьюстона, штат Техас. Он предположил, что ATR с периодами 10–20, использованный в предыдущем исследовании, меняется слишком резко, и предложил период 200 — примерно десять месяцев для дневных баров.
Для сопоставимости с предыдущим анализом я разбил идею на отдельные варианты: стопы, цели и их сочетания.
InputVar52 will be varied as part of test.
// Exit #7
SetStopLoss(BigPointValue*InputVar52*AverageTrueRange(200);
// Exit #8
SetProfitTarget(BigPointValue*InputVar52*AverageTrueRange(200);
// Exit #9
SetStopLoss(BigPointValue*InputVar52*AverageTrueRange(200);
SetProfitTarget(BigPointValue*InputVar52*AverageTrueRange(200);
// Exit #10 – Trailing exits
If marketposition=1 and openpositionprofit<maxpositionprofit-InputVar52*AvgTrueRange(200)*BigPointValue then sell next bar at market;
If marketposition=-1 and openpositionprofit<maxpositionprofit- InputVar52*AvgTrueRange(200)*BigPointValue then buytocover next bar at market;
// Exit #11
SetBreakEven(BigPointValue*InputVar52*AverageTrueRange(200);Выходы №12–13: Ratch — ступенчатый стоп
Это ещё один трейлинг-стоп: он перемещается ступенями по мере движения рынка в пользу позиции. Вариант №12 использует суммы в долларах, №13 — ATR с периодом 100.
IP=Marketposition;
If IP<>IP[1] then MaxPP=0;
If OpenPositionProfit>MaxPP then MaxPP=OpenPositionProfit;
if MaxPP<1*InputVar44 then begin
SellP=Avgentryprice-InputVar52/BigPointValue +0*InputVar44/BigPointValue;
BuyTP=Avgentryprice+InputVar52/BigPointValue -0*InputVar44/BigPointValue;
End
else if MaxPP<2*InputVar44 then begin
SellP=Avgentryprice-InputVar52/BigPointValue +1*InputVar44/BigPointValue;
BuyTP=Avgentryprice+InputVar52/BigPointValue -1*InputVar44/BigPointValue;
End
else if MaxPP<3*InputVar44 then begin
SellP=Avgentryprice-InputVar52/BigPointValue +2*InputVar44/BigPointValue;
BuyTP=Avgentryprice+InputVar52/BigPointValue -2*InputVar44/BigPointValue;
End
else if MaxPP<4*InputVar44 then begin
SellP=Avgentryprice-InputVar52/BigPointValue +3*InputVar44/BigPointValue;
BuyTP=Avgentryprice+InputVar52/BigPointValue -3*InputVar44/BigPointValue;
End;
If marketposition=1 then sell next bar SellP stop;
If marketposition=-1 then buytocover next bar BuyTP stop;
*************Условия тестирования
Рынки
Выходы проверялись на 40 фьючерсных рынках. Ниже приведены обозначения непрерывных контрактов TradeStation.
Валюты
@AD, @BP, @CD, @DX, @EC, @JY, @SF
Сельскохозяйственные товары и soft commodities
@BO, @C, @CC, @CT, @FC, @KC, @KW, @LC, @LH, @O, @OJ, @RR, @S, @SB, @SM, @W
Металлы
@GC, @HG, @PL, @SI
Энергоносители
@CL, @HO, @NG, @RB
Процентные ставки
@FV, @TY, @US
Фондовые индексы
@ES.D (дневная сессия), @ES, @NK, @NQ, @RTY, @YM
Размеры баров
Результат может существенно зависеть от размера бара. Поэтому я проверил пять вариантов:
60-минутном
120-минутном
360-минутном
720-минутном
1440-минутном (дневном)
Период
Во всех тестах использовались десять лет исторических данных: с 1 января 2010 года по 1 января 2020 года.
Комиссии, проскальзывание и внутрибарная детализация
В исследовании учтены комиссии и проскальзывание. Для каждого рынка величина проскальзывания зависела от ликвидности и объёма торгов. Я использовал оценки из собственного опыта торговли реальными деньгами и подробного анализа цен bid/ask. Сами приведённые далее результаты являются историческими бэктестами.
Как сравнивать результаты
При сравнении 378 000 тестов неизбежно возникает вопрос: что считать лучшим результатом?
Я выбрал два показателя:
ROA (Return on Account) = общая чистая прибыль / максимальная просадка. Здесь ROA — отношение результата к просадке, а не доходность счёта в процентах. В таблице и диаграмме показано среднее значение ROA по тестам.
Число тестовых комбинаций с общей чистой прибылью свыше $10 000. Это количество бэктестов, а не количество отдельных сделок.
Выбор метрик можно обсуждать отдельно: кто-то предпочтёт другие показатели эффективности.
Моя цель — сравнить доходность с поправкой на риск и найти сочетания входов и выходов с достаточно высокой общей чистой прибылью. По моему опыту, слабые значения обоих показателей часто означают, что сочетание входа и выхода неудачно.
У ROA есть ограничения при отрицательных значениях. По оценке автора, они не изменили общую картину и выводы этого исследования.
Объём тестирования
40 рынков × 5 размеров бара × 5 способов входа × 3 периода для каждого входа × 14 выходов (13 новых и «стоп и разворот») × 9 наборов настроек выхода = 378 000 уникальных тестов.
Выполнять столько тестов вручную в TradeStation было бы крайне утомительно.
Мне помог Multi-Opt — инструмент, автоматизирующий значительную часть тестирования. Например, он избавляет от необходимости вручную запускать отдельную оптимизацию для каждого рынка и размера бара. Для ускорения используется OOEL — Object Oriented EasyLanguage.
На момент описанного исследования Multi-Opt не был общедоступен: его получали участники Strategy Factory.
Даже с этим инструментом и многопоточностью все прогоны заняли около 100 часов непрерывного тестирования.
Важная оговорка
Я показываю результаты, полученные при моих условиях. Ваши тесты могут привести к другим результатам и выводам — например, из-за иной реализации входов и выходов или других диапазонов параметров.
Если выход A лучше выхода Б в среднем, это не означает, что он лучше на каждом рынке и размере бара. В отдельных случаях преимущество может быть у Б.
Используйте эти результаты как ориентир для исследований, но обязательно проверяйте свою конкретную стратегию самостоятельно. Торговать предстоит на вашем счёте.
Исследование может сэкономить время при выборе первых гипотез для проверки: разумно начать с вариантов, показавших более сильные результаты в этой выборке.
Результаты
Большой сюрприз — или уже нет: «стоп и разворот» вновь оказался лучшим в сравнении.


Среднее ROA по типам выхода. Английские обозначения сохранены как имена вариантов из исследования: Breakeven — безубыток, Targ — тейк-профит, Trail — трейлинг-стоп, Doll — денежная величина.
Примечание редакции. Все средние ROA в этой таблице отрицательны, включая −7,9 у Stop&Reverse. «Лучший» здесь означает лучший среди сравниваемых вариантов, а не положительный средний результат или гарантию прибыльности.
Сравним также число тестов с общей чистой прибылью выше $10 000 и число тестов с убытком больше $10 000, уже после комиссий и проскальзывания. Желательны больше высокоприбыльных комбинаций, меньше глубоко убыточных и более высокое отношение первого числа ко второму. Это снова результаты целых тестов, не отдельных сделок.

По этому критерию «стоп и разворот» тоже заметно впереди остальных вариантов.
Заключение
В этом конкурсе и предыдущем исследовании я рассмотрел около двух десятков техник выхода, охватывающих разные подходы.
Среди протестированных вариантов простой «стоп и разворот» показал лучший результат, причём отрыв оказался большим.
Как использовать результаты при разработке стратегии
1. Начните с простого. Используйте «стоп и разворот» как базовый вариант для сравнения. У него меньше дополнительных параметров оптимизации; обычно это полезно.
2. Добавляйте выходы умеренно. Не стоит перебрать десять способов и автоматически выбрать лучший. Для начала можно отдельно проверить перенос в безубыток или тейк-профит. Мои тесты не показали необходимости усложнять систему без оснований.
3. Продолжайте искать. Преимущество «стопа и разворота» в моих тестах не означает, что он всегда будет лучшим. Вы можете найти более подходящий вариант — я призываю проверять новые идеи.
В своих дальнейших тестах я планирую начинать со «стопа и разворота», добавляя другие выходы только при необходимости.
Надеюсь, это исследование оказалось полезным. Спасибо всем участникам!
Об авторе
Кевин Дж. Дэйви — трейдер и исследователь алгоритмических стратегий, автор книги Building Algorithmic Trading Systems и других книг о системной торговле.
Как проверить идею на своей системе
Начните с одного вопроса: улучшает ли дополнительный выход вашу систему при тех же входах, издержках и правилах расчёта? Для сравнения ATR-стопа и денежного стопа пригодится разбор TLAP; затем проверьте результат вне выборки. Если вы оцениваете ручные сценарии выхода на графике, можно использовать симулятор рынка TLAP — он помогает воспроизводить ситуации, но не заменяет автоматические 378 000 прогонов. Поделитесь в теме: какой выход выдержал такую проверку у вас и по какой метрике?
Переведено для TLAP
