8.1. Trend Indicators (Chỉ báo xu hướng)
8.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ố
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)
8.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ố
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)
8.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ố
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)
8.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ố
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)
8.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ố
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)
8.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ố:
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)
8.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ố
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)
8.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ố:
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)
8.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ố:
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)
8.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ố:
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)
8.1.11. DC (Donchian Channel)
Donchian Channel (DC), hay còn gọi là Kênh Donchian, là một chỉ báo phân tích kỹ thuật được phát triển bởi Richard Donchian, người được mệnh danh là "Cha đẻ của giao dịch theo xu hướng" (Trend Following). Chỉ báo này được sử dụng để đo lường biến động và xác định phạm vi giá tối đa và tối thiểu của một tài sản trong một khoảng thời gian cụ thể (N kỳ).
def donchian_channel_hband(self, high: pd.Series, low: pd.Series, close: pd.Series, window: int = 20, offset: int = 0) -> pd.Series: ...
def donchian_channel_lband(self, high: pd.Series, low: pd.Series, close: pd.Series, window: int = 20, offset: int = 0) -> pd.Series: ...
def donchian_channel_mband(self, high: pd.Series, low: pd.Series, close: pd.Series, window: int = 20, offset: int = 0) -> pd.Series: ...
def donchian_channel_pband(self, high: pd.Series, low: pd.Series, close: pd.Series, window: int = 20, offset: int = 0) -> pd.Series: ...
def donchian_channel_wband(self, high: pd.Series, low: pd.Series, close: pd.Series, window: int = 20, offset: int = 0) -> pd.Series: ...
Tham số:
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 phiên được dùng để tính toán kênh Donchian.
int
20
offset
Số phiên dịch chuyển (nếu muốn trễ tín hiệu).
int
0
Ví dụ:
fi = client.FiinIndicator()
df['dc_high'] = fi.donchian_channel_hband(df["high"], df["low"], df["close"], window=20, offset=0)
df['dc_low'] = fi.donchian_channel_lband(df["high"], df["low"], df["close"], window=20, offset=0)
df['dc_mid'] = fi.donchian_channel_mband(df["high"], df["low"], df["close"], window=20, offset=0)
df['dc_percentage'] = fi.donchian_channel_pband(df["high"], df["low"], df["close"], window=20, offset=0)
df['dc_width'] = fi.donchian_channel_wband(df["high"], df["low"], df["close"], window=20, offset=0)
print(df)
8.1.12. Vortex Indicator
Vortex Indicator (VI), hay Chỉ báo Lốc xoáy, là một chỉ báo kỹ thuật dựa trên xu hướng, được phát triển bởi Etienne Botes và Douglas Siepman vào năm 2010. Nó được thiết kế để xác định sự bắt đầu của một xu hướng mới hoặc xác nhận hướng đi của xu hướng hiện tại.
Chỉ báo Vortex bao gồm hai đường dao động chính:
+VI (Vortex Positive): Đo lường sức mạnh của xu hướng tăng (chuyển động đi lên).
-VI (Vortex Negative): Đo lường sức mạnh của xu hướng giảm (chuyển động đi xuống).
def vortex_indicator_pos(high: pandas.Series, low: pandas.Series, close: pandas.Series, window: int = 14) -> pd.Series: ...
def vortex_indicator_neg(high: pandas.Series, low: pandas.Series, close: pandas.Series, window: int = 14) -> pd.Series: ...
def vortex_indicator_diff(high: pandas.Series, low: pandas.Series, close: pandas.Series, window: int = 14) -> pd.Series: ...
Tham số:
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ố phiên dùng để tính trung bình (chu kỳ).
int
14
Ví dụ:
fi = client.FiinIndicator()
df['vi+'] = fi.vortex_indicator_pos(df["high"], df["low"], df["close"], window=14)
df['vi+'] = fi.vortex_indicator_neg(df["high"], df["low"], df["close"], window=14)
df['vi_diff'] = fi.vortex_indicator_diff(df["high"], df["low"], df["close"], window=14)
print(df)
8.1.13. TEMA (Triple Exponential Moving Average)
Triple Exponential Moving Average (TEMA), hay Đường Trung bình Động Hàm mũ Bậc ba, là một chỉ báo kỹ thuật được phát triển bởi Patrick G. Mulloy vào năm 1994. Mục tiêu chính của TEMA là giảm thiểu độ trễ (lag) vốn có trong các đường trung bình động truyền thống như Simple Moving Average (SMA) và Exponential Moving Average (EMA), giúp chỉ báo phản ứng nhanh hơn với sự thay đổi của giá.
Mặc dù có tên là "Triple" (Bậc ba), TEMA không chỉ đơn giản là áp dụng ba lần EMA. Thay vào đó, nó sử dụng một công thức độc đáo để kết hợp EMA đơn, EMA kép (Double EMA - DEMA), và EMA bậc ba nhằm loại bỏ độ trễ.
def tema(close: pandas.Series, window: int = 9)
Tham số:
close
Cột dữ liệu chứa các giá trị cột giá đóng cửa.
pandas.Series
window
Số phiên dùng để tính trung bình động.
int
9
Ví dụ:
fi = client.FiinIndicator()
df['tema_9'] = fi.tema(df["close"], window=9)
print(df)
8.1.14. DEMA (Double Exponential Moving Average)
DEMA là viết tắt của Double Exponential Moving Average (Đường Trung bình Động Hàm mũ Kép), là một chỉ báo phân tích kỹ thuật được phát triển bởi Patrick G. Mulloy vào năm 1994.
Mục tiêu chính của DEMA là giảm thiểu độ trễ (lag) vốn có trong đường trung bình động hàm mũ tiêu chuẩn (EMA), giúp đường chỉ báo bám sát hành động giá hơn và cung cấp tín hiệu sớm hơn.
def dema(close: pandas.Series, window: int = 9)
Tham số:
close
Cột dữ liệu chứa các giá trị cột giá đóng cửa.
pandas.Series
window
Số phiên dùng để tính trung bình động.
int
9
Ví dụ:
fi = client.FiinIndicator()
df['dema_9'] = fi.dema(df["close"], window=9)
print(df)
8.1.15. ZLEMA (Zero Lag Exponential Moving Average)
ZLEMA là viết tắt của Zero Lag Exponential Moving Average (Đường Trung bình Động Hàm mũ Không Độ trễ). Đây là một chỉ báo phân tích kỹ thuật được thiết kế nhằm mục đích loại bỏ hoặc giảm thiểu tối đa độ trễ (lag) vốn có của các đường trung bình động truyền thống như SMA (Simple Moving Average) và EMA (Exponential Moving Average).
ZLEMA được phát triển để phản ánh sự thay đổi của giá nhanh hơn, giúp nhà giao dịch xác định sự đảo chiều hoặc tiếp diễn xu hướng một cách kịp thời hơn.
def zlema(column: pandas.Series, window: int = 14)
Tham số:
column
Cột dữ liệu (thường là giá đóng cửa) để tính toán ZLEMA.
pandas.Series
window
Số phiên dùng để tính trung bình động.
int
14
Ví dụ:
fi = client.FiinIndicator()
df['zlema_9'] = fi.zlema(df["close"], window=14)
print(df)
8.1.16. Jurik Moving Average
Jurik Moving Average (JMA) là một chỉ báo phân tích kỹ thuật tiên tiến, được phát triển bởi nhà toán học Mark Jurik. JMA được coi là một trong những đường trung bình động (Moving Average) mạnh mẽ nhất vì nó được thiết kế để giải quyết hai vấn đề lớn của các MA truyền thống (như SMA và EMA): độ trễ (lag) và nhiễu giá (noise).
Mục tiêu chính của JMA là bám sát giá một cách chặt chẽ nhất có thể nhưng vẫn giữ được độ mượt mà.
def jma(price: pandas.Series, length: int = 7, phase: int = 50, power: int = 2)
Tham số:
price
Chuỗi giá (thường là giá đóng cửa).
pandas.Series
length
Độ dài chu kỳ tính toán JMA.
int
7
phase
Điều chỉnh độ nhạy (từ -100 đến +100): giá trị dương khiến JMA tiến gần giá hơn, âm làm mượt hơn.
int
50
power
Mức độ “phản ứng” của bộ lọc (power cao → phản ứng nhanh hơn).
int
2
Ví dụ:
fi = client.FiinIndicator()
df['jma'] = fi.jma(df["close"], length=7, phase=50, power=2)
print(df)
8.1.17. Hull Moving Average
Hull Moving Average (HMA) là một chỉ báo đường trung bình động (Moving Average) được thiết kế bởi Alan Hull vào năm 2005. Mục đích của HMA là giảm thiểu độ trễ (lag) của các MA truyền thống như SMA và EMA, đồng thời vẫn giữ được độ mượt cần thiết để lọc bỏ nhiễu giá.
HMA đạt được sự cân bằng này thông qua một công thức tính toán phức tạp.
def hma(close: pandas.Series, period: int = 9)
Tham số:
close
Chuỗi giá đầu vào (thường là giá đóng cửa).
pandas.Series
period
Số chu kỳ tính HMA (>= 2).
int
9
Ví dụ:
fi = client.FiinIndicator()
df['hma'] = fi.hma(df["close"], period=9)
print(df)
8.1.18. Fractal Adaptive Moving Average
Fractal Adaptive Moving Average (FRAMA) là một loại đường trung bình động (Moving Average) thông minh được phát triển bởi John Ehlers. Điểm độc đáo của FRAMA là khả năng tự động điều chỉnh hệ số làm mượt (smoothing factor) dựa trên kích thước Fractal (Fractal Dimension) của hành động giá.
FRAMA giải quyết được vấn đề nan giải của các MA truyền thống: làm thế nào để vừa phản ứng nhanh với các xu hướng mạnh (giảm độ trễ) vừa lọc nhiễu hiệu quả trong thị trường đi ngang (tăng độ mượt).
def frama(df: pandas.DataFrame, window: int = 16)
Tham số:
df
Dataframe đầu vào
pandas.DataFrame
window
Số phiên dùng để tính FRAMA (phải chẵn).
int
16
Ví dụ:
fi = client.FiinIndicator()
df['frama'] = fi.frama(df, window=16)
print(df)
8.1.19. Arnaud Legoux Moving Average
Arnaud Legoux Moving Average (ALMA) là một chỉ báo đường trung bình động (Moving Average) được phát triển bởi Arnaud Legoux và Dimitrios Kouzis-Loukas nhằm giải quyết nhược điểm cố hữu của các MA truyền thống: sự đánh đổi giữa độ trễ (lag) và độ mượt (smoothness).
ALMA nổi bật vì nó có thể giảm thiểu độ trễ một cách hiệu quả mà vẫn duy trì độ mượt cao, giúp nhà giao dịch xác định xu hướng nhanh hơn và giảm tín hiệu nhiễu.
def alma(column: pandas.Series, period: int = 9, offset: float = 0.85, sigma: float = 6)
Tham số:
column
Chuỗi giá đầu vào (thường là Close).
pandas.Series
period
Số phiên dùng để tính ALMA.
int
9
offset
Vị trí trọng tâm (0 → đầu, 1 → cuối).
float
0.85
sigma
Độ rộng của hàm Gaussian (điều chỉnh độ mượt).
float
6.0
Ví dụ:
fi = client.FiinIndicator()
df['alma'] = fi.alma(df["close"], period=9, offset=0.85, sigma=6.0)
print(df)
Last updated