1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập cá nhân môn trí tuệ nhân tạo trong giao dịch Định lượng

49 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 49
Dung lượng 6,4 MB

Nội dung

Ụ VỤ ĐÈ BÀI Câu 1: Vẽ đồ thị biểu diễn giá đóng cửa của cô phiếu VCB, đường SMA20 và đường Đường trung bình động giản đơn Simple Moving Average _ SMA TraderForex, 2022 Câu 2: Xây dựn

Trang 1

BAI TAP CA NHAN

MON: TRI TUE NHAN TAO TRONG

Trang 2

Ụ VỤ

ĐÈ BÀI

Câu 1: Vẽ đồ thị biểu diễn giá đóng cửa của cô phiếu VCB, đường SMA(20) và đường

Đường trung bình động giản đơn (Simple Moving Average _ SMA) (TraderForex,

2022)

Câu 2: Xây dựng chiến thuật giao dịch dựa trên đường SMA(ngắn hạn) và đường

SMA(dài hạn) Cụ thê, khi đường SMA(ngắn hạn) cắt từ dưới lên đường SMA(dài hạn)

là tín hiệu "Mua" Trong khi, đường SMA(ngắn hạn) cắt từ trên xuống đường SMA(dài

Đường EMA (Exponential Moving Average — đường trung bình động giản

Chi sé RSI (Relative Strength Index) - Chí số sức mạnh tương đối (Finhay,2023) 2I

Câu 3: Với số tiền đầu tư là 100.000.000 đồng, mỗi lần thực hiện giao dịch sẽ mua 100 cô phiéu/giao dich Gia sir phi giao dịch là 0%, xác định đường SMA(ngắn hạn) và đường SMA(dai hạn) dé nhà đầu tư có thê kiếm được số tiền nhiều nhất sau khi thực hiện chiến

Trang 3

ĐÈ

Sử dụng dữ liệu giao dịch của các cô phiếu VCB trong giai đoạn từ ngày 03/01/2016 đến ngày 03/01/2023 tải từ VNSTOCK Dữ liệu bao gồm các biến:

"TradingDate”: ngay giao dich

"Open": giá mở cửa

"High": gid cao nhất

"Low": giá thấp nhất

"Close” giá đóng cửa

"Volume": khéi lượng giao dịch

Trang 4

đồ ¡ ngiáđóngcử & 6 ếuVCB, đườ

đường SMA(50) trong giai doa

Đầu tiên, ta cần cài đặt môi trường mà chủ yếu đây là Backtesting và nhập vào các

thuật toán cần thiết (Phong, 2022)

Backtesting là một quá trình kiêm nghiệm lại các quy tắc giao dịch của nhà đầu tư dựa trên dữ liệu quá khứ, tạo ra các mô phỏng giao dịch trong quá khứ

Bằng cách này, nhà đầu tư có thê đánh giá và kiêm tra xem liệu chiến lược đầu tư cua minh có thật sự hiệu quả hay không, dựa vào các kêt quả thông kê

Lợi ích của Backtesting:

> Hiéu chi tiét tat cả về chiến lược — Lợi ích phô biến nhất của việc hỗ trợ hệ

thông giao dịch là ban có thê xác định được những tiêm năng có được lợi nhuận

kỳ vọng của các chiên lược giao dịch mà các bạn đã lựa chọn trước đó

> Thur té — Bằng cách xem xét các biến động giá thị trường trong quá khứ và các

mô hình lặp lại, việc phản hôi ngược giúp các nhà dau tư phát hiện ra các cơ hội giao dịch tiêm năng và thúc đây kỹ năng phân tích kỹ thuật của nhà giao dịch

> Sự tựtin— Phản đối hệ thống giao dịch là một cách để xây dựng lòng tin, đặc

biệt là vì các nhà giao dịch đã tích lũy kinh nghiệm băng cách xem xét thông tin giá trước đó Bạn có được sự tự tin thực sự khi thực hiện bât kỳ hoạt động nào

> Sự kết hợp hoàn hảo của tất cả các yêu tô này cho phép các nhà đầu tư giảm thiêu được tôi đa những rủi ro có thê xảy ra và tôi đa hóa lợi nhuận.

Trang 5

Collecting backte: sting

Downloading packtesting 3.3.tar.gz (175 kB)

eparing metadata

collecting ta

Dow

175.5/175.5 kB 5.4 MB/s eta 6:00:00 (setup.py) «+ done

tisfied: numpy>=1.17.0 in fea ieee ieee 10/dist-packages (from backtesting) (1.23.5)

satisfied: pandas!=0.25.0,>=0.25.0 in /usr/local/lib/python3.10/dist-packages (from backtesting) (1.5.3)

satisfied: bokeh>=1.4.0 in ius ocal/ASb/pyten e/a packages (from backtesting) (3.2.2)

satisfied: 1inja2»«2.9 in /usr/local/1ib/python3.19/dist-packages (from bokeh»: ->backtesting) (3.1.2)

satisfied: contourpy>=1 in Tost /ocal/1ib/python3 10/dist-packages (from bokeh>=1.4.0->backtesting) (1.1.1)

satisfied: PyYAML»=3.10 in /usr/1ocal/1ib/python3.19/dist-packages (from bebelb~ 1,4.6->backtesting) (6.9.1)

satisfied: tornado>=5.1 in /usr/local/lib/python3.10/dist-packages (from Boteshond4.6- backtersing) (6.3 2)

patisfled: pythow dateutil>=2.8-1 In Jusr/local/1ib/python3.10/dist-packages (from pandas! ~ 23 6,2~0,25.0 hacktesting) (2.8.2)

satisfied: pytz>-2020.1 in fuer / lock) fistahens 10/dist-packages (from pandas!-0.25.0,>=0.25.0->backtesting) (2023.3 -postt)

satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from Jinja2 -3)

satisfied: sbo~l.s in /usr/1oca1/1ib/python3.16/đist-packages (fron python-dateutil>-2.8.1-»pandas!~0.25.0,>-0.25.0 18ecktesting) (2.16.9)

ollected packages: backtesti ông,

Building wheel for becktesting (setup.py) « don

ee fits nane=t a-0.10 -3-py2-none-any whl siz8=29261

successfully bullt tocitetirg tạ

Installing collected packages: ta, backtesting

Successfully installed backtesting-0.3.3 ta-0.10.3

[2] import matplotlib.pyplot as plt

p

import nunpy 25-9

import pd

from backtesting import == strategy

from ta.trend import sma_indic

/use/local/1ib/python3 10/dist

xa ackages/backtesting/ plotting.py:50: Userwarning: Jupyter Notebook detected Setting Bokeh output to notebook This may not work in Jupyter clients wit

rnings.warn("Jupyter Notebook detec

Tiếp theo, chúng ta nhập dữ liệu VCR Dữ liệu này được lấy từ ngày 03/01/2016

[ ] 4f['Trađingpate"] = pđ.to_đatetine(đf[ ' TradingDate'})

Tại cột “IradingDate” chưa được chuân hoá, nên ta chuyên đổi dữ liệu cột nay thanh kiéu ‘datetime’

Sau đó, ta sử dụng cột “IradingDate” làm khóa chính.

Trang 6

G index Open High Low Close Volume

Ngay giao dich

Figure 1 Đồ thị biểu điễn giá đóng cửa của cô phiếu VCB

Chiến thuật giao dịch theo chỉ báo Các chỉ báo (indicators) là công cụ phân tích

kỹ thuật được phát triên gần đây, nhờ vào sự phát triên của khoa học máy tính Bản chât của các chỉ báo là các hàm số toán học tích hợp vào phân mêm phân tích kỹ thuật đê vẽ

Trang 7

nên các biểu đồ kỹ thuật và được kiêm định hiệu quả đầu tư tốt Các chỉ báo này chia làm

hai nhóm: nhóm chỉ báo xu hướng và nhóm chỉ báo dao động

Nhóm chỉ báo xu hướng (trailing indicators) bao gồm các chỉ báo có tính chất nhận biết được xu hướng và sự thay đôi xu hướng của thị trường, nhưng phản ứng chậm với các biến động ngắn hạn của giá, ví du như đường MA, MACD, Bolinger Band, Nhóm chỉ báo dao động (momentum indicators) bao gồm các chỉ báo có tính chât nhận biệt ngay biên động của giá cá nhưng xác suật dự báo chính xác xu hướng của thị trường thâp, ví dụ như đường RSL, RỌC,

Đường trung bình động giản đơn (Simple Moving Average _ SMA)

Công dụng:

> Xu hướng của thị trường: Biểu đồ giá nằm trên đường trung bình di động cho thấy thị trường đang trong chiều hướng tăng giá Biểu đồ giá nằm dưới đường trung bình di động cho thấy thị trường đang trong xu hướng giảm

> xác định tín hiệu mua/bán: Mua khi đường giá cắt đường trung bình từ dưới lên Bán khi đường giá cắt đường trung bình từ trên xuống

> Kháng cự và hỗ trợ: Trong xu hướng tăng, đường trung bình đóng vai trò là một đường hỗ trợ Trong xu hướng giảm, đường trung bình đóng vai trò là một đường kháng cự

Kỳ hạn (n) của đường trung bình: Kỳ hạn của đường trung bình được nhà đầu tư chọn tùy thuộc vào kỳ hạn của xu hướng cân phân tích Nếu cân phân tích xu hướng rất ngắn thì chọn 5 13 ngày, ngắn chọn l4 25 ngày, trung hạn yếu chọn 26

trung hạn chọn 50 100 ngày, dài hạn chọ 200 ngày Các nhà đầu tư nên xu dụng

kết hợp nhiều đường trung bình với các kỳ hạn khác nhau đề xác định xu hướng chính

xác hơn: (¡) thị trường tăng, khi các đường trung bình ngắn lần lượt nằm lên trên đường

Trang 8

trung bình đài; (ii) thị trường giảm, khi các đường trung bình ngắn lần lượt nằm dưới đường trung bình dải

[ ] df['SMA 29'] = sma indicator(close = df['Close'], window = 20)

© # Vé dd thi duong sma 20

df['SMA 20'] = sma_indicator(close=df['Close'], window=2@)

Trang 9

df['SMA 59°] = sma_indicator(close=df[ 'Close' ], window=59)

Trang 10

#Vẽ biểu đồ giữa giá Close, SMA 20, SMA 5Ø

© plt.plot(df[‘Close'], label = ‘Close')

plt.plot(df[ "SMA 20'], label = ‘SMA 20°)

plt.plot(df['SMA 50°], label = ‘SMA 50')

plt.title('Đồ thị biểu diễn giá đóng của cổ phiếu VCB')

plt.xlabel (‘Nam’)

plt.ylabel('Gia(VND)")

plt.legend()

[3 <matplotlib legend.Legend at 0x7a24395ab850>

Đồ thị biểu diễn giá đóng của cổ phiếu VCB

SMA 50 va SMA 20 được tính bang cach lay tong gia đóng cửa của các phiên (rong

30 và 20 phiên liên tiếp, sau đó chia cho sô lượng phiên đó đê tính ra giá trung bình

Do đó, các SMA này có biên độ giao động khác nhau SMA 50 sẽ có biên độ động nhỏ hơn so với SMA 20 và SMA giá đóng cửa

Các biên độ giao động này thê hiện mức độ dao động giá của tài sản trong một khoảng thời gian nhất định Khi biên độ giao động nhỏ, có thê cho thấy xu hướng của tài sản đang ôn định hơn, giúp người đầu tư đánh giá được mức độ rủi ro khi đầu tư vào tài sản đó Ngược lại, khi biên độ giao động lớn, có thé cho thay sự biến động của tài sản dang tăng cao, làm tăng mức độ rủi ro và khó khăn trong việc đánh giá xu hướng của tài sản

ra, sự khác nhau giữa các biên độ giao động còn cho thấy mức độ độc lập của SMA đó với sự biên động ngắn han của tài sản SMA 50 có xu hướng chậm hơn

Trang 11

trong việc đáp ứng với sự biến động ngắn hạn, trong khi SMA 20 và SMA giá đóng cửa

có xu hướng nhanh hơn Điều này cho phép người đầu tư chọn phù hợp với nhu cầu đầu

tư của mình và sử dụng các SMA khác nhau đề đánh giá xu hướng của tài sản theo thời gian và mục đích đầu tư khác nhau

Đường SMA có tính chất là tín hiệu trễ Tức là đường giá tạo đỉnh rồi, đường SMAO0) sau đó mới tạo đỉnh Đường SMA(50) tạo đỉnh trễ hơn nữa Tương tự đường giá bật lên rồi, đường SMA(20) bật lên sau, và đường SMA(50) bật lên muộn hơn nữa Đường SMA càng dài hạn hơn thì tín hiệu cảng trễ hơn và càng ít bám đường giá hơn.

Trang 12

ự ề a i wa trên đườ šä ạn) và đườ

ạ ụ , khi đườ 4 a a wduwoilén dud

a éu "Mua" Trong khi, duo šă ạ ä ửừ ông đườ

# Tạo cột Position đế ưu kết quả quyết định mua bán của chiến lược q, lịch chiến thuật giao dịch dya trên đường S44(ngắn hạn) và đường SMA(dài hạn) (qua: 1, bán: -1)

['SMA 50'].shift(1)), 'position'] = 1

ng khoán đang tăng

ry using loc[row_indexer,col indexer] = value instead

Trang 13

index Open High Low Close volume SMA 20 SMA 5@ position TradingDate

2016-03-18 49 19260 19350 19080 19220 3546350 18865.0 18641.60 NaN 2016-03-21 50 19580 19850 19350 19400 1862820 ‘18921.5 18639.00 NaN 2016-03-22 51 19440 19580 19350 19580 592130 18973.5 18646.20 NaN

2016-03-23 52 19580 19580 19350 19400 645700 18987.0 18645.40 NaN

2016-03-24 53 19400 19440 18990 19040 825250 18994.0 18641.80 NaN

2021-04-05 1311 65580 67420 64660 66890 3592400 62992.0 63881.98 NaN

2021-04-06 1312 66890 67220 65910 66830 2243200 63218.5 63919.98 NaN 2021-04-07 1313 66240 66890 65840 66830 1182700 63428.5 63956.80 NaN 2021-04-08 1314 66830 66830 65250 65580 1575400 63549.5 63917.40 NaN 2021-04-09 1315 65250 65250 63940 63940 2101700 63605.0 63845.20 NaN

1267 rows x 9 columns

Chúng ta mô tả chiến thuật dựa trên đường SMA ngắn hạn và dài hạn

—_ Nếu quyết đỉnh mua (self.data.position = L) thì mua 100 cô phiếu

—_ Nếu quyết định bán (self data.position = -1) thi bán tất cả cô phiếu đang có Sau đó, chúng ta sẽ thử kiểm tra chiến lược trên với một số thông tin sau:

— Số tiên đầu tư: 100.000.000 vnd

— Phí giao dịch: 0%.

Trang 14

#Nếu quyết đỉnh mua (self.data.position == 1) thì mua 199 cổ phiếu

#Nếu quyết định bán (self.data.position == -1) thì bán tất cả cổ phiếu đang có

Trang 15

#Max Drawdown [%]: giúp ta ước tính khoản lỗ tối đa

#Max Drawdown Duration

stats.to_frame ()

Trang 16

Max Drawdown Duration 8

‘Avg Drawdown Duration 67

Max Trade Duration

‘Avg Trade Duration

Profit Factor

- Return [%]: Tỷ suất lợi nhuận, đây là con số quan trọng để đánh giá hiệu suất đầu tư

- Volatility (Amn.) [%]: Độ biến động hàng năm, đây là một chỉ số đo lường mức độ rủi ro của một khoản đầu tư

- Sharpe Ratio: Tý lệ Sharpe, đây là một chỉ số đo lường hiệu suất tương đôi của một khoản đầu tư so với rủi ro

- Max Drawdown [%]: Khoan lỗ tối đa, đây là con số giúp ước tính mức lỗ tối đa mà một khoản đầu tư có thê chịu đựng

- Max Drawdown Duration: Thời gian kéo dài của khoản lỗ tối đa, đây là thông tin quan trọng để hiệu về khả năng phục hồi của một khoản đầu tư sau khi gặp phải mức lỗ tối đa.

Trang 17

Xây dựng chiến thuật giao dịch với ví dụ: đường EMA ngắn hạn 20 ngày, đường EMA dai han 50 ngày

Đường EMA (Exponential Moving Average — duéng trung binh dong gian don)(TraderForex, TraderForex, 2022)

EMA = Price, x K+ SMA, x (1 —k)

where:

( Foday

2

Number of days in period + 1

SM = Simple Moving Average of closing price

for the number of days in the period

: Yesterday

Khái niệm: tên goi day du 1a Exponential Moving Average — céng cy chi bao phan ánh sự biến động của giá được tính toán theo cấp số nhân, hay còn gọi là đường trung bình động hàm mũ

Đặc điểm:

> Cung câp dữ liệu mới nhât và nhanh nhât về sự biên động giả so với các chỉ

> Không bị thay đối dù cho loại bỏ hoặc thay đổi các số liệu cũ, tin tức lại cập nhật nhanh hơn Nhưng vì cập nhật giá quá nhanh EMA lại không thể kiêm soát được mức giá biến dong a ảo nên dễ xảy ra các trường hợp sai số Thông thường sự sai số này bắt nguồn từ việc đảo chiều nhanh chóng của các tín hiệu giao dich

> Nếu lựa chọn khung thời gian dài hơn thì EMA có khả năng quan sát kỹ hon sẽ it bị sai sô nhưng không thể kiểm soát được các điểm đối chiều

> Nếu lựa chọn khung thời gian ngắn thì EMA có thê sớm bắt theo xu hướng nhưng lại dễ mắc bẩy bởi các tín hiệu sai lệch

Công dụng:

> Hỗ trợ các nhà đầu tư xác định được xu hướng thị trường

> Giúp các nhà đầu tư xác định điểm vào lệnh cho chính xác

> Giúp xác định hỗ trợ kháng cự

Trang 18

Tao cét ‘Position’ để lưu kết quả quyết định mua bán của chiến lược giao dịch chiên thuật giao dịch dựa trên đường EMA(ngăn hạn) và đường EMA(dài hạn) (mua: I, ban: -1)

[56] from ta.trend import ema indicator

© éfl'2% 20°] - ema_indicator(close-df[ 'close’], window -20)

df["EMA 50°] = ema_indicator(close=df[ 'Close'], window =50)

(58) đf[*position"] = Mone

[59] df.head(201)

index Open High Low Close Volune SMA S@ SMA 20 position EMA 20 ease ER

2016-01-04 © 19720 19900 19260 19590 761750 NaN NaN None NaN NaN

2016-01-05 1 18400 19620 19170 19220 1133200 NaN NaN Nom NaN NaN

GeneralStrategy,#chiến lược giao địch

cash = 100090,#số tiên ban đầu

Trang 19

Max Drawdown Duration

‘Avg Drawdown Duration 5

Max Trade Duration

Avg Trade Duration

loại bỏ những tín hiệu giả không liên quan | xác các biên động thay đôi

Cập nhật các biến động giá chậm nên

Nhược điêm | khiên các nhà dau tư bỏ lỡ cơ hội cập nhật Kẻ TK „

C ĐIA CA TA Dé mac bay va cho tin tin hiéu vao lénh » tan

hiéu sai léch

Đường EMA và đường SMA đều có những ưu điểm và nhược điểm riêng, do đó

không thê khăng định đâu là công cụ hiệu quả hơn Hiệu quả nhất chính là cách mà các nhà đầu tư kết hợp loại chỉ báo phù hợp với chiến lược giao dịch của mình Nếu đầu tư

ngắn hạn EMA là công cụ phù hợp, nêu xác định đầu tư dài hạn hay chon SMA.

Trang 20

Xây dựng chiến thuật dựa trên thuật toán của môn học Machine Learning (Học ,

may)

[65] df["target’] = df[ ‘position’ }.shift(-1)

[66] đf[(đf['position'].notnu11()) |(đf{ 'target` ].notnu11())}

index open High Low Close volume SMA SO SMA 20 position ea 20 EPA 50 target

[69] from sklearn.ensemble import RandowforestClassifier

© <if = RandomForestclassifier(max_depth = 2, random_state = 6)

clf.fit(x train, y_train)

Generalstrategy,®chiến lược giao dịch

ca số tiền ban đầu

commission = 6.002,#phi giao dich

trade_on_close = True,

exclusive orders = True)

stats = bt.run()

© stats.to_frane() + wc<H@QIU §

Trang 21

Max Trade Duration 2411 ce

Avg Trade Duration 1227 days 0O 00 04

Profit Factor NaN

Chỉ số RSI (Relative Strength Index) - Chỉ số sức mạnh tương đối (Finhay, 2023)

RSI = 100 - [ 1 — bìn! ]

Khái niệm: là chỉ báo giúp đo lường mức độ thay đối giá gần Từ đó đánh giá các điều kiện mua vượt mức hoặc bán vượt mức của giá cô phiêu hoặc tài sản khác

Chí số này dùng trong phân tích kỹ thuật, được biểu diễn dưới dạng đồ thị mà trong

đó có một đường đi chuyên giữa hai điệm cực trị (còn được gọi là bộ giao động), giá trị của nó từ 0 đên 100

Nội dung của RSI cụ thê:

> Wilder gia định ngưỡng quá mua xuất hiện khi thị trường tăng điểm trong một thời gian quá dài và ngưỡng quá bán xảy ra khi thị trường giảm điểm trong thời gian dải

> RSI la cac giá trị từ 70 trở lên cho thấy mã chứng khoán đó đang trở nên mua quá mức hoặc định giá quá cao, điều này ưu tiên cho xu hướng đảo ngược, điều chính giảm giá ngay sau đó

> RSI la cac giá trị từ 30 trở xuống cho thấy tình trạng mã chứng khoán đang

bị tình trạng bán quá mức hoặc bị định giá quá thấp

> RSI & mức từ 30 đến 70 là vùng trung bình, đạt mức 50 là dấu hiệu không có

xu hướng.

Trang 22

> Chỉ số RSI đo lường sức mạnh tương đối của giá chứng khoán với các mức giá trong lịch sử của chính mã chứng khoán đó Bạn không thể sử dụng chỉ

số RSI đề so sánh các mã chứng khoán với nhau

> RSI cung cấp cho các nhà giao dịch kỹ thuật trên thị trường những tín hiệu

về động lượng giá tăng và động lượng giá giảm Chỉ số này được trình bày ở

bên dưới biểu đồ giá của một mã chứng khoán cụ thể

Ý nghĩa của đường RSI

> Dựa vào chỉ số RSI, nhà đầu tư dễ dàng phát hiện tình trạng mua quá nhiều hoặc bán quá nhiều trên thị trường Nếu RSI nằm dưới mức 30, giá tài sản đang gần chạm đáy, RSI nằm trên mức 70, giá tài sản đang gần mức đinh, nguy co sẽ giảm

> Thông qua RSI, nhà đầu tư tập trung vào các tín hiệu và kỹ thuật giao dịch phủ hợp với xu hướng chứng khoán Trong xu hướng giảm, RSI hiểm khi vượt qua mức 70, chỉ số này thường xuyên chạm mức 30 hoặc thấp hơn Với

xu hướng tăng, RST duy trì trên 30 và thường xuyên chạm ngưỡng 70.

Trang 23

©) “nhập các thuật toán cần thiết

imgort nưngy as np

import matplotlib.pyplot as plt

import yFinance as yf

from scipy.signal import argrelextrena

from collections import deque

4Hhập dữ liệu và về biểu đồ giá đồng cửa

Nhập dữ liệu và vẽ biêu đồ giá đóng cửa

Price Chart for VCB

Trang 24

Biểu đồ thể hiện điểm đính và đáy theo giá đóng cửa

#0iểu đồ thế hiện điềm đỉnh và đấy theo giá đóng cửa

đata[ 'local_ max'] = đata[ 'Closé ][

(data[ "Close" ].shift(1) < đata["Closé]}) &

(data[ ‘Close’ ].shift(-1) < data[ ‘Close’ ))]

data[ ‘local_nin’] - data['close’

(data["Closé].shäft(1) > data["Closé]) &

(data[ ‘Close ].shift(-1) > data[ ‘close’ ])]

colors = plt.rcParans[' axes.prop_cycle" ].by_key()[ color" ]

plt.Figure(figsizeă1s, 8))

plt.plot(đata["Close"], zorder=)

plt.scatter(datạindex, datắlocal_wax'], s=199,

ker="^', c=colors[1])

plt.scatter(datạinđex, data{ 'local min"], s«100,

labeì~*Hinima"„ arker='v', c=colors[2])

Figure 6 Biéu dé thé hién điểm đỉnh và đáy theo giá đóng cửa

© Ha he: chỉ báo nội tụ/phan kỹ

B 120000 +

#Biểu đồ thể hiện gia cực tiểu và cực đại dựa trên giả đồng cửa

max 1dx = argrelextremădata[ 'Closé ].values, np.greater, order=5)[@]

min idx = argrelextremădata[ 'Closé].values, np.less, order=5)[9]

plt.figure(figsize=(15, 8))

plt.p1ot(data[ 'Close"], zorder=8)

plt.scatter(datại1oc[max_idx].index, datạiloc[max_idx][ "Close" ],

label='Maximá, s=19Ø, color=colors[1], marker='^")

plt.scatter(datạiloc{min_idx].index, datạiloc[min_1dx][ 'Closé ]„

label='Minimá, s=19@, color=colors{2], marker='v')

plt.legend()

plt show()

Ngày đăng: 06/12/2024, 16:24

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w