Стратегия выхода из многопроцентной прибыли

Автор:Чао Чжан, Дата: 2023-12-01 15:22:29
Тэги:

img

Обзор

Эта стратегия реализует функцию установки нескольких процентных выходов из прибыли. Стратегия сначала оценивает длинные и короткие условия для входа в позиции. Затем она использует пользовательскую функцию percentAsPoints для преобразования процентов в ценовые тики. Программа устанавливает 4 выхода с процентами прибыли 1%, 2%, 3% и 4% на основе конфигураций, а также устанавливает общий выход с остановкой потери 2%. Это достигает эффекта нескольких процентных выходов из прибыли.

Логика стратегии

Основная логика этой стратегии заключается в использовании перекресток SMA для определения входов. В частности, когда быстрая SMA (14) пересекает поверх медленной SMA (28), она будет длинной. Когда быстрая SMA (14) пересекает ниже медленной SMA (28), она будет короткой.

Тогда как установить несколько процентных выходов прибыли? Здесь пользовательская функция percentAsPoints используется для преобразования процентов в ценовые тики. Логика такова:

percentAsPoints(pcnt) =>
    strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na) 

Если размер позиции не равен 0, он вычисляет ценовые тики в процентах, умноженные на среднюю цену входа и разделенные на минимальный размер тика.

С помощью этой функции мы можем легко преобразовать проценты в тики. Затем программа устанавливает 4 выхода на основе процентов прибыли 1%, 2%, 3% и 4%:

lossPnt = percentAsPoints(2)

strategy.exit("x1", qty_percent = 25, profit = percentAsPoints(1), loss = lossPnt)   

strategy.exit("x2", qty_percent = 25, profit = percentAsPoints(2), loss = lossPnt)

strategy.exit("x3", qty_percent = 25, profit = percentAsPoints(3), loss = lossPnt)  

strategy.exit("x4", profit = percentAsPoints(4), loss = lossPnt)

Также для всех выходов используется общий стоп-лосс 2%, что обеспечивает эффект многократного процентного выхода прибыли.

Анализ преимуществ

Эта стратегия выхода из многопроцентной прибыли имеет следующие преимущества:

  1. Это позволяет получать прибыль шаг за шагом, избегая упущений в более крупных прибылях.

  2. Например, при 25%-м объеме партии 1% прибыли может вернуть 1/4 капитала, а последующие позиции являются чистыми прибылями.

  3. 2% стоп-лосс предотвращает экстремальные потери при аномальных рыночных движениях.

  4. Внедрение просто и чисто, легко понять и изменить.

Анализ рисков

Эта стратегия также сопряжена с некоторыми рисками:

  1. Процентные выходы могут вызывать боковые колебания, причем цены колеблются вокруг цен выхода, что вызывает частые выходы.

  2. Большие комиссионные могут стереть часть выигрыша.

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

  4. Фиксированные процентные выходы не учитывают волатильность и тенденции на рынке.

Руководство по оптимизации

Учитывая вышеперечисленные риски, можно сделать дальнейшие оптимизации в следующих аспектах:

  1. Оптимизировать выход для адаптации на основе волатильности и силы рынка с использованием методов, таких как выход ATR.

  2. Оптимизируйте процентные показатели и диапазоны партий для поиска оптимальных комбинаций риск-возврат. Добавьте оптимизацию параметров для поиска лучших параметров.

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

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

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

Резюме

Эта стратегия достигает эффекта нескольких процентных выходов прибыли, с 4 выходами на 1%, 2%, 3% и 4%, что позволяет постепенно выходить из прибыли, и использует 2% стоп-лосс, чтобы предотвратить огромные потери в экстремальных движениях.


/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-30 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © adolgov

//@version=4
strategy("Multiple %% profit exits example", overlay=false, default_qty_value = 10)

longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)

percentAsPoints(pcnt) =>
    strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)

lossPnt = percentAsPoints(2)

strategy.exit("x1", qty_percent = 25, profit = percentAsPoints(1), loss = lossPnt)
strategy.exit("x2", qty_percent = 25, profit = percentAsPoints(2), loss = lossPnt)
strategy.exit("x3", qty_percent = 25, profit = percentAsPoints(3), loss = lossPnt)
strategy.exit("x4", profit = percentAsPoints(4), loss = lossPnt)

profitPercent(price) =>
    posSign = strategy.position_size > 0 ? 1 : strategy.position_size < 0 ? -1 : 0
    (price - strategy.position_avg_price) / strategy.position_avg_price * posSign * 100

p1 = plot(profitPercent(high), style=plot.style_linebr, title = "open profit % upper bound")
p2 = plot(profitPercent(low), style=plot.style_linebr, title = "open profit % lower bound")
fill(p1, p2, color = color.red)

Больше