
Strategi Commodity Selection Index (CSI) adalah strategi perdagangan garis pendek yang melacak dinamika pasar. Strategi ini digunakan untuk mengidentifikasi komoditas yang memiliki momentum yang kuat dengan menghitung tren dan fluktuasi komoditas. Strategi ini dikemukakan oleh Wells Wilder dalam bukunya New Technology Analysis Trading System Concepts.
Indeks CSI adalah indikator utama strategi ini, yang secara komprehensif mempertimbangkan tren dan volatilitas komoditas. Metode perhitungan spesifik adalah:
CSI = K × ATR × (ADX + n garis rata-rata harian ADX) / 2
Di antaranya, K adalah koefisien skala, ATR mewakili rata-rata amplitudo fluktuasi nyata, yang mengukur volatilitas pasar. ADX mewakili rata-rata indeks arah, yang mencerminkan tren pasar.
Dengan menghitung nilai indeks CSI untuk setiap komoditas dan membandingkannya dengan rata-rata bergerak sederhana n hari, sinyal beli dihasilkan ketika CSI lebih tinggi dari rata-rata bergeraknya dan sinyal jual dihasilkan ketika CSI lebih rendah dari rata-rata bergeraknya.
Strategi ini memilih komoditas dengan indeks CSI yang tinggi untuk diperdagangkan. Karena komoditas ini memiliki tren dan volatilitas yang kuat, potensi keuntungan yang lebih besar dapat diperoleh dalam jangka pendek.
Strategi ini memiliki beberapa keuntungan:
Strategi ini juga memiliki beberapa risiko:
Untuk mengontrol risiko, Anda harus menetapkan posisi stop loss yang masuk akal, mengontrol ukuran posisi tunggal, dan menyesuaikan parameter yang sesuai dengan lingkungan pasar yang berbeda.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Strategi indeks pilihan komoditas momentum memungkinkan perdagangan garis pendek yang sederhana dan cepat dengan menangkap komoditas yang cenderung kuat dan berfluktuasi di pasar. Metode khusus untuk melacak momentum ini membuat sinyalnya jelas dan mudah untuk diimplementasikan secara otomatis. Tentu saja, juga perlu memperhatikan pengendalian risiko, dan terus meningkatkan upgrade untuk menyesuaikan diri dengan perubahan lingkungan pasar.
/*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")