An dt
Thành viên mới
- Tham gia
- 28/11/21
- Bài viết
- 3
- Được thích
- 0
Chào mọi người,
Em không chuyên về VBA nên có gì sai sót mong mọi người chỉ bảo tường tận chút ít ạ.
Trước tiên em xin giải thích qua về bài tập hy vọng có thể giúp mọi người hình dung dễ hơn: em cần viết code cho cho Binary Option, nghĩa là giả dụ giá tiền ngày hôm nay (ngày 0) là 100, thì ngày mai (ngày 1) sẽ có hai trường hợp xảy ra:
- trường hợp up: giá tiền tăng 10%
- trường hợp down: giá tiền giảm 10%
Như vậy ngày 1, từ 100 sẽ ra hai trường hợp 110 và 90.
Tiếp tục ngày 2, từ 110 lại có hai trường hợp như trên, và từ 90 cũng có hai trường hợp như trên
Cứ tiếp tục như vậy đến ngày n.
Em cần viết code vba tạo bảng thể hiện những trường hợp trên.
Sau khi suy nghĩ thì em có mường tượng code của em sẽ như thế này:
Chạy thử thì nó không báo lỗi nhưng cũng không ra kết quả gì.
Em đoán không thể nhân ma trận bằng "*", em đã thử dùng application.worksheetfunction.mmult nhưng theo em được biết nó để nhân hai ma trận thôi nên cũng không thành công.
Nhờ mọi người giúp đỡ xem nên sửa thế nào hoặc có cách nào khác để lập bảng không ạ. Em xin cảm ơn trước.
Em không chuyên về VBA nên có gì sai sót mong mọi người chỉ bảo tường tận chút ít ạ.
Trước tiên em xin giải thích qua về bài tập hy vọng có thể giúp mọi người hình dung dễ hơn: em cần viết code cho cho Binary Option, nghĩa là giả dụ giá tiền ngày hôm nay (ngày 0) là 100, thì ngày mai (ngày 1) sẽ có hai trường hợp xảy ra:
- trường hợp up: giá tiền tăng 10%
- trường hợp down: giá tiền giảm 10%
Như vậy ngày 1, từ 100 sẽ ra hai trường hợp 110 và 90.
Tiếp tục ngày 2, từ 110 lại có hai trường hợp như trên, và từ 90 cũng có hai trường hợp như trên
Cứ tiếp tục như vậy đến ngày n.
Em cần viết code vba tạo bảng thể hiện những trường hợp trên.
Sau khi suy nghĩ thì em có mường tượng code của em sẽ như thế này:
n = 10
u = 0.1
d = 0.1
Dim table(1 To 10, 1 To 10) As Double
Dim i, j As Integer
For i = 1 To 10
For j = 1 To 10
table(i, j) = table(i, j) * ((1 + u) ^ j) * (((1 - d) / (1 + u)) ^ i) 'vì trên cùng 1 dòng, cột sau hơn cột trước u=10%, và trên cùng 1 cột, dòng dưới kém dòng trên (0.9/1.1) %
If i > j Then
table(i, j) = 0 'vì tính toán thông thường sẽ thấy nửa bảng dưới hoàn toàn trống
End If
Next j
Next i
Chạy thử thì nó không báo lỗi nhưng cũng không ra kết quả gì.
Em đoán không thể nhân ma trận bằng "*", em đã thử dùng application.worksheetfunction.mmult nhưng theo em được biết nó để nhân hai ma trận thôi nên cũng không thành công.
Nhờ mọi người giúp đỡ xem nên sửa thế nào hoặc có cách nào khác để lập bảng không ạ. Em xin cảm ơn trước.