Esta estrategia combina el indicador Supertrend y Fisher Transform para buscar oportunidades cortas cuando el mercado se invierte. Puede ajustar los parámetros de Supertrend y Fisher Transform para diferentes criptomonedas, acciones y mercados. Cuando aparece una señal de venta, muestra el tamaño de la posición, los niveles de stop loss y take profit. También puede cambiar la cantidad de riesgo.
La estrategia primero calcula la Transformación de Fisher con un período de 10. Cuando la línea de Fisher rompe 2.5 desde abajo, se genera una señal de venta. Al mismo tiempo, calcula el Rango Verdadero Medio (ATR) de 10 períodos como el canal para la Supertrend. Cuando el precio cruza por debajo del tren superior, se genera una señal de venta. Por lo tanto, la estrategia combina la Transformación de Fisher y el canal de Supertrend para capturar oportunidades cortas cuando el mercado se invierte.
Específicamente, cuando el cierre actual está por debajo del tren superior anterior y el cierre anterior está por encima del tren inferior del canal Supertrend, determina que el mercado se ha invertido y genera una señal de venta.
Así que la estrategia requiere tanto la identificación de la inversión de Supertrend y Fisher Transform para generar la señal de venta final.
La estrategia combina el canal de Supertrend y Fisher Transform, que puede capturar con mayor precisión los puntos de reversión del mercado.
Además, la estrategia proporciona flexibilidad para ajustar los parámetros de Supertrend y Fisher. Los usuarios pueden seleccionar las mejores combinaciones de parámetros para diferentes mercados y productos para adaptarse al mercado con propósito.
La estrategia también proporciona la gestión de la cantidad de riesgo. Los usuarios pueden ajustar convenientemente el capital de riesgo para cada orden para satisfacer sus propias necesidades de gestión de riesgos. Al mismo tiempo, calcula automáticamente los niveles de stop loss y profit taking para lograr una buena relación riesgo-recompensa.
La estrategia se basa principalmente en el canal de Supertrend para determinar la estructura del mercado. Cuando la tendencia dura durante un período prolongado, la Supertrend puede fallar. En este caso, el período o el multiplicador ATR del canal debe aumentarse adecuadamente.
Además, Fisher Transform tiende a generar señales falsas o señales prematuras fácilmente.
Además, la tasa de ganancia general de las estrategias de reversión puede ser limitada. Debe combinarse con indicadores de tendencia para evitar abrir posiciones en zonas de rango o participar después de que la tendencia se vuelva más clara.
La estrategia puede mejorarse en los siguientes aspectos:
Optimizar el período ATR y el multiplicador ATR de Supertrend para obtener la mejor combinación de parámetros basada en diferentes productos y condiciones de mercado.
Optimizar el período de Fisher para suavizar la curva y evitar señales falsas.
Añadir promedios móviles o bandas de Bollinger como indicador auxiliar para evitar la apertura de posiciones en mercados variables.
Combinar la transformación de Fisher en diferentes plazos para lograr un juicio de inversión más estable.
Añadir módulos de gestión de posiciones como el ratio de apalancamiento, el tamaño de las posiciones, reglas adicionales, etc. para controlar los riesgos.
Incorporar métodos de aprendizaje automático para lograr la optimización automática de parámetros y el ajuste de estrategias.
La estrategia integra Supertrend y Fisher Transform con flexibilidad para adaptarse a diferentes productos mediante ajuste de parámetros, en comparación con las estrategias de indicadores únicos. Logra un juicio de señal y control de riesgos más confiables. Con una mejora continua, la estrategia promete mejorar aún más la estabilidad y la rentabilidad. Es una estrategia de alta calidad que vale la pena rastrear y acumular a largo plazo.
/*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)