Esta estrategia combina los indicadores SuperTrend y Fisher Transform para implementar una tendencia relativamente estable después de una estrategia de negociación a largo plazo. Genera señales de compra cuando el indicador SuperTrend da una señal de compra y el indicador Fisher Transform cae por debajo de -2.5 y sube. La estrategia gestiona las posiciones adecuadamente con stop loss y take profit.
El indicador SuperTrend se utiliza para determinar la dirección de la tendencia del precio. Cuando el precio cruza por encima de la banda superior, es una señal alcista; cuando el precio cruza por debajo de la banda inferior, es una señal bajista. Esta estrategia emite una señal de compra cuando la SuperTrend es alcista.
El indicador Fisher Transform refleja el impacto de las fluctuaciones de precios en la psicología del consumidor. Los valores de Fisher entre (-2.5, 2.5) representan un mercado neutral, por debajo de -2.5 representa un mercado de pánico, y por encima de 2.5 representa un mercado eufórico.
La estrategia gestiona las posiciones correctamente con stop loss y take profit. La stop loss se establece en el precio de entrada menos el valor ATR multiplicado por el multiplicador ATR, y la take profit se establece en el precio de entrada más el valor ATR multiplicado por el multiplicador ATR. La amplitud de stop loss es mayor que la amplitud de take profit, lo que refleja la idea de control de riesgos de la estrategia de tendencia siguiente.
El importe de la posición se calculará basándose en el ATR y en el importe del riesgo de modo que el riesgo por unidad no exceda del importe del riesgo establecido.
La combinación de múltiples indicadores evita el comercio frecuente causado por un solo indicador. SuperTrend determina la dirección de la tendencia y Fisher Transform determina la psicología del mercado para formar señales comerciales estables.
El establecimiento adecuado de un stop loss y un take profit es propicio para captar las tendencias de las tenencias a largo plazo, controlando al mismo tiempo los riesgos.
El uso de la gestión de la cantidad de riesgo y el tamaño mínimo de la ficha hace que el riesgo de cada operación sea controlado, evitando grandes pérdidas más allá de la asequibilidad.
Las señales comerciales son estables y adecuadas para la tenencia a largo plazo.
Gran espacio de optimización para los parámetros del indicador. el período y el multiplicador de SuperTrend ATR, y la suavidad de Fisher pueden ajustarse de acuerdo con diferentes productos y marcos de tiempo para encontrar la combinación óptima de parámetros.
Como estrategia de seguimiento de tendencias, se acumularán pequeñas pérdidas durante períodos de rango.
Cuando el mercado permanece en un estado durante mucho tiempo, los valores de Fisher seguirán desviándose de la zona neutral, en cuyo caso la estrategia debe suspenderse.
El período ATR y el multiplicador ATR deben fijarse razonablemente para garantizar un amortiguador suficiente para el stop loss.
El hecho de ignorar los costos de transacción hará que las operaciones rentables pierdan dinero.
Se requiere una participación en el mercado a largo plazo para que la estrategia obtenga su ventaja.
Ajuste el período ATR, el multiplicador ATR para optimizar el stop loss y tomar ganancias.
Pruebe diferentes parámetros de Fisher como el período suave para encontrar señales comerciales más estables.
Añadir otros indicadores como filtros para evitar operaciones incorrectas cuando el mercado es incierto.
Prueba diferentes estrategias de obtención de ganancias como mover, parcial, ATR, etc. para mejorar la rentabilidad.
Optimizar las estrategias de gestión de capital como la fracción fija, la fórmula de Kelly, etc. para aumentar la relación rendimiento/riesgo.
Optimizar los costos de transacción, mantener rentable para posiciones pequeñas.
Esta estrategia integra las ventajas de SuperTrend, Fisher Transform y otros indicadores para formar una tendencia estable siguiendo una estrategia de negociación a largo plazo. A través del stop loss, take profit y la gestión de riesgos, puede lograr una buena relación de recompensa por riesgo. La estrategia necesita una mayor optimización de los parámetros, filtración de señales, gestión de capital, etc. para mejorar el rendimiento práctico. Pero la lógica general es robusta y vale la pena la verificación práctica y la optimización continua.
/*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)