Тенденция после долгосрочной стратегии, основанной на супертенде и фишерской трансформации

Автор:Чао Чжан, Дата: 2023-11-03 15:42:16
Тэги:

img

Обзор

Эта стратегия сочетает в себе индикаторы SuperTrend и Fisher Transform для реализации относительно стабильной тенденции после долгосрочной торговой стратегии. Она генерирует сигналы покупки, когда индикатор SuperTrend дает сигнал покупки, а индикатор Fisher Transform падает ниже -2,5 и повышается. Стратегия правильно управляет позициями с остановкой потери и получением прибыли.

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

  1. Индикатор SuperTrend используется для определения направления ценовой тенденции. Когда цена пересекает верхнюю полосу, это бычий сигнал; когда цена пересекает нижнюю полосу, это медвежий сигнал. Эта стратегия выдает сигнал покупки, когда SuperTrend бычий.

  2. Индикатор Fisher Transform отражает влияние колебаний цен на психологию потребителей. Значения Fisher между (-2.5, 2.5) представляют собой нейтральный рынок, ниже -2.5 представляет собой панический рынок, а выше 2.5 представляет собой эйфорический рынок.

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

  4. Укажите размер позиции на основе ATR и суммы риска, чтобы риск на единицу не превышал установленную сумму риска.

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

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

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

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

  4. Торговые сигналы стабильны и подходят для долгосрочного хранения.

  5. Большое пространство оптимизации для параметров индикатора. Период и мультипликатор SuperTrend's ATR и плавность Fisher's могут быть настроены в соответствии с различными продуктами и временными рамками для поиска оптимальной комбинации параметров.

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

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

  2. Когда рынок остается в одном состоянии в течение длительного времени, значения Фишера будут продолжать отклоняться от нейтральной зоны, в этом случае стратегия должна быть приостановлена.

  3. Слишком близкий стоп-лосс может привести к преждевременному выходу. Период ATR и мультипликатор ATR должны быть установлены разумно, чтобы обеспечить достаточный буфер для стоп-лосса.

  4. Игнорирование транзакционных издержек приведет к потере прибыльных сделок.

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

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

  1. Настройка периода ATR, мультипликатора ATR для оптимизации стоп-лосса и получения прибыли.

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

  3. Добавьте другие индикаторы в качестве фильтров, чтобы избежать неправильных сделок, когда рынок неопределен.

  4. Испытывайте различные стратегии получения прибыли, такие как перемещение, частичное, ATR, чтобы улучшить рентабельность.

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

  6. Оптимизируйте затраты на транзакции, сохраняйте прибыльность для небольших позиций.

Заключение

Эта стратегия объединяет преимущества SuperTrend, Fisher Transform и других индикаторов, чтобы сформировать стабильную тенденцию после долгосрочной торговой стратегии. Благодаря стоп-лосс, риск-менеджменту и управлению рисками можно достичь хорошего соотношения риска и вознаграждения. Стратегия нуждается в дальнейшей оптимизации параметров, фильтрации сигналов, управлении капиталом и т. д. для улучшения практической производительности. Но общая логика надежна и стоит практической проверки и постоянной оптимизации. Если правильно управлять мышлением прибыли и риска, стратегия имеет потенциал для достижения стабильной долгосрочной отдачи.


/*backtest
start: 2023-10-26 00:00:00
end: 2023-11-02 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Supertrend and Fisher_LONG", overlay=true)

//This block is for  Fisher Transformation Calculation.
len = input.int(10, minval=1, title="Length") // Length is optional. 10 is good but is up to you.
high_ = ta.highest(hl2, len)
low_ = ta.lowest(hl2, len)
round_(val) => val > .99 ? .999 : val < -.99 ? -.999 : val
value = 0.0
value := round_(.66 * ((hl2 - low_) / (high_ - low_) - .5) + .67 * nz(value[1]))
fish1 = 0.0
fish1 := .5 * math.log((1 + value) / (1 - value)) + .5 * nz(fish1[1])
fish2 = fish1[1]

// Buy condition for Fisher transformation.
buy_signal = (fish1 < -2.5) and (fish1 > fish2)
durum = 0 //just for the situation.

if (buy_signal)
    durum := 1 // now it changes from 0 to 1.

// Supertrend indicator inputs and calculations (same as in the indicator)
Periods = input(title='ATR Period', defval=10) // period is 10, but you can change it
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=2) //atr multiplier is important. it is 2 for this strategy but you can find another for best performance 
RiskAmount = input.float(title='Risk Amount ($)', defval=10.0, minval=0.0, step=1.0) // ıf you use risk-reward method, risk is 10$ for each position. you can also change it
changeATR = input(title='Change ATR Calculation Method ?', defval=true)

atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Calculate position size based on risk amount
riskPerContract = atr * Multiplier
contracts = RiskAmount / (riskPerContract * syminfo.mintick)

//short signal condition
buySignal = trend == 1 and trend[1] == -1 and durum == 1

plotshape(buySignal, title='Buy Signal', location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)

// variables
var float entryPrice = na
var float stopLoss = na
var float takeProfit = na
var float atr1 = na
var float takeProfit2 = na
var float takeProfit3 = na

//it calculates the stop level and reward profit levels using atr.
if (buySignal)
    entryPrice := close
    atr1 := atr
    stopLoss := entryPrice - atr1 * Multiplier
    contracts := entryPrice / (entryPrice - stopLoss) * RiskAmount / entryPrice
    takeProfit := entryPrice + atr1 * Multiplier
    takeProfit2 := entryPrice + 2 * atr1 * Multiplier
    takeProfit3 := entryPrice + 3 * atr1 * Multiplier

if (buySignal)
    strategy.entry("Buy", strategy.long, qty=contracts)

// 
if (close <= stopLoss)
    strategy.close("Buy", comment="Stop Loss Hit")
else if (close >= takeProfit)
    strategy.close("Buy", comment="Take Profit Hit")

// draw the stop, entry and profit levels
plot(stopLoss, title="Stop Loss", color=color.red, linewidth=1, style=plot.style_linebr)
plot(entryPrice, title="Entry Price", color=color.orange, linewidth=1, style=plot.style_linebr)
plot(takeProfit, title="Take Profit", color=color.green, linewidth=1, style=plot.style_linebr)
plot(takeProfit2, title="Take Profit 2", color=color.blue, linewidth=1, style=plot.style_linebr)
plot(takeProfit3, title="Take Profit 3", color=color.purple, linewidth=1, style=plot.style_linebr)


Больше