В процессе загрузки ресурсов... загрузка...

Стратегия получения прибыли с двойным супертендентом в несколько этапов

Автор:Чао Чжан, Дата: 2024-06-21 14:36:35
Тэги:ATRСТТП

img

Обзор

Это многоступенчатая стратегия получения прибыли, основанная на двойных индикаторах Supertrend. Стратегия использует два индикатора Supertrend с различными параметрами для определения рыночных тенденций и выполнения долгих или коротких сделок соответственно. Ядро стратегии заключается в многоступенчатом механизме получения прибыли, который устанавливает несколько целей прибыли для постепенного закрепления прибыли, сохраняя часть позиции открытой для захвата более крупных рыночных движений.

Принципы стратегии

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

  2. Multi-Step Trailing Take-Profit: Стратегия устанавливает 4 регулируемые цели по получению прибыли. Каждая цель имеет соответствующий процент прибыли и коэффициент закрытия позиции. Например, первая цель может закрыть 12% позиции при 6% прибыли, вторая может закрыть 8% при 12% прибыли и так далее. Этот механизм позволяет постепенно блокировать прибыль, сохраняя часть позиции открытой для получения выгоды от продолжающихся движений рынка.

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

  4. Динамический стоп-лосс: хотя в коде нет четкой установки стоп-лосса, стратегия автоматически закрывает позиции, когда индикаторы Supertrend переворачиваются, эффективно действуя как динамический стоп-лосс.

Преимущества стратегии

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

  2. Уменьшение ложных сигналов: использование двойных индикаторов Supertrend значительно снижает влияние ложных сигналов, повышая точность и надежность торговли.

  3. Высокая адаптивность: стратегия может гибко регулировать направление торговли и параметры получения прибыли на основе предпочтений пользователей и рыночных условий, что делает ее подходящей для различных торговых инструментов и временных рамок.

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

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

Стратегические риски

  1. Чувствительность параметров: эффективность стратегии в значительной степени зависит от настроек индикаторов Supertrend и параметров получения прибыли.

  2. Зависимость от тренда: как стратегия, следующая за трендом, она может часто входить и выходить на нестабильные рынки, вызывая ненужные торговые издержки.

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

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

Направления оптимизации стратегии

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

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

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

  4. Интегрировать дополнительные технические индикаторы: рассмотреть возможность включения других технических индикаторов, таких как RSI или MACD, для улучшения точности входа и выхода посредством слияния нескольких индикаторов.

  5. Оптимизировать управление капиталом: изучить более сложные стратегии управления капиталом, такие как динамическая корректировка размеров позиций на основе показателей счета, чтобы лучше сбалансировать риск и прибыль.

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

Заключение

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


/*backtest
start: 2024-05-21 00:00:00
end: 2024-06-20 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Strategic Multi-Step Supertrend Trader - Strategy [presentTrading]", overlay=true )

// this strategy utilizes a double Supertrend indicator to determine entry and exit conditions for both long and short trades, with user-configurable take profit levels and trade direction settings. 
// The strategy dynamically updates highest and lowest prices during trades and exits positions based on multi-step profit targets or opposing Supertrend signals.


// User inputs for take profit settings
// Grouping Take Profit settings
useTakeProfit = input.bool(true, title="Use Take Profit", group="Take Profit Settings")
takeProfitPercent1 = input.float(6.0, title="Take Profit % Step 1", group="Take Profit Settings")
takeProfitPercent2 = input.float(12.0, title="Take Profit % Step 2", group="Take Profit Settings")
takeProfitPercent3 = input.float(18.0, title="Take Profit % Step 3", group="Take Profit Settings")
takeProfitPercent4 = input.float(50.0, title="Take Profit % Step 4", group="Take Profit Settings")

takeProfitAmount1 = input.float(12, title="Take Profit Amount % Step 1", group="Take Profit Settings")
takeProfitAmount2 = input.float(8, title="Take Profit Amount % Step 2", group="Take Profit Settings")
takeProfitAmount3 = input.float(4, title="Take Profit Amount % Step 3", group="Take Profit Settings")
takeProfitAmount4 = input.float(0, title="Take Profit Amount % Step 4", group="Take Profit Settings")

numberOfSteps = input.int(3, title="Number of Take Profit Steps", minval=1, maxval=4, group="Take Profit Settings")

// Grouping Trade Direction
tradeDirection = input.string("Both", title="Trade Direction", options=["Long", "Short", "Both"], group="Trade Direction")

// Grouping Supertrend settings
atrPeriod1 = input(10, title="ATR Length for Supertrend 1", group="Supertrend Settings")
factor1 = input.float(3.0, title="Factor for Supertrend 1", step=0.01, group="Supertrend Settings")

atrPeriod2 = input(5, title="ATR Length for Supertrend 2", group="Supertrend Settings")
factor2 = input.float(4.0, title="Factor for Supertrend 2", step=0.01, group="Supertrend Settings")


// Function to calculate Supertrend
supertrend(factor, atrPeriod) =>
    [a, direction] = ta.supertrend(factor, atrPeriod)
    direction

// Calculate Double Supertrend
supertrend1 = supertrend(factor1, atrPeriod1)
supertrend2 = supertrend(factor2, atrPeriod2)

// Entry conditions
longCondition = (supertrend1 < 0 and supertrend2 < 0) and (tradeDirection == "Long" or tradeDirection == "Both")
shortCondition = (supertrend1 > 0 and supertrend2 > 0) and (tradeDirection == "Short" or tradeDirection == "Both")

// Exit conditions
longExitCondition = (supertrend1 > 0 and supertrend2 > 0) and (tradeDirection == "Long" or tradeDirection == "Both")
shortExitCondition = (supertrend1 < 0 and supertrend2 < 0) and (tradeDirection == "Short" or tradeDirection == "Both")

// Variables to store the highest and lowest prices during the trade
var float highestPrice = na
var float lowestPrice = na

// Get the entry price from open trades
entryPrice = strategy.opentrades.entry_price(strategy.opentrades - 1)

// Reset highestPrice or lowestPrice when entering new trades
if (longCondition and strategy.position_size <= 0)
    highestPrice := na // Reset the highest price
    strategy.entry("My Long Entry Id", strategy.long) // Enter long position
    strategy.close("My Short Entry Id", "Short Exit") // Close short position if any

if (shortCondition and strategy.position_size >= 0)
    lowestPrice := na // Reset the lowest price
    strategy.entry("My Short Entry Id", strategy.short) // Enter short position
    strategy.close("My Long Entry Id", "Long Exit") // Close long position if any

// Exit trades based on conditions
if (longExitCondition and strategy.position_size > 0)
    strategy.close("My Long Entry Id", "Long Exit") // Exit long position

if (shortExitCondition and strategy.position_size < 0)
    strategy.close("My Short Entry Id", "Short Exit") // Exit short position

if (strategy.position_size > 0)
    // Update the highest price for long positions
    highestPrice := na(highestPrice) ? high : math.max(highestPrice, high)

    // Step 1
    if (useTakeProfit and numberOfSteps >= 1)
        strategy.exit("Take Profit 1", from_entry="My Long Entry Id", qty_percent=takeProfitAmount1, limit=entryPrice * (1 + takeProfitPercent1 / 100))
    // Step 2
    if (useTakeProfit and numberOfSteps >= 2)
        strategy.exit("Take Profit 2", from_entry="My Long Entry Id", qty_percent=takeProfitAmount2, limit=entryPrice * (1 + takeProfitPercent2 / 100))
    // Step 3
    if (useTakeProfit and numberOfSteps >= 3)
        strategy.exit("Take Profit 3", from_entry="My Long Entry Id", qty_percent=takeProfitAmount3, limit=entryPrice * (1 + takeProfitPercent3 / 100))
    // Step 4
    if (useTakeProfit and numberOfSteps == 4)
        strategy.exit("Take Profit 4", from_entry="My Long Entry Id", qty_percent=takeProfitAmount4, limit=entryPrice * (1 + takeProfitPercent4 / 100))

if (strategy.position_size < 0)
    // Update the lowest price for short positions
    lowestPrice := na(lowestPrice) ? low : math.min(lowestPrice, low)

    // Step 1
    if (useTakeProfit and numberOfSteps >= 1)
        strategy.exit("Take Profit 1", from_entry="My Short Entry Id", qty_percent=takeProfitAmount1, limit=entryPrice * (1 - takeProfitPercent1 / 100))
    // Step 2
    if (useTakeProfit and numberOfSteps >= 2)
        strategy.exit("Take Profit 2", from_entry="My Short Entry Id", qty_percent=takeProfitAmount2, limit=entryPrice * (1 - takeProfitPercent2 / 100))
    // Step 3
    if (useTakeProfit and numberOfSteps >= 3)
        strategy.exit("Take Profit 3", from_entry="My Short Entry Id", qty_percent=takeProfitAmount3, limit=entryPrice * (1 - takeProfitPercent3 / 100))
    // Step 4
    if (useTakeProfit and numberOfSteps == 4)
        strategy.exit("Take Profit 4", from_entry="My Short Entry Id", qty_percent=takeProfitAmount4, limit=entryPrice * (1 - takeProfitPercent4 / 100))


Связанные

Больше