
La estrategia del Índice de Selección de Productos Dinámicos (CSI) es una estrategia de negociación de línea corta que sigue la dinámica del mercado. Se trata de identificar productos con un fuerte impulso mediante el cálculo de la tendencia y la volatilidad de los productos. La estrategia fue presentada por Welles Wilder en su libro New Technology Analysis Trading System Concepts.
El indicador central de la estrategia es el índice CSI, que tiene en cuenta la tendencia y la volatilidad de los productos.
CSI = K × ATR × (ADX + n línea promedio diaria de ADX) / 2)
K es el coeficiente de escala, ATR es el promedio de la amplitud de fluctuación real, que mide la volatilidad del mercado. ADX es el promedio del índice de dirección, que refleja la tendencia del mercado.
Calculando el valor del índice CSI de cada producto y comparándolo con su media móvil simple de n días, se genera una señal de compra cuando el CSI está por encima de su media móvil y una señal de venta cuando el CSI está por debajo de su media móvil.
Esta estrategia selecciona los productos con un índice CSI más alto para operar. Debido a que estos productos tienen una fuerte tendencia y volatilidad, se puede obtener un mayor potencial de ganancias en el corto plazo.
La estrategia tiene las siguientes ventajas:
La estrategia también tiene sus riesgos:
Para controlar el riesgo, se debe establecer razonablemente la posición de stop loss, controlar el tamaño de la posición individual y ajustar adecuadamente los parámetros para adaptarse a las diferentes condiciones del mercado.
La estrategia puede ser optimizada en los siguientes aspectos:
La estrategia del índice de selección de productos dinámicos permite una negociación sencilla y rápida de líneas cortas mediante la captura de productos con tendencias fuertes y volátiles en el mercado. Este método especializado para rastrear la dinámica hace que su señal sea clara y fácil de automatizar. Por supuesto, también se debe tener en cuenta el control del riesgo y la mejora continua de la actualización para adaptarse a los cambios en el entorno del mercado.
/*backtest
start: 2023-10-28 00:00:00
end: 2023-11-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 20/03/2019
// The Commodity Selection Index ("CSI") is a momentum indicator. It was
// developed by Welles Wilder and is presented in his book New Concepts in
// Technical Trading Systems. The name of the index reflects its primary purpose.
// That is, to help select commodities suitable for short-term trading.
// A high CSI rating indicates that the commodity has strong trending and volatility
// characteristics. The trending characteristics are brought out by the Directional
// Movement factor in the calculation--the volatility characteristic by the Average
// True Range factor.
// Wilder's approach is to trade commodities with high CSI values (relative to other
// commodities). Because these commodities are highly volatile, they have the potential
// to make the "most money in the shortest period of time." High CSI values imply
// trending characteristics which make it easier to trade the security.
// The Commodity Selection Index is designed for short-term traders who can handle
// the risks associated with highly volatile markets.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
fADX(Len) =>
up = change(high)
down = -change(low)
trur = rma(tr, Len)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur)
sum = plus + minus
100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len)
strategy(title="Commodity Selection Index Backtest", shorttitle="CSI Backtest")
PointValue = input(50)
Margin = input(3000)
Commission = input(10)
Length = input(14)
reverse = input(false, title="Trade reverse")
K = 100 * ((PointValue / sqrt(Margin) / (150 + Commission)))
xATR = atr(Length)
xADX = fADX(Length)
nADXR = (xADX + xADX[Length]) * 0.5
xCSI = K * xATR * nADXR
xMACSI = sma(xCSI, Length)
pos = 0.0
pos := iff(xCSI < xMACSI, 1,
iff(xCSI > xMACSI, -1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos))
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xCSI, color=green, title="CSI")
plot(xMACSI, color=red, title="CSI SMA")