Chiến lược giao dịch Fibonacci Retracement trong Python

Các công cụ giao dịch Fibonacci được sử dụng để xác định mức hỗ trợ / kháng cự hoặc xác định các mục tiêu giá. Sự hiện diện của chuỗi Fibonacci đã thu hút sự chú ý của các nhà phân tích kỹ thuật khi sử dụng Fibonacci cho giao dịch.

Chuỗi Fibonacci

Chuỗi Fibonacci là một chuỗi các số, bắt đầu bằng số không và một, trong đó mỗi số là tổng của hai số trước đó.

Fibonacci Sequence nos

Chuỗi Fibonacci là 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610 ……
được mở rộng đến vô cùng và có thể được tóm tắt bằng cách sử dụng công thức dưới đây:

n = X n-1 + X n-2

Một số thông tin thú vị về dãy Fibonacci là gì?

Có một số thuộc tính thú vị của dãy Fibonacci. Chia bất kỳ số nào trong chuỗi theo số trước đó; tỷ lệ luôn là khoảng 1.618 .

X n / X n-1 = 1,618
55/34 = 1,618
89/55 = 1,618
144/89 = 1,618

1,618 được gọi là tỷ lệ vàng.

Tương tự, chia bất kỳ số nào trong chuỗi theo số tiếp theo; tỷ lệ luôn xấp xỉ 0,618.

X n / X n + 1 = 0,618
34/55 = 0,618
55/89 = 0,618
89/144 = 0,618

0,618 được thể hiện bằng tỷ lệ phần trăm là 61,8%.
Căn bậc hai của 0.618 là 0.786 (78.6%).

Tính nhất quán tương tự được tìm thấy khi bất kỳ số nào trong chuỗi được chia cho sau đó hai vị trí.

X n / X n + 2 = 0,382
13/34 = 0,382
21/55 = 0,382
34/89 = 0,382

0,382 được biểu thị bằng phần trăm là 38,2%

Ngoài ra, có sự nhất quán khi bất kỳ số nào trong dãy được chia cho một số ở vị trí thứ ba bên phải.

X n / X n + 3 = 0,236
21/89 = 0,236
34/144 = 0,236
55/233 = 0,236

0,236 được biểu thị theo tỷ lệ phần trăm là 23,6%.

Tỷ lệ 23,6%, 38,2%, 61,8% và 78,6% được gọi là tỷ lệ Fibonacci.

Chiến lược giao dịch với Fibonacci retracement

Các tỷ lệ Fibonacci, 23,6%, 38,2% và 61,8%, có thể được áp dụng cho phân tích chuỗi thời gian để tìm mức hỗ trợ. Bất cứ khi nào giá di chuyển lên hoặc xuống một cách đáng kể, nó thường có xu hướng pulback trở lại trước khi nó tiếp tục di chuyển theo hướng ban đầu. Ví dụ: nếu giá cổ phiếu đã tăng từ 200 đô la đến 250 đô la, thì có khả năng nó sẽ quay trở lại mức 230 đô la trước khi nó tiếp tục tăng lên. Mức thoái lui $ 230 được dự báo bằng cách sử dụng các tỷ lệ Fibonacci.

Chúng tôi có thể tính ra mứ 230 đô la bằng cách sử dụng toán học đơn giản
Trênh lệch = $ 250 – $ 200 = $ 50
38,2% của sự trênh lệch = 38,2% * 50 = $ 19,1
Dự báo giảm về mức = $ 250 – $ 19,1 = $ 230,9

Bất kỳ mức giá nào dưới $ 230 cung cấp một cơ hội tốt cho để tham gia mua vào các vị thế mới theo hướng của xu hướng. Tương tự, chúng tôi có thể tính toán 23,6%, 61,8% và các tỷ lệ Fibonacci khác.

Làm thế nào để tìm mức Fibonacci Retracement?

Như chúng ta đã biết, sự hồi phục là những biến động giá đi ngược lại xu hướng ban đầu. Để đánh dấu di chuyển, chúng tôi cần chọn mức cao nhất và thấp nhất trên biểu đồ.

Lấy một ví dụ về Exxon Mobil để hiểu cấu trúc Fibonacci retracement

# Để nhập giá cổ phiếu
từ dữ liệu nhập pandas_datareader dưới dạng pdr
# Dánh dấu
nhập khẩu matplotlib.pyplot như plt
df = pdr.get_data_google ('XOM', '2017-08-01', '2017-12-31')
fig, ax = plt.subplots ()
ax.plot (df.Close, color = 'black')

Tìm mức Fibonacci Retracement

Như ta đã thấy từ biểu đồ, giá có sự chuyển dịch tăng đáng kể trong giá từ tháng 9/2017 đến cuối tháng 10 năm 2017. Trong trường hợp này, giá tối thiểu là 76 đô la và giá tối đa là 84 đô la. 8 đô la là tổng số di chuyển.

price_min = 76 # df.Close.min ()
price_max = 84 # df.Close.max ()

Mức thoái lui cho tỷ lệ Fibonacci 23,6%, 38,2% và 61,8% được tính như sau:

# Fibonacci Levels xem xét xu hướng ban đầu khi di chuyển lên trên
diff = price_max - price_min
level1 = price_max - 0.236 * khác
level2 = price_max - 0.382 * khác
level3 = price_max - 0.618 * khác

in "Cấp", "Giá"
in "0", price_max
in "0.236", cấp 1
in "0,382", mức 2
in "0,618", mức 3
in "1", price_min

ax.axhspan (level1, price_min, alpha = 0.4, color = 'lightsalmon')
ax.axhspan (level2, level1, alpha = 0,5, color = 'palegoldenrod')
ax.axhspan (level3, level2, alpha = 0.5, color = 'palegreen')
ax.axhspan (price_max, level3, alpha = 0.5, color = 'powderblue')

plt.ylabel ("Giá")
plt.xlabel ("Ngày")
plt.legend (loc = 2)
plt.show ()

Đầu ra:Đầu ra

Tìm biểu đồ mức Fibonacci Retracement

Mức thoái lui đầu tiên ở mức 23,6% là 82,10 đô la, mức thoái lui thứ hai ở mức 38,6% là 80,90 đô la và mức thoái lui tiếp theo là 61,8% là 79,05 đô la. Vào giữa tháng 11, giá cổ phiếu Exxon Mobil đã giảm xuống còn 80,40 USD, (giảm xuống dưới ngưỡng thoái lui 38,6%) và sau đó tiếp tục xu hướng tăng.

Làm thế nào để sử dụng chiến lược giao dịch Fibonacci retracement?

Các mức thoái lui có thể được sử dụng trong một tình huống mà bạn muốn mua một cổ phiếu cụ thể nhưng bạn đã không thể mua vì sự tăng giá mạnh của cổ phiếu. Trong tình huống như vậy, hãy đợi giá điều chỉnh về các mức thoái lui Fibonacci như 23,6%, 38,2% và 61,8% và sau đó mua cổ phiếu. Tỷ lệ 38,2% và 61,8% là mức hỗ trợ quan trọng nhất.

Chiến lược giao dịch Fibonacci retracement này hiệu quả hơn trong một khoảng thời gian dài hơn và giống như bất kỳ chỉ số nào, sử dụng chiến lược với các chỉ báo kỹ thuật khác như RSI, MACD và các mẫu nến có thể cải thiện xác suất thành công.

Chúc may mắn với giao dịch Fibonacci 🙂


Code hiển thị với dữ liệu giao dịch phái sinh Vn30F1m ngày 02/10/2018

 
# IMPORTING IMPORTANT LIBRARIES
import csv
import pandas as pd
# To plot
import matplotlib.pyplot as plt

dataset = pd.read_csv('vn30f1m_1.csv', usecols=[1,2])
OHLC_avg = dataset.mean(axis = 1)
HLC_avg = dataset[['3']].mean(axis = 1)
close_val = dataset[['3']]
# Draw
fig, ax = plt.subplots()
ax.plot(close_val, color='black')

price_min = close_val.min()
price_max = close_val.max()

# Fibonacci Levels considering original trend as upward move
diff = price_max - price_min
level1 = price_max - 0.236 * diff
level2 = price_max - 0.382 * diff
level3 = price_max - 0.618 * diff

print ("Level", "Price")
print ("0 ", price_max)
print ("0.236", level1)
print ("0.382", level2)
print ("0.618", level3)
print ("1 ", price_min)

ax.axhspan(level1, price_min, alpha=0.4, color='lightsalmon')
ax.axhspan(level2, level1, alpha=0.5, color='palegoldenrod')
ax.axhspan(level3, level2, alpha=0.5, color='palegreen')
ax.axhspan(price_max, level3, alpha=0.5, color='powderblue')

plt.ylabel("Price")
plt.xlabel("Date")
plt.legend(loc=2)
plt.show()

Kết quả

Tải file CSV dữ liệu giao dịch trong ngày 02/10/2018 vn30f1m_1 - Tại đây

Nguồn: https://www.quantinsti.com/blog/fibonacci-retracement-trading-strategy-python/

Amibroker – SCAN VÀ EXPLORATION

Một trong những tính năng mạnh nhất của Amibroker là khả năng quét (screen) hàng trăm cổ phiếu trong thời gian thực (real-time) và theo dõi tín hiệu giao dịch tương ứng. Việc quét này được thực hiện bởi chức năng “Scan” và “Exploration”.

Điểm khác biệt quan trọng nhất giữa Scan và Exploration là việc Exploration cho phép người dùng tùy chỉnh các output được hiện ra trong cửa sổ Analysis, trong khi Scan chỉ thực việc công việc tìm kiếm các tín hiệu buy/sell/short/cover và hiển thị chúng bằng các cột được định dạng từ trước.

Giả sử tôi mô phỏng 1 trading strategy dựa vào tin hiệu của MACD và Signal Line như đoạn code bên dưới:

1
2
Buy = Cross(MACD(), Signal());
Sell = Cross(Signal(), MACD());

sau  khi paste code vào formula rồi send to automatic analysis, tôi click scan và được kết quả như hình bên dưới:

11.png

Về cơ bản, chức năng của Scan chỉ có vậy. Amibroker sẽ quét tìm trong database lần lượt từng ngày các mã cổ phiếu thỏa mãn trading rule (buy/sell) mà người dùng input vào, mỗi khi các tín hiệu thỏa mãn, Amibroker sẽ trả về 1 row các giá trị bao gồm Symbol, Trade, Date và Close như hình phía bên trên.

Tiếp theo là chức năng exploration. Chức năng này mạnh hơn scan rất nhiều bởi người dùng có thể tự định nghĩa các giá trị trả về cho column, không còn giới hạn bởi 4 cột như scan.

Giả sử tôi muốn quét toàn bộ database của HOSE và HNX, sau đó trả về tên mã cổ phiếu (Symbol), Ngày (Date), Giá đóng cửa (Close) và khối lượng (Volume), tôi sẽ viết đoạn code như sau:

1
2
3
4
Filter = 1;
AddColumn(DateTime(), "Date", formatDateTime);
AddColumn(Close, "Close", 1.2);
AddColumn(Volume, "Volume", 1);

Đầu tiên là dòng Filter = 1. Exploration trong Amibroker yêu cầu người dùng sử dụng hàm Filter khi sử dụng chức năng exploration, nếu trong code không có hàm Filter, exploration sẽ không chạy. Filter = 1 được dùng để quét toàn bộ các mã có trong cửa sổ apply to trong automatic analysis. Giả sử tôi để apply to: All quotes, amibroker sẽ quét toàn bộ các mã có trong database. Nếu chuyển thành apply to: watchlist0, amibroker sẽ quét toàn bộ các mã có trong watchlist0. Ngoài ra trong exploration, người dùng có thể chọn range tùy ý trên thanh công cụ, có thể là 1 recent-bar hoặc 1 khoảng nào đó (from … to …). Hàm AddColumn được dùng để tạo các cột trong output của Automatic Analysis, có thể check help index để xem chi tiết các parameters cần thiết để pass vào function. Lưu ý là khi dùng hàm exploration, mặc định sẽ có 2 cột là Ticker và Date/Time, người dùng không nhất thiết phải thêm vào.

2.png

Xong phần cơ bản, giờ tôi sẽ đào sâu thêm 1 chút về hàm Filter. Ở mặt code, giá trị để truyền vào hàm Filter sẽ có dạng boolean. Ở ví dụ trên, Filter = 1 tương đương Filter = True. Giờ giả sử tôi muốn lọc ra các cổ phiếu có khối lượng giao dịch lớn hơn 10000 trong phiên gần nhất, tôi sẽ đặt Filter = Volume > 10000, Hàm Filter sẽ trả về các ticker trong danh sách apply to thỏa mãn điều kiện trên, sau đó các hàm phía dưới Filter sẽ thực hiện dựa trên list trả về bởi hàm filter. Giả sử tôi có mã KDC, VGC và AAM trong watchlist. Hàm Filter phía trên sẽ lọc từ watchlist ra 2 mã thỏa mãn là KDC và VGC, sau đó các hàm Addcolumn phía bên dưới sẽ thực hiện nhiệm vụ dựa trên 2 mã này, mã AAM bị loại bỏ. Thử đoạn code bên dưới với apply to: All symbols và range : 1 recent-bar

1
2
3
4
Filter = Volume > 10000;
AddColumn(DateTime(), "Date", formatDateTime);
AddColumn(Close, "Close", 1.2);
AddColumn(Volume, "Volume", 1);

3

Amibroker cũng hỗ trợ thêm màu sắc vào trong các cột cũng như thêm các cột có giá trị String (không phải số hay ngày tháng). Đoạn code bên dưới sẽ minh họa ý tương này,

 

1
2
3
4
5
6
7
8
9
10
11
12
13
Filter = Volume > 10000;
CloseCond1 = Close > Ref(Close, -1);
CloseStatus1 = WriteIf(CloseCond1, "Close Bullish", "Close Bearish");
CloseColor1 = IIf(CloseCond1, colorGreen, colorRed);
AddColumn(Close, "Close", 1.2,colorWhite,CloseColor1);
AddTextColumn(CloseStatus1, "Close Status", 1, colorWhite, CloseColor1);
VolumeCond1 = Volume > Ref(Volume, -1);
VolumeStatus1 = WriteIf(VolumeCond1, "Volume Bullish", "Volume Bearish");
VolumeColor1 = IIf(VolumeCond1, colorGreen, colorRed);
AddColumn(Volume, "Volume", 1, colorWhite, VolumeColor1);
AddTextColumn(VolumeStatus1, "Close Status", 1, colorWhite, VolumeColor1);

Đoạn code này sẽ in ra các cột màu đỏ nếu Giá đóng cửa và khối lượng thấp hơn ngày hôm trước, màu xanh nếu ngược lại. Ngoài ra còn in thêm 2 cột có giá trị String tương ứng với Close và Volume.

4

Về mặt cơ bản, thế là hết cho scan và exploration. Giờ trader có thể tự thiết kế bộ lọc của riêng mình với các indicator cũng như các hàm khác nhau trong amibroker. Giả sử muốn lọc RSI > 70 và RSI < 30 chỉ cần type Filter = RSI > 70 or RSI < 30; hay muốn in ra các column thể hiện giá trị MA30 thì chỉ cần AddColumn(MA(30), “MA30”, 1.2); là xong. Ý tưởng thiết kế nội dung là của các bạn.

VGG – Tổng công ty may Việt Tiến – Cổ phiếu dưới định giá

Ngành dệt may được đánh giá là đang được hưởng lợi khá nhiều từ cuộc chiến tranh thương mại Mỹ – Trung.

Căng thẳng thương mại Mỹ – Trung đang lên cao, cũng là lúc các nền kinh tế đánh giá lại những tác động tích cực – hay tiêu cực đối với nền kinh tế nước mình, đặc biệt là đối với từng ngành hàng.

Xét về tổng thể, ngành dệt may đang được hưởng lợi khá lớn. Trên thực tế, công bố của Hiệp hội Dệt may Việt Nam cho thấy, nửa đầu năm 2018 ngành Dệt may tiếp tục duy trì tăng trưởng kim ngạch xuất khẩu cao với tổng mức đạt 16,5 tỷ USD, tăng 16,49% so với cùng kỳ năm ngoái và cao hơn tốc độ tăng 10,43% của cùng kỳ năm 2017.

Kết quả kinh doanh những doanh nghiệp dệt may đang giao dịch trên thị trường chứng khoán cũng cho thấy, đơn cử như May Việt Tiến (VGG) – một trong những doanh nghiệp đầu ngành dệt may Việt Nam – doanh thu 6 tháng đầu năm 2018 đạt 4.612 tỷ đồng, tăng 23% so với cùng kỳ và lợi nhuận sau thuế đạt 224 tỷ đồng, tăng 21% so với nửa đầu năm ngoái.

MBS nhận định giá cổ phiếu VGG của May Việt Tiến có thể lên đến 74.400 đồng/cổ phiếu - Ảnh 1.

Cũng theo đánh giá của Hiệp hội Dệt may Việt Nam, tốc độ tăng trưởng xuất khẩu cao trong 6 tháng đầu năm và những diễn biến thuận lợi từ cuộc chiến thương mại Mỹ Trung đến ngành dệt may, và theo tiến độ nhập khẩu nguyên phụ kiện những tháng cuối năm, thì ước tính 6 tháng cuối năm nay kim ngạch đạt 18,5 tỷ USD, nâng kim ngạch xuất khẩu cả năm đạt 35 tỷ USD.

MBS nhận định giá cổ phiếu VGG của May Việt Tiến có thể lên đến 74.400 đồng/cổ phiếu - Ảnh 2.

Cùng với kết quả kinh doanh tăng trưởng, các cổ phiếu ngành dệt may cũng đang “cất cánh” trên thị trường chứng khoán. TCM của Dệt may Đầu tư Thương Mại Thành Công tăng 14% so với đầu năm, đạt mức 30.300 đồng/cổ phiếu. Cổ phiếu GMC của Garmex tăng hơn gấp rưỡi, lên trên 35.000 đồng/cổ phiếu. VGT của Tập đoàn Dệt may Việt Nam tăng 25%, lên 13.400 đồng/cổ phiếu…

Theo đánh giá của MBS, trên thị trường, nếu xét về giá trị, cổ phiếu VGG của May Việt Tiến đang có mức giá khá cao so với doanh nghiệp cùng ngành, đạt 57.200 đồng/cổ phiếu, và cũng đạt mức tăng 9% so với thời điểm đầu năm.

MBS nhận định giá cổ phiếu VGG của May Việt Tiến có thể lên đến 74.400 đồng/cổ phiếu - Ảnh 3.

Diễn biến giá cổ phiếu VGG trong 1 năm gần đây.

Theo đánh giá của Công ty Chứng khoán MB (MBS), Việt Tiến là một trong những doanh nghiệp vẫn duy trì được vị thế của một doanh nghiệp hàng đầu trong ngành dệt may tại Việt Nam.

Với những thông tin tích cực trên, MBS điều chỉnh nhận định rằng giá cổ phiếu VGG có thể lên đến 74.400 đồng/cổ phiếu thay vì dự đoán khoảng 62.000 đồng/cổ phiếu như trước đó (giá mục tiêu trước 15/5/2018), và vẫn khuyến nghị MUA vào đối với cổ phiếu này. Mức giá mục tiêu hiện vẫn cao hơn 33% so với giá hiện tại.

MBS cũng kỳ vọng Việt Tiến sẽ kết thúc năm 2018 với chỉ số EPS đạt 10.333 đồng/cổ phiếu, tăng 20,5% so với năm 2017. P/E đạt 5,4 lần.

VPB – Cần phải vượt 27 để quay trở lại Trend tăng giá

Hôm nay 19/09/2018 là một ngày giao dịch rất tốt với VPB, cổ phiếu có mức tăng giá tốt, thanh khoản vượt trội gấp 2 lần trung bình giao dịch 5 ngày gần đây. Tuy nhiên VPB cần phải vượt giá 27 với khối lượng giao dịch mạnh ước chừng lớn hơn 10 triệu cổ phiếu để thoát khỏi kênh giảm giá dài hạn.

Chúng ta cùng chờ xem nhé.

Tuy nhiên trong ngắn hạn VPB sẽ chạy được từ giá 25 lên tới 27.

Cổ phiếu CVT – Công ty Cổ phần CMC (HOSE) – Break trend giảm trung hạn, kỳ vọng tăng trưởng 25%

  • CVT đã chính thức thoát kênh giảm giá được thiết lập kể từ đầu tháng 04/2018 sau phiên breakout ngày 27/08. Theo sóng Elliot, CVT đã hoàn thành xong sóng tăng (1) và sóng chỉnh (2) và bắt đầu bước vào sóng tăng (3) với vùng giá mục tiêu 30.000-31.000 đồng/CP.
  • Về ngắn hạn, CVT sẽ gặp cản Fibo 61.8% và đường MA100 ở ngưỡng 27.800 đồng, đây là vùng kháng cự tương đối mạnh của cổ phiếu. Đây là ngưỡng rất quan trọng, nếu vượt qua ngưỡng này thì kỳ vọng tăng giá trung hạn sẽ trở nên tích cực với sự hỗ trợ của thanh khoản đang tăng lên và giá mục tiêu có thể về vùng giá mục tiêu 33.000-34.000 đồng. Nếu CVT chưa thể vượt ngưỡng thành công thì khả năng cổ phiếu này có thể loái lui về hỗ trợ quanh 26.000-26.500 đồng tương ứng ngưỡng Fibonacci 50%.
  • Về trung hạn, CVT sẽ gặp kháng cự ở vùng quanh 30.000 – 31.000 đồng. Trường hợp thoái lui theo sóng (4) Elliot về mức 28.000 đồng có thể được tính đến trước khi CVT breakout thành công vùng kháng cự này và hoàn thành mục tiêu sóng (5)lên vùng giá 33.000 – 34.000 đồng tương ứng kháng cự Fibo 161.8%.
  • Với những tín hiệu tích cực về các chỉ báo kỹ thuật và các đường trung bình trong ngắn hạn, chúng tôi kỳ vọng CVT sẽ vượt ngưỡng 27.500-27.800 đồng thành công để xác nhận xu hướng tăng trung hạn.

Báo cáo phân tích kỹ thuật cổ phiếu CVT – Công ty Cổ phần CMC (HOSE)