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