Стратегия изменения рыночной динамики

Автор:Чао Чжан, Дата: 2024-02-29 15:10:11
Тэги:

img

Обзор

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

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

Стратегия сначала рассчитывает трансформацию Фишера с 10-периодным периодом. Когда линия Фишера проходит через 2,5 с нижнего, генерируется сигнал продажи. В то же время, она рассчитывает 10-периодный средний истинный диапазон (ATR) в качестве канала для супертенденции. Когда цена пересекает верхний рельс, генерируется сигнал продажи. Таким образом, стратегия сочетает трансформацию Фишера и канал супертенденции, чтобы поймать короткие возможности, когда рынок переворачивается.

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

Таким образом, стратегия требует как обратной идентификации Supertrend, так и Fisher Transform для генерации окончательного сигнала продажи.

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

Стратегия сочетает в себе канал Supertrend и Fisher Transform, которые могут более точно фиксировать точки переворота рынка.

Кроме того, стратегия обеспечивает гибкость для корректировки параметров Supertrend и Fisher. Пользователи могут выбрать лучшие комбинации параметров для разных рынков и продуктов, чтобы целесообразно соответствовать рынку. Это настраиваемая оптимизируемая стратегия.

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

Риски

Стратегия в основном опирается на канал Supertrend для определения структуры рынка. Когда тенденция длится в течение длительного периода, Supertrend может потерпеть неудачу. В этом случае период или мультипликатор ATR канала следует соответствующим образом увеличить.

Кроме того, Fisher Transform имеет тенденцию легко генерировать ложные сигналы или преждевременные сигналы.

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

Руководство по улучшению

Стратегия может быть усовершенствована из следующих аспектов:

  1. Оптимизировать период ATR и мультипликатор ATR Supertrend для лучшей комбинации параметров на основе различных продуктов и рыночных условий.

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

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

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

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

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

Заключение

Стратегия объединяет Supertrend и Fisher Transform с гибкостью адаптации к различным продуктам путем корректировки параметров по сравнению со стратегиями с одним индикатором. Она достигает более надежного суждения о сигнале и контроля рисков. При постоянном совершенствовании стратегия обещает еще больше улучшить стабильность и рентабельность. Это высококачественная стратегия, которая стоит долгосрочного отслеживания и накопления.


/*backtest
start: 2024-02-21 00:00:00
end: 2024-02-27 03:00:00
period: 2m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Supertrend and Fisher_SHORT", 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]

// Sell condition for Fisher transformation.
sell_signal = (fish1 > 2.5) and (fish2 > fish1)
durum = 0 //just for the situation.

if (sell_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
sellSignal = trend == -1 and trend[1] == 1 and durum == -1

plotshape(sellSignal, title='Sell Signal', location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) //shows the signal.

// 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 (sellSignal)
    entryPrice := close
    atr1 := atr
    stopLoss := entryPrice + atr1 * Multiplier
    contracts := entryPrice / (stopLoss - entryPrice) * RiskAmount / entryPrice
    takeProfit := entryPrice - atr1 * Multiplier
    takeProfit2 := entryPrice - 2 * atr1 * Multiplier
    takeProfit3 := entryPrice - 3 * atr1 * Multiplier

if (sellSignal)
    strategy.entry("Sell", strategy.short, qty=1)

// 
if (close >= stopLoss)
    strategy.close("Sell", comment="Stop Loss Hit")
else if (close <= takeProfit)
    strategy.close("Sell", 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)


Больше