Эта стратегия сочетает в себе индикатор 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 имеет тенденцию легко генерировать ложные сигналы или преждевременные сигналы.
Кроме того, общий показатель выигрыша стратегий реверсии может быть ограничен. Он должен сочетаться с индикаторами тренда, чтобы избежать открытия позиций в зонах диапазона или участвовать после того, как тенденция станет яснее. Движущие средние могут быть добавлены в качестве фильтра для повышения стабильности.
Стратегия может быть усовершенствована из следующих аспектов:
Оптимизировать период ATR и мультипликатор ATR Supertrend для лучшей комбинации параметров на основе различных продуктов и рыночных условий.
Оптимизируйте период Фишера, чтобы сгладить кривую и предотвратить ложные сигналы.
Добавьте скользящие средние или полосы Боллинджера в качестве вспомогательного показателя, чтобы избежать открытия позиций на рыночных диапазонах.
Комбинируйте преобразование Фишера в разные временные рамки, чтобы достичь более стабильного решения об обратном движении.
Добавить модули управления позициями, такие как коэффициент кредитного плеча, размер позиций, дополнительные правила и т.д., для контроля рисков.
Включить методы машинного обучения для автоматической оптимизации параметров и адаптации стратегии.
Стратегия объединяет 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)