
La estrategia combina los indicadores SuperTrend y Fisher Conversion para lograr una estrategia de negociación de tendencias más estables que siguen la línea larga. Cuando el indicador SuperTrend emite una señal de compra, mientras que el indicador Fisher Conversion es menor a 2.5 y sube, produce una señal de compra. La estrategia administra las posiciones de manera razonable para detener y detener los pérdidas.
Los indicadores de SuperTrend se utilizan para determinar la dirección de la tendencia de los precios. Cuando los precios se mueven hacia arriba, se emite una señal positiva; cuando los precios se mueven hacia abajo, se emite una señal negativa. Esta estrategia emite una señal de compra cuando el SuperTrend es positivo.
El índice de conversión de Fisher refleja el grado de impacto de las fluctuaciones de precios en la psicología de los consumidores. Los valores de Fisher en el rango [−2,5, 2,5] representan un mercado neutral, menos de 2,5 representan pánico en el mercado y más de 2,5 representan euforia en el mercado. Esta estrategia emite una señal de compra cuando el Fisher es menor que 2,5 y sube para capturar el punto de inflexión de pánico a neutral.
La estrategia administra la posición con un stop loss razonable. El punto de parada se establece como el precio de entrada menos el ATR multiplicado por el ATR, y el punto de parada se establece como el precio de entrada más el ATR multiplicado por el ATR. El stop loss es mayor que el stop loss, lo que refleja el pensamiento de control de riesgo de la estrategia.
También se considera la gestión de la cantidad de riesgo. El tamaño de la posición se calcula en función del ATR y la cantidad de riesgo, de modo que la cantidad de riesgo por unidad de riesgo no exceda la cantidad de riesgo establecida.
La combinación de varios indicadores evita que un solo indicador cause una mayor frecuencia de operaciones. La SuperTrend determina la dirección de la tendencia, la variación de Fisher determina la psicología del mercado, y ambas se combinan para formar una señal de comercio estable.
Establezca un stop loss razonable para aprovechar la tendencia y mantener la línea larga, mientras controla el riesgo.
La administración de la cantidad de riesgo y las unidades de operación mínimas permiten controlar el riesgo de cada transacción y evitar pérdidas que exceden la capacidad de soportar.
Las señales de negociación son estables y adecuadas para la tenencia de líneas largas. La conversión de Fisher es un indicador suave que ayuda a filtrar el ruido del mercado y evitar falsas señales.
Hay mucho espacio para optimizar los parámetros indicadores. Se pueden ajustar los parámetros ATR y multiplicadores de SuperTrend en función de los diferentes ciclos de las diferentes variedades, y los parámetros de suavizado de la transformación de Fisher, para encontrar la combinación óptima de parámetros.
Como estrategia de seguimiento de la tendencia, se acumulan pequeñas pérdidas en la fase de liquidación de la conmoción. Se debe elegir una variedad de tendencia evidente y una estrategia de funcionamiento periódico.
La variación de Fisher no es eficaz para situaciones extremas. Cuando el mercado mantiene un estado durante mucho tiempo, el valor de Fisher se desvía constantemente del intervalo neutral, momento en el que se debe suspender la estrategia.
El punto de parada demasiado cercano puede causar una salida demasiado frecuente. Se debe configurar razonablemente el ciclo ATR y los parámetros de los múltiplos ATR para asegurar que la distancia de parada tenga un cierto intervalo de amortiguamiento.
El descuido de los costos de transacción puede conducir a pequeñas pérdidas de transacciones con ganancias. Se debe considerar el nivel de los costos de transacción de las variedades y se debe ajustar adecuadamente el margen de frenada.
La participación en el mercado durante un largo período de tiempo puede ser una ventaja estratégica. Debe asegurarse de tener suficiente capital para apoyar las operaciones de largo plazo y tener una mentalidad estable.
Ajuste de los parámetros de ATR y ATR, para optimizar el stop loss. Se pueden optimizar los parámetros mediante el retroceso de datos, también se puede optimizar dinámicamente.
Prueba diferentes parámetros de cambio de Fisher, como el ciclo de suavización, en busca de señales de negociación más estables. Puede combinarse con parámetros de ajuste dinámico de la volatilidad del mercado.
En combinación con otros indicadores como filtro, evita las transacciones erróneas cuando la bolsa es incierta. Se puede usar la línea media, la volatilidad y otros para determinar el movimiento de la bolsa.
Prueba diferentes estrategias de frenado, como frenado móvil, frenado por lotes, frenado por ATR, etc., para mejorar la rentabilidad.
Las estrategias de gestión de fondos optimizadas, como la gestión de fondos de proporción fija, la fórmula de Kelly, etc., hacen que las ganancias sean más altas que las pérdidas.
Optimización de los costos de transacción para garantizar la rentabilidad de las operaciones de minoristas.
La estrategia integra la ventaja de indicadores como SuperTrend y Fisher Conversion, formando una tendencia estable que sigue a la estrategia de negociación de la línea larga. Se obtiene una mejor tasa de retorno de riesgo a través de la gestión de la parada de pérdidas y el control del riesgo. La estrategia debe optimizarse aún más en términos de parámetros, filtración de señales y administración de fondos para obtener un rendimiento de bolsa más fuerte.
/*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)