Стратегия сетки переменной позиции, следующая за тенденцией

Автор:Чао Чжан, Дата: 2024-03-29 15:23:23
Тэги:ЕМАРСИMACDATRADX

img

Обзор

Эта стратегия - это стратегия сетки переменных позиций, следующая за трендом, которая в основном использует модели EMA, RSI и engulfing для определения направления тренда и времени входа. Стратегия корректирует позиции стоп-лосса и take-прибыли на основе размера тела шаблона engulfing, позволяя пользователям выбирать только длинный, короткий или оба. Кроме того, стратегия предоставляет возможность использовать MACD в качестве фильтра тренда.

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

Стратегия использует 200-периодный EMA для определения общего направления тренда. Когда цена выше EMA, она считается восходящим трендом, а когда ниже EMA, она считается нисходящим трендом. 9-периодный RSI используется для измерения импульса, причем RSI выше 50 указывает на более сильный бычий импульс и ниже 50 указывает на более сильный медвежий импульс. Стратегия также использует бычий и медвежий паттерны поглощения в качестве сигналов входа. Когда EMA, RSI и сигналы паттерна поглощения согласуются, стратегия открывает позицию.

Стоп-лосс и позиции для получения прибыли определяются на основе размера тела охватывающего паттерна. Стоп-лосс устанавливается в два раза больше, чем размер тела охватывающего паттерна, с минимальным процентом стоп-лосса 0,3% от цены входа, чтобы избежать частых стоп-аут из-за небольших расстояний стоп-лосса. Позиция для получения прибыли устанавливается путем умножения расстояния стоп-лосса на заранее определенное соотношение риск-вознаграждение, чтобы обеспечить фиксированное соотношение риск-вознаграждение. Кроме того, стратегия предоставляет возможность использовать MACD в качестве фильтра тренда, учитывая более сильный бычий тренд, когда линия MACD находится выше линии сигнала, и более сильный медвежий тренд, когда линия MACD находится ниже линии сигнала.

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

  1. Следование тенденции: стратегия использует несколько индикаторов для определения тенденции, помогая войти на ранних стадиях формирования тренда и улавливать движения тренда.

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

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

  4. Возможность использования MACD в качестве фильтра тренда еще больше подтверждает силу тренда и улучшает точность входа.

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

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

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

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

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

  1. Определение тренда: для повышения точности определения тренда следует рассмотреть возможность внедрения дополнительных инструментов подтверждения тренда, таких как полосы Боллинджера, средний направленный индекс (ADX) и т.д.

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

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

  4. Координация между несколькими временными рамками и несколькими инструментами: проверка сигналов тренда в различных временных рамках и инструментах для повышения точности определения тренда при диверсификации риска одного инструмента или временного периода.

Резюме

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


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © niosupetranmartinez
//@version=5
strategy("Trend Follower Scalping Strategy", overlay=true, process_orders_on_close = true)

// Inputs
emaLen = input(200, 'EMA Length')
rsiLen = input(9, 'RSI Length')
trendDirection = input.string("Both", 'Trend Direction', options=["Long Only", "Short Only", "Both"])
risk_reward_ratio = input(2, 'Risk Reward Ratio')
useMacdFilter = input.bool(true, "Use MACD Filter")
macdTimeframe = input("5", "MACD Timeframe")

// EMA and RSI
ema200 = ta.ema(close, emaLen)
customRsi = ta.rsi(close, rsiLen)

// MACD Filter
[macdLine, signalLine, _] = request.security(syminfo.tickerid, macdTimeframe, ta.macd(close, 12, 26, 9))


// Majority Body Candle Identification Function
isMajorityBodyCandle(candleOpen, candleClose, high, low) =>
    bodySize = math.abs(candleClose - candleOpen)
    fullSize = high - low
    bodySize / fullSize > 0.6

// Engulfing Patterns
isBullishEngulfing = close > open and close[1] < open[1] and (close - open) > (open[1] - close[1]) and isMajorityBodyCandle(open, close, high, low)
isBearishEngulfing = close < open and close[1] > open[1] and (open - close) > (close[1] - open[1]) and isMajorityBodyCandle(open, close, high, low)

// Entry Conditions with MACD Filter
longCondition = close > ema200 and customRsi > 50 and isBullishEngulfing and (not useMacdFilter or macdLine > signalLine)
shortCondition = close < ema200 and customRsi < 50 and isBearishEngulfing and (not useMacdFilter or macdLine < signalLine)

// Trade Execution
var float stopLossPrice = na
var float entryPrice = na

// Long Entry
if (longCondition and (trendDirection == "Long Only" or trendDirection == "Both"))
    entryPrice := close
    engulfingBodySize = math.abs(close - open)
    minimumStopLoss = entryPrice * 0.997
    calculatedStopLoss = entryPrice - (engulfingBodySize * 2)
    stopLossPrice := calculatedStopLoss < minimumStopLoss ? calculatedStopLoss : minimumStopLoss
    risk = entryPrice - stopLossPrice
    takeProfitPrice = entryPrice + (risk_reward_ratio * risk)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", "Long", stop = stopLossPrice, limit = takeProfitPrice)

// Short Entry
if (shortCondition and (trendDirection == "Short Only" or trendDirection == "Both"))
    entryPrice := close
    engulfingBodySize = math.abs(open - close)
    minimumStopLoss = entryPrice * 1.003
    calculatedStopLoss = entryPrice + (engulfingBodySize * 2)
    stopLossPrice := calculatedStopLoss > minimumStopLoss ? calculatedStopLoss : minimumStopLoss
    risk = stopLossPrice - entryPrice
    takeProfitPrice = entryPrice - (risk_reward_ratio * risk)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", "Short", stop = stopLossPrice, limit = takeProfitPrice)

// Plotting
plot(ema200, color=color.blue, linewidth=2, title="EMA 200")

Связанные

Больше