
Esta estrategia se combina con el uso de indicadores de supertrend y cambio de pescado, para buscar oportunidades de hacer shortcuts cuando el mercado se invierte. Se puede aplicar a diferentes criptomonedas, acciones y mercados ajustando los parámetros de supertrend y cambio de pescado. Cuando aparece una señal de venta, muestra el tamaño de la posición y el punto de parada y el punto de ganancia.
La estrategia primero calcula el cambio de peseta de 10 ciclos. Cuando la línea de cambio de pesetas se rompe 2.5 desde el punto bajo hacia arriba, produce una señal de venta. Al mismo tiempo, calcula el promedio de la amplitud real de 10 ciclos como un canal de supertrend. Cuando el precio se desvía de la órbita, produce una señal de venta.
Concretamente, calcula el precio de cierre de la línea K actual por debajo de la línea superior del supercanal del ciclo anterior, y cuando el ciclo anterior está por encima de la línea inferior del canal, lo juzga como una reversión del mercado, produciendo una señal de venta. Al mismo tiempo, calcula el indicador de cambio de precio de nieve, cuando la línea de cambio de precio de nieve se rompe desde el punto bajo 2.5, y el valor de cambio de precio de nieve del ciclo anterior es inferior al valor actual, lo juzga como una reversión de la tendencia, produciendo una señal de venta.
Por lo tanto, la estrategia requiere que se cumplan al mismo tiempo las dos condiciones para que se produzca la señal de venta final: la inversión de la tendencia de la tendencia de la tendencia de la tendencia de la tendencia de la tendencia de la tendencia de la tendencia de la tendencia.
Esta estrategia, combinada con el canal de supertrend y el indicador de cambio de pescado, permite capturar con mayor precisión el punto de reversión del mercado. En comparación con el uso de supertrend o cambio de pescado solo, puede reducir las falsas señales y, por lo tanto, mejorar la estabilidad de la estrategia.
Además, la estrategia ofrece flexibilidad para ajustar los parámetros de cambio de canales de tendencia súper y Fisher. El usuario puede elegir la mejor combinación de parámetros para diferentes mercados y variedades, para adaptarse de manera específica al mercado. Esta es una estrategia que se puede personalizar y optimizar.
La estrategia también ofrece la gestión de la cantidad de riesgo. El usuario puede ajustar fácilmente la cantidad de capital de riesgo de cada partida para cumplir con sus requisitos de gestión de riesgo. Al mismo tiempo, también calcula automáticamente el límite de pérdidas y los objetivos de ganancias, lo que permite una mejor tasa de retorno de riesgo.
La estrategia se basa principalmente en la estructura del mercado para determinar el canal de la tendencia súper. Cuando la tendencia se prolonga durante un período más largo, el canal puede fallar. En este caso, se debe ampliar adecuadamente el parámetro de ciclo o el múltiplo ATR del canal.
Además, las variaciones de Fisher son más propensas a generar señales erróneas o prematuras. Cuando el mercado es más volátil, los parámetros de la variación de Fisher deben ajustarse adecuadamente para filtrar parte del ruido.
Además, las estrategias de inversiones pueden tener una ganancia limitada en general. Deben combinarse con indicadores de seguimiento de tendencias, evitar abrir posiciones en zonas de convulsiones o volver a participar después de que la tendencia sea más clara. Se puede agregar una media móvil como filtro para mejorar la estabilidad de la estrategia.
La estrategia puede ser optimizada en los siguientes aspectos:
Optimizar el número de ciclos ATR y el multiplicador ATR de los canales de tendencia súper, seleccionando la mejor combinación de parámetros para diferentes variedades y condiciones de mercado
Optimización de los parámetros de ciclo de la variación de Fisher, suavización de la curva de ruido, para evitar la generación de señales erróneas
Incorporar promedios móviles o bandas de Brin como indicadores auxiliares para evitar posiciones en mercados convulsionados
Combinación de cambios de Fisher en diferentes períodos de tiempo para lograr un juicio de inversión más estable y confiable
Aumentar los módulos de gestión de posiciones, como el porcentaje de apalancamiento, el número de posiciones, las reglas de alza de posición, etc., para controlar el riesgo
Combinación de métodos como el aprendizaje automático para lograr la optimización automática de parámetros y la adecuación de estrategias
La estrategia combina el indicador de supertrend y el indicador de cambio de pescado, tiene cierta flexibilidad para juzgar la reversión del mercado y puede adaptarse a diferentes variedades a través de ajustes de parámetros. En comparación con un solo indicador, permite un juicio de señales y un control de riesgos más fiables. Con la optimización continua, la estrategia espera aumentar aún más la estabilidad y mejorar la rentabilidad. Es una estrategia de alta calidad que vale la pena seguir 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)