7.1. Trend Indicators (Chỉ báo xu hướng)

7.1.1. EMA (Exponential Moving Average)

EMA là đường trung bình di động được tính toán với trọng số, gán mức độ quan trọng cao hơn cho dữ liệu giá gần hơn. EMA phản ứng nhanh hơn với những thay đổi giá cả, giúp nhà đầu tư nắm bắt xu hướng thị trường một cách kịp thời.

def ema(column: pandas.core.series.Series, window: int)

Tham số

Tên tham số
Ý nghĩa
Kiểu dữ liệu
Giá trị mặc định

column

Cột dữ liệu (series) chứa các giá trị để tính toán EMA.

pandas.Series

window

Số lượng điểm dữ liệu sử dụng trong phép tính EMA.

int

Ví dụ:

fi = client.FiinIndicator()
df['ema_5'] = fi.ema(df['close'], window = 5)
print(df)

7.1.2. SMA (Simple Moving Average)

SMA là đường trung bình di động đơn giản, là một chỉ báo được tính bằng cách lấy trung bình cộng của giá trong một khoảng thời gian nhất định.

def sma(column: pandas.core.series.Series, window: int)

Tham số

Tên tham số
Mô tả
Kiểu dữ liệu
Giá trị mặc định

column

Cột dữ liệu (series) chứa các giá trị để tính toán SMA.

pandas.Series

window

Số lượng điểm dữ liệu sử dụng trong phép tính SMA.

int

Ví dụ:

fi = client.FiinIndicator()
df['sma_5'] = fi.sma(df['close'], window = 5)
print(df)

7.1.3. WMA (Weighted Moving Average)

WMA là đường trung bình tỷ trọng tuyến tính. Chỉ báo này sẽ nhạy cảm hơn và có biến động sát hơn so với các biến động của giá thị trường. WMA sử dụng trọng số khác nhau cho mỗi giá trị trong chuỗi dữ liệu. Trong đó, các trọng số cao nhất sẽ được gán với giá trị mới nhất và giảm dần cho đến giá trị cũ nhất. Chính đặc tính này đã khiến đường WMA trở lên nhạy cảm hơn và “có dữ liệu mịn hơn” so với các đường trung bình động SMA hay EMA.

def wma(column: pandas.core.series.Series, window: int)

Tham số

Tên tham số
Mô tả
Kiểu dữ liệu
Giá trị mặc định

column

Cột dữ liệu (series) chứa các giá trị để tính toán WMA.

pandas.Series

window

Số lượng điểm dữ liệu sử dụng trong phép tính WMA.

int

Ví dụ:

fi = client.FiinIndicator()
df['wma'] = fi.wma(df['close'], window = 14)
print(df)

7.1.4. MACD (Moving Average Convergence Divergence)

MACD là một trong những công cụ phân tích kỹ thuật được sử dụng rộng rãi bởi các nhà giao dịch. MACD giúp đo lường động lượng, hướng và sức mạnh của một xu hướng giá.

Cấu tạo:

  • Đường MACD: Sự khác nhau giữa đường EMA ngắn hạn (thường là 12 ngày) và đường EMA dài hạn (thường là 26 ngày).

  • Đường tín hiệu (Signal): Đường EMA của đường MACD (thường là 9 ngày).

  • Biểu đồ MACD (Histogram): Sự khác nhau giữa đường MACD và đường tín hiệu.

def macd(column: pandas.core.series.Series, window_slow: int = 26, window_fast: int = 12)

def macd_signal(column: pandas.core.series.Series, window_slow: int = 26, window_fast: int = 12, window_sign: int = 9)

def macd_diff(column: pandas.core.series.Series, window_slow: int = 26, window_fast: int = 12, window_sign: int = 9)

Tham số

Tên tham số
Mô tả
Kiểu dữ liệu
Giá trị mặc định

column

Cột dữ liệu (series) chứa các giá trị để tính toán MACD.

pandas.Series

window_slow

Số lượng điểm dữ liệu sử dụng cho đường EMA dài hạn trong tính toán MACD.

int

26

window_fast

Số lượng điểm dữ liệu sử dụng cho đường EMA ngắn hạn trong tính toán MACD.

int

12

window_sign

Số lượng điểm dữ liệu sử dụng cho đường EMA trong tính toán MACD Signal.

int

9

Ví dụ:

fi = client.FiinIndicator()
df['macd'] = fi.macd(df['close'], window_fast=12, window_slow=26)
df['macd_signal'] = fi.macd_signal(df['close'], window_fast=12, window_slow=26, window_sign=9)
df['macd_diff'] = fi.macd_diff(df['close'], window_fast=12, window_slow=26, window_sign=9)
print(df)

7.1.5. ADX (ADXIndicator)

ADX là công cụ chỉ báo giao động xác định độ mạnh yếu của xu hướng. Người ta thường dùng công cụ này để xác định thị trường đang đi ngang (thị trường sideway) hay đã bắt đầu xu hướng chưa. Ban đầu, chỉ báo này được sử dụng phổ biến trong thị trường hàng hoá, sau này được mở rộng sang nhiều thị trường tài chính khác như: Chứng khoán, forex, tiền điện tử.

def adx(high: pandas.core.series.Series, low: pandas.core.series.Series, close: pandas.core.series.Series, window: int = 14)

def adx_neg(high: pandas.core.series.Series, low: pandas.core.series.Series, close: pandas.core.series.Series, window: int = 14)

def adx_pos(high: pandas.core.series.Series, low: pandas.core.series.Series, close: pandas.core.series.Series, window: int = 14)

Tham số

Tên tham số
Mô tả
Kiểu dữ liệu
Giá trị mặc định

low

Cột dữ liệu chứa các giá trị cột giá thấp nhất để tính toán ADX .

pandas.Series

high

Cột dữ liệu chứa các giá trị cột giá cao nhất để tính toán ADX.

pandas.Series

close

Cột dữ liệu chứa các giá trị cột giá đóng cửa để tính toán ADX.

pandas.Series

window

Số lượng điểm dữ liệu sử dụng trong phép tính ADX.

int

14

Ví dụ:

fi = client.FiinIndicator()
df['adx'] = fi.adx(df['high'], df['low'], df['close'], window=14)
df['adx_neg'] = fi.adx_neg(df['high'], df['low'], df['close'], window=14)
df['adx_pos'] = fi.adx_pos(df['high'], df['low'], df['close'], window=14)
print(df)

7.1.6. PSAR (Parabolic Stop and Reverse)

PSAR là một chỉ báo kỹ thuật do J. Welles Wilder Jr. phát triển, được sử dụng để xác định xu hướng giá và điểm đảo chiều trong giao dịch. PSAR nằm dưới giá khi xu hướng tăng và nằm trên giá khi xu hướng giảm, giúp nhà giao dịch xác định các mức hỗ trợ hoặc kháng cự. Khi giá vượt qua PSAR, xu hướng có thể đảo chiều. Chỉ báo này dễ sử dụng, đặc biệt hiệu quả trong thị trường có xu hướng mạnh, nhưng có thể tạo tín hiệu nhiễu trong thị trường đi ngang.

def psar(self, high: pd.Series, low: pd.Series, close: pd.Series, step: float = 0.02, max_step: float = 0.2)

Tham số:

Tên tham số
Mô tả
Kiểu dữ liệu
Mặc định

high

Cột dữ liệu chứa các giá trị cột giá cao nhất.

pandas.Series

low

Cột dữ liệu chứa các giá trị cột giá thấp nhất.

pandas.Series

close

Cột dữ liệu chứa các giá trị cột giá đóng cửa.

pandas.Series

step

Hệ số gia tốc (Acceleration Factor - AF) khởi tạo trong quá trình tính toán.Step càng nhỏ -> PSAR sẽ phản ứng chậm hơn với thay đổi giá, phù hợp cho các thị trường ít biến động.Step lớn hơn -> PSAR nhạy hơn, dễ bắt kịp các thay đổi nhưng cũng có thể tạo tín hiệu nhiễu.

float

0.02

max_step

Giá trị tối đa mà hệ số gia tốc (AF) có thể đạt được.

float

0.2

Ví dụ:

fi = client.FiinIndicator()
df['psar'] = fi.psar(df['high'], df['low'], df['close'], step=0.02, max_step=0.2)
print(df)

7.1.7. Ichimoku (Ichimoku Kinko Hyo)

Ichimoku là một chỉ báo kỹ thuật do Goichi Hosoda phát triển, giúp đánh giá xu hướng, mức hỗ trợ, kháng cự và cung cấp tín hiệu mua bán trong một biểu đồ duy nhất. Chỉ báo gồm năm thành phần chính: Tenkan-sen, Kijun-sen, Senkou Span A, Senkou Span B, và Chikou Span, tạo thành "đám mây" (Kumo) thể hiện động lực thị trường. Ichimoku đặc biệt hiệu quả trong các thị trường có xu hướng rõ ràng, giúp nhà giao dịch đưa ra quyết định dựa trên sự cân bằng giá.

def ichimoku_a(self, high: pd.Series, low: pd.Series, close: pd.Series, window1: int = 9, window2: int = 26, window3: int = 52) -> pd.Series: ...
def ichimoku_b(self, high: pd.Series, low: pd.Series, close: pd.Series, window1: int = 9, window2: int = 26, window3: int = 52) -> pd.Series: ...
def ichimoku_base_line(self, high: pd.Series, low: pd.Series, close: pd.Series, window1: int = 9, window2: int = 26, window3: int = 52) -> pd.Series: ...
def ichimoku_conversion_line(self, high: pd.Series, low: pd.Series, close: pd.Series, window1: int = 9, window2: int = 26, window3: int = 52) -> pd.Series: ...
def ichimoku_lagging_line(self, high: pd.Series, low: pd.Series, close: pd.Series,
    window1: int = 9, window2: int = 26, window3: int = 52) -> pd.Series: ...

Tham số

Tham số
Mô tả
Kiểu dữ liệu
Mặc định

high

Cột dữ liệu chứa các giá trị cột giá cao nhất.

pandas.Series

low

Cột dữ liệu chứa các giá trị cột giá thấp nhất.

pandas.Series

close

Cột chứa dữ liệu giá đóng cửa.

pandas.Series

window1

Số lượng điểm dữ liệu sử dụng cho đường Conversion Line (Tenkan-sen).

int

9

window2

Số lượng điểm dữ liệu sử dụng cho đường Base Line (Kijun-sen) và để dịch các đường như Chikou Span và Senkou Span A/B.

int

26

window3

Số lượng điểm dữ liệu sử dụng cho đường Senkou Span B.

int

52

Ví dụ:

fi = client.FiinIndicator()
df['senkou_span_a'] = fi.ichimoku_a(df['high'], df['low'], df['close'], window1 = 9, window2 = 26, window3 = 52)
df['senkou_span_b'] = fi.ichimoku_b(df['high'], df['low'], df['close'], window1 = 9, window2 = 26, window3 = 52)
df['kijun_sen'] = fi.ichimoku_base_line(df['high'], df['low'], df['close'], window1 = 9, window2 = 26, window3 = 52) 
df['tenkan_sen'] = fi.ichimoku_conversion_line(df['high'], df['low'], df['close'], window1 = 9, window2 = 26, window3 = 52)
print(df)

7.1.8. CCI (Commodity Channel Index)

CCI là một chỉ báo kỹ thuật được Donald Lambert phát triển dùng để đo lường độ lệch của giá so với giá trị trung bình trong một khoảng thời gian, giúp xác định điều kiện quá mua hoặc quá bán. Khi CCI vượt ngưỡng 100, giá có thể đang quá mua, và khi dưới -100, giá có thể đang quá bán. Chỉ báo này phù hợp để phát hiện xu hướng mới hoặc cảnh báo sự đảo chiều tiềm năng.

def cci(self, high: pd.Series, low: pd.Series, close: pd.Series, window: int = 20, constant: float = 0.015) -> pd.Series: ...

Tham số:

Tham số
Mô tả
Kiểu dữ liệu
Mặc định

high

Cột dữ liệu chứa các giá trị cột giá cao nhất.

pandas.Series

low

Cột dữ liệu chứa các giá trị cột giá thấp nhất.

pandas.Series

close

Cột dữ liệu chứa các giá trị cột giá đóng cửa.

pandas.Series

window

Số lượng điểm dữ liệu sử dụng cho đường SMA và Mean Deviation.

int

20

constant

Hằng số chuẩn hóa để đảm bảo giá trị CCI dao động trong một phạm vi xác định.

float

0.015

Ví dụ:

fi = client.FiinIndicator()
df['cci'] = fi.cci(df['high'], df['low'], df['close'], window = 20, constant = 0.015)
print(df)

7.1.9. Aroon

Aroon là một chỉ báo kỹ thuật do Tushar Chande phát triển, dùng để đo lường sức mạnh của xu hướng và xác định sự bắt đầu hoặc kết thúc của xu hướng. Chỉ báo gồm hai thành phần chính: Aroon-Up (theo dõi đỉnh cao nhất) và Aroon-Down (theo dõi đáy thấp nhất) trong một khoảng thời gian nhất định. Giá trị dao động từ 0 đến 100, với mức cao cho thấy xu hướng mạnh và mức thấp cho thấy sự yếu dần của xu hướng. Aroon đặc biệt hữu ích trong việc phát hiện các giai đoạn tích lũy hoặc đảo chiều trên thị trường.

def aroon(self, high: pd.Series, low: pd.Series, window: int = 25) -> pd.Series: ...
def aroon_up(self, high: pd.Series, low: pd.Series, window: int = 25) -> pd.Series: ... 
def aroon_down(self, high: pd.Series, low: pd.Series, window: int = 25) -> pd.Series: ...

Tham số:

Tham số
Mô tả
Kiểu dữ liệu
Giá trị mặc định

high

Cột dữ liệu chứa các giá trị cột giá cao nhất.

pandas.Series

low

Cột dữ liệu chứa các giá trị cột giá thấp nhất.

pandas.Series

window

Số lượng điểm dữ liệu sử dụng cho đường SMA và Mean Deviation.

int

25

Ví dụ:

fi = client.FiinIndicator()
df['aroon'] = fi.aroon(df['high'], df['low'], window: int = 25)
df['aroon_up'] = fi.aroon_up(df['high'], df['low'], window: int = 25)
df['aroon_down'] = fi.aroon_down(df['high'], df['low'], window: int = 25)
print(df)

7.1.10. Zig Zag

Zig Zag là một chỉ báo phổ biến giúp lọc bỏ những biến động giá nhỏ để loại bỏ nhiễu dữ liệu và nhấn mạnh xu hướng. Các nhà giao dịch thường sử dụng Zig Zag để xác nhận xu hướng, xác định ngưỡng hỗ trợ và kháng cự tiềm năng và phát hiện mô hình. Chỉ báo này được hình thành bằng cách xác định các điểm cao và thấp cục bộ quan trọng theo thứ tự xen kẽ và kết nối chúng bằng các đường thẳng, bỏ qua tất cả các điểm dữ liệu khác khỏi đầu ra của chúng. Có một số cách để tính toán các điểm dữ liệu của Zig Zag và các điều kiện theo đó hướng của nó thay đổi. Tập lệnh này sử dụng các điểm xoay làm điểm dữ liệu, là các giá trị cao nhất hoặc thấp nhất trong một số thanh xác định trước và sau chúng. Hướng chỉ đảo ngược khi một điểm xoay mới hình thành lệch khỏi điểm Zig Zag cuối cùng theo hướng ngược lại với một lượng lớn hơn hoặc bằng một tỷ lệ phần trăm được chỉ định.

def zigzag(self, high: pd.Series, low: pd.Series, dev_threshold: float = 5.0, depth: int = 10) -> pd.Series: ...

Tham số:

Tham số
Mô tả
Kiểu dữ liệu
Giá trị mặc định

high

Cột dữ liệu chứa các giá trị cột giá cao nhất.

pandas.Series

low

Cột dữ liệu chứa các giá trị cột giá thấp nhất.

pandas.Series

dev_threshold

Độ lệch phần trăm tối thiểu từ một điểm trước khi đường ​ZigZag đổi hướng.

float

5.0

depth

Số thanh cần thiết để phát hiện điểm pivot.

int

10

Ví dụ:

fi = client.FiinIndicator()
df['zigzag'] = fi.zigzag(df['high'], df['low'], dev_threshold = 5.0, depth = 10)
print(df)

Last updated