Quán nhỏ của Ranluc: Relative Strength và nhiều hơn thế

Các code chỉ báo của bác ranluc đều hoạt động rất tốt, bạn nào ko chạy đc cứ kêu em quote lại code cho, khỏi làm mất thời gian của bác ranluc.
Chỉ có một chuyện là em cần thêm thời gian ngâm cứu mấy thông số chỉ báo, em vẫn chưa hiểu hết được :)Amibroker.jpg
 
Khác với chỉ báo của W.ONeil, lấy data trong thời gian 1 năm, dành cho nhà đầu tư dài hạn, chỉ số mình viết ở trên chỉ tính trong th gian có 1-2 nhịp điều chỉnh ngắn, điểm vào là lúc người chơi cho rằng đã kết thúc nhịp đc. Giá trị thông số RSCD là lấy mặc định của MACD 12,26, chưa back test. Giá trị chỉ báo dùng để so sánh các mã cp khác nhau, ví dụ tại ngày 31/7 giá trị RSCD của MWG là 3.x, giá trị RSCD của FPT là 1.x thì nghĩa là MWG mạnh hơn FPT trong nhịp tăng trước đó.
 
Các code chỉ báo của bác ranluc đều hoạt động rất tốt, bạn nào ko chạy đc cứ kêu em quote lại code cho, khỏi làm mất thời gian của bác ranluc.
Chỉ có một chuyện là em cần thêm thời gian ngâm cứu mấy thông số chỉ báo, em vẫn chưa hiểu hết được :)View attachment 5824
chào bạn, bạn cho mình xin code như hình vẽ với, mình vào làm không được, bạn có thể gửi qua mail mình với: khiem.tankimbao@gmail.com; cảm ơn bạn nhiều
 
Các code chỉ báo của bác ranluc đều hoạt động rất tốt, bạn nào ko chạy đc cứ kêu em quote lại code cho, khỏi làm mất thời gian của bác ranluc.
Chỉ có một chuyện là em cần thêm thời gian ngâm cứu mấy thông số chỉ báo, em vẫn chưa hiểu hết được :)View attachment 5824
Chào bạn, bạn gửi mình xin code RS với, mình chạy bị lỗi như thế này. Mình lấy dữ liệu từ Cafef hàng ngày, không biết là để sử dụng được RS này có cần phải import dữ liệu nào khác vào amibroker không, hay tự tạo dữ liệu riêng để chạy RS.
Mới tập tành, mong anh em chỉ giáo giúp. Cảm ơn rất nhiều.
 

Attachments

  • Loi RS.JPG
    Loi RS.JPG
    119.9 KB · Views: 21
Chào bạn, bạn gửi mình xin code RS với, mình chạy bị lỗi như thế này. Mình lấy dữ liệu từ Cafef hàng ngày, không biết là để sử dụng được RS này có cần phải import dữ liệu nào khác vào amibroker không, hay tự tạo dữ liệu riêng để chạy RS.
Mới tập tành, mong anh em chỉ giáo giúp. Cảm ơn rất nhiều.
Chỉ báo chỉ để vẽ chart thôi, không dùng ở AnalysisWindow.
Copy vào \AmiBroker\Formulas\Custom, rồi chạy Ami, vào Windows/Charts/Custom/, nhấn 2xclick vào file đó để gọi ra vẽ chart
 
chào bạn, bạn cho mình xin code như hình vẽ với, mình vào làm không được, bạn có thể gửi qua mail mình với: khiem.tankimbao@gmail.com; cảm ơn bạn nhiều
Chào bạn, bạn gửi mình xin code RS với, mình chạy bị lỗi như thế này. Mình lấy dữ liệu từ Cafef hàng ngày, không biết là để sử dụng được RS này có cần phải import dữ liệu nào khác vào amibroker không, hay tự tạo dữ liệu riêng để chạy RS.
Mới tập tành, mong anh em chỉ giáo giúp. Cảm ơn rất nhiều.
Em dùng dữ liệu của cophieu68 chỉ một loại đó. Bác dùng cái nào dùng một cái thôi chứ dùng nhiều lại phải chuyển qua chuyển lại giữa Database mất công lắm. CafeF em chưa dùng nên ko biết nó thế nào, trước em mua Datafeed của Vndirect nhưng sau thấy ko cần thiết nên em dùng của cophieu68, vừa free vừa chuẩn :D.
Bác vào menu Analysis/Formula Editor rồi paste mấy đoạn code của bác ranluc vào. Sau đó chọn Save as trong thư mục "C:\Program Files (x86)\AmiBroker\Formulas\Custom" (windows 64) với tên gì đó cho dễ nhớ thì tùy. Có hai cách đưa chỉ báo vào đồ thị: 1 là kéo thả, 2 là click phải chọn insert vào.
Các code của bác ranluc em quote lại đây:
- RS mặc định đã được chỉnh lại:
//RS modified by ranluc
_SECTION_BEGIN("RS");
base = ParamStr("Base", "^VN30"); //GetBaseIndex() );
Nth = Param("Nth", 1,1,5);
change = 2 ;
baseC = Foreign( base, "C" );
refBar = PeakBars(baseC, change, Nth);
relStr = RelStrength(base) *LastVisibleValue(Ref(baseC/C,-refBar))/10 - 100;
Plot( relStr, "RS("+base+")", colorOrange, styleLine|styleThick);
Plot( EMA(relStr, 50), "", colorBlue, styleLine );
_SECTION_END();
- RS+RSI
_SECTION_BEGIN("RSI");
SetChartOptions(0,0,chartGrid30|chartGrid70);
periods = Param( "Periods", 15, 1, 200, 1 );
Plot( RSI( periods), _DEFAULT_NAME(), ParamColor( "Color", colorCycle ), ParamStyle("Style") );

base = "VN30INDEX";
relStr = RelStrength(base);
Plot( RSIa(relStr,15), "", colorgreen, ParamStyle("Style") );
_SECTION_END();

_SECTION_BEGIN("EMA");
P = ParamField("Price field",-1);
Periods = Param("Periods", 15, 2, 300, 1, 10 );
Plot( EMA( P, Periods ), _DEFAULT_NAME(), ParamColor( "Color", colorCycle ), ParamStyle("Style") );
_SECTION_END();
- RSCD hay còn gọi là MoCD
//RSCD= RS + MACD by ranluc
_SECTION_BEGIN("RSCD");
r1 = Param( "Fast avg", 12, 2, 200, 1 );
r2 = Param( "Slow avg", 26, 2, 200, 1 );
r3 = Param( "Signal avg", 9, 2, 200, 1 );

base = ParamStr("Base", "^VN30");
relStr = RelStrength(base);

Plot(ml= EMA(relStr, r1) - EMA(relStr, r2), StrFormat(_SECTION_NAME()+"(%g,%g)", r1, r2), colorgreen, styleThick );
Plot( sl = EMA(ml,9), "Signal" + _PARAM_VALUES(), ParamColor("Signal color", colorBlue ), ParamStyle("Signal style") );
Plot(1.5*( ml-sl), "MACD Histogram", ParamColor("Histogram color", colorDefault ), styleNoTitle | ParamStyle("Histogram style", styleHistogram | styleNoLabel, maskHistogram ) );

_SECTION_END();
- Đường màu vàng VN30 cho pane trên
_SECTION_BEGIN("Index");
base = ParamStr("Index", "^VN30"); //VNIndex or VN30
Nth = Param("Nth", 1,1,5);
baseC = Foreign(base, "C");
refBar = PeakBars(baseC,2,Nth);
baseCn = LastvisibleValue(Ref(C/baseC,-refBar))*baseC;
Plot( baseCn , "", colorYellow, styleLine|styleNoLabel); //index
Title += " " + base + "=" + baseC+" ("+WriteVal(ROC(baseC, 1),1.1)+"%)";
_SECTION_END();

Muốn thay đổi VN30 sang VNINDEX thì click phải vào pane của chỉ báo chọn Parameters rồi thay ^vn30 bằng ^vnindex <== cái ký tự này phụ thuộc vào loại data thị trường mà bác đang dùng, ví dụ của cophieu68 hay datafeed của vndirect.
 

Attachments

  • Ami.jpg
    Ami.jpg
    385.5 KB · Views: 35
  • Ami.png
    Ami.png
    71.5 KB · Views: 29
Last edited:
Chỉ báo chỉ để vẽ chart thôi, không dùng ở AnalysisWindow.
Copy vào \AmiBroker\Formulas\Custom, rồi chạy Ami, vào Windows/Charts/Custom/, nhấn 2xclick vào file đó để gọi ra vẽ chart
Bác ranluc cho em hỏi bác có chơi chứng khoán Mỹ ko. Nếu có thì bác đang chơi ở sàn nào vậy ạ. Em muốn thử chứng khoán Mỹ mà ở vn có ông GKFXPrime nghe cộng đồng phản ánh thấy oải quá em ko dám vào. Cảm ơn bác nhiều nếu được bác chia sẻ ạ!
 
Bác ranluc cho em hỏi bác có chơi chứng khoán Mỹ ko. Nếu có thì bác đang chơi ở sàn nào vậy ạ. Em muốn thử chứng khoán Mỹ mà ở vn có ông GKFXPrime nghe cộng đồng phản ánh thấy oải quá em ko dám vào. Cảm ơn bác nhiều nếu được bác chia sẻ ạ!
không, minh chỉ chơi cơ sở VN và 1 ít phái sinh VN thôi.
 
không, minh chỉ chơi cơ sở VN và 1 ít phái sinh VN thôi.
Bác ranluc cho em hỏi chút, chỉ báo RSCD, bác có thể thêm code lọc cho chỉ báo này giúp em với điều kiện giá trị dương (phần phía trên trục 0.0)
cảm ơn bác nhiều
 
Bác ranluc cho em hỏi chút, chỉ báo RSCD, bác có thể thêm code lọc cho chỉ báo này giúp em với điều kiện giá trị dương (phần phía trên trục 0.0)
cảm ơn bác nhiều
Thêm đoạn này vào cuối:
Filter = ml>0;
AddColumn(ml,"RSCD",1.1);
Ở phần Settings, tab General, không check vào ô Pad and Align
 
Thêm đoạn này vào cuối:

Ở phần Settings, tab General, không check vào ô Pad and Align
mình đã thêm vào như thế này
//RSCD= RS + MACD by ranluc
_SECTION_BEGIN("RSCD");
r1 = Param( "Fast avg", 12, 2, 200, 1 );
r2 = Param( "Slow avg", 26, 2, 200, 1 );
r3 = Param( "Signal avg", 9, 2, 200, 1 );

base = ParamStr("Base", "^VN30");
relStr = RelStrength(base);

Plot(ml= EMA(relStr, r1) - EMA(relStr, r2), StrFormat(_SECTION_NAME()+"(%g,%g)", r1, r2), colorgreen, styleThick );
Plot( sl = EMA(ml,9), "Signal" + _PARAM_VALUES(), ParamColor("Signal color", colorBlue ), ParamStyle("Signal style") );
Plot(1.5*( ml-sl), "MACD Histogram", ParamColor("Histogram color", colorDefault ), styleNoTitle | ParamStyle("Histogram style", styleHistogram | styleNoLabel, maskHistogram ) );
Filter = ml>0;
AddColumn(ml,"RSCD",1.1);
_SECTION_END();

khi lọc nó báo lỗi dòng này: relStr = RelStrength(base);
nhờ bác chỉnh sửa giúp em với
 
Vẫn là lỗi nhiều người hỏi tới hỏi lui, không tìm thấy chỉ số cần, "^VN30" hay "VN30", VNIndex" ...
 
Vẫn là lỗi nhiều người hỏi tới hỏi lui, không tìm thấy chỉ số cần, "^VN30" hay "VN30", VNIndex" ...
mình đã thay vnindex và ra hình ảnh ok, nhưng khi lọc vẫn báo lỗi dòng này: relStr = RelStrength(base);
và mình không tick vào ô vào ô Pad and Align như bạn nói
nhưng vẫn báo lỗi dòng trên
 
Em dùng dữ liệu của cophieu68 chỉ một loại đó. Bác dùng cái nào dùng một cái thôi chứ dùng nhiều lại phải chuyển qua chuyển lại giữa Database mất công lắm. CafeF em chưa dùng nên ko biết nó thế nào, trước em mua Datafeed của Vndirect nhưng sau thấy ko cần thiết nên em dùng của cophieu68, vừa free vừa chuẩn :D.
Bác vào menu Analysis/Formula Editor rồi paste mấy đoạn code của bác ranluc vào. Sau đó chọn Save as trong thư mục "C:\Program Files (x86)\AmiBroker\Formulas\Custom" (windows 64) với tên gì đó cho dễ nhớ thì tùy. Có hai cách đưa chỉ báo vào đồ thị: 1 là kéo thả, 2 là click phải chọn insert vào.
Các code của bác ranluc em quote lại đây:
- RS mặc định đã được chỉnh lại:

- RS+RSI

- RSCD hay còn gọi là MoCD

- Đường màu vàng VN30 cho pane trên


Muốn thay đổi VN30 sang VNINDEX thì click phải vào pane của chỉ báo chọn Parameters rồi thay ^vn30 bằng ^vnindex <== cái ký tự này phụ thuộc vào loại data thị trường mà bác đang dùng, ví dụ của cophieu68 hay datafeed của vndirect.
Em cảm ơn bác Naxi và bác ranluc rất nhiều, em đã làm được rồi. Nhân tiện các bác cho em hỏi nếu muốn thêm giá bán để cắt lỗ x% hoặc chốt lời y% trên biểu đồ trong amibroker thì mình phải làm sao? và tạo biểu đồ chỉ số rs như hình bên dưới thì code như thế nào ạ. Cảm ơn các bác.
 

Attachments

  • chisors.JPG
    chisors.JPG
    103.2 KB · Views: 39
Cám ơn bác @chim_non mở quán và đặt tít dùm.​
Relative Strength - một chỉ báo đơn giản mà hiệu quả
Chỉ báo RS - Relative Strength (Comparative) so sánh độ mạnh cp với một cp khác, hay so sánh với chỉ số ngành, chỉ số thị trường chung.
Phương pháp giao dịch dựa trên độ mạnh cũng thường được gọi bằng tên Momentum trong các tài liệu khác.
Chỉ báo RS này khác với chỉ báo RSI.
Chỉ báo RS dường như không thấy nhắc đến trong các lớp PTKT bậc 1, bậc 2. Nó là 1 trong 9 bước test của phương pháp Wyckoff. Trong phương pháp VSA, cuốn Master the Markets, nó chỉ được nhắc đến ở chương cuối, trang cuối cùng. Các quỹ lớn cũng thừa nhận RS đơn giản mà hiệu quả, hơn hẳn phương pháp screening (lọc theo vốn hóa và thanh khoản như ETF).

Phần lớn cp bị ảnh hưởng bởi chỉ số chung, đây là vấn đề tâm lý dễ nhận thấy: khi VNI, VN30 tăng, người ta cùng mua, đẩy giá lên cao, khi VNI, VN30 giảm người ta lại ào ào bán ra, đạp giá xuống. Vấn đề ở đây là cp yếu, dù nó cũng được đẩy giá khi chỉ số chung tăng, cũng không thể tăng mạnh như cp mạnh. Vì vậy chọn cổ phiếu theo các chỉ báo kỹ thuật khác như MACD, RSI... cũng không đạt hiệu quả. Lúc đó người chơi sẽ hoang mang: tui cũng theo chart, đường đỏ cắt đường xanh, vậy mà banks CE còn cp tui chọn chỉ lèo tèo 1-2 nấc.
Phần nhỏ cp không bị ảnh hưởng bởi thị trường hay thậm chí ngươc thị trường. Tuy nhiên nhiều cơ hội nằm ở phần lớn vậy thì tìm ở phần nhỏ làm chi?

Trong một thị trường, có cổ phiếu mạnh, có cổ phiếu yếu. Khi thị trường tăng ta cần chọn mua (long) cp tăng mạnh hơn thị trường (tăng mạnh hơn VNIndex, VN30 index). Khi thị trường giảm ta cần chọn bán (short) cp yếu hơn thị trường hay đơn giản là nghỉ ngơi.

Dưới đây minh họa một mã cp mạnh, với code Amibroker.
View attachment 4993
Cửa sổ trên, thêm lớp chỉ số VN30 để so sánh trực tiếp, đường màu vàng.
Code:
_SECTION_BEGIN("Index");
base = ParamStr("Index", "^VN30"); //VNIndex or VN30
Nth = Param("Nth", 1,1,5);
baseC = Foreign(base, "C");
refBar = PeakBars(baseC,2,Nth);
baseCn = LastvisibleValue(Ref(C/baseC,-refBar))*baseC;
Plot( baseCn , "", colorYellow, stylethick|styleNoLabel); //index
Title += " " + base + "=" + baseC+" ("+WriteVal(ROC(baseC, 1),1.1)+"%)";
_SECTION_END();


Từ 30/1 đến 9/2 VN30 giảm từ 1100 về 996, ANV không giảm, chứng tỏ mạnh hơn thị trường, mặc dù trước đó đã có 1 đợt tăng nóng từ 10 lên 14. Khi VN30 tăng từ 996 lên 1150, tăng 15% thì ANV tăng từ 14. lên 22, đạt 50%. Tin tức không có gì thêm ngoại trừ cá tra bị Mỹ đánh thuế nặng, ngành thủy sản suy giảm mạnh.

Cửa sổ dưới là chỉ báo RS có sẵn của Amibroker, code sửa lại để dễ so sánh.
Code
//modified by ranluc
_SECTION_BEGIN("RS");
base = ParamStr("Base", "^VN30"); //GetBaseIndex() );
Nth = Param("Nth", 1,1,5);
change = 2 ;
baseC = Foreign( base, "C" );
refBar = PeakBars(baseC, change, Nth);
relStr = RelStrength(base) *LastVisibleValue(Ref(baseC/C,-refBar))/10 - 100;
Plot( relStr, "RS("+base+")", colorOrange, styleLine|styleThick);
Plot( EMA(relStr, 50), "", colorBlue, styleLine );
_SECTION_END();


Lấy ngày tham chiếu là 26/1 khi VN30 tạo đỉnh 1104, AVN close giá 14.15, giá trị RS = 0. Ngày 9/2 VN30 điều chỉnh sâu, RS=14.6, nghĩa là so với VN30 ANV vẫn tăng 14.6%. Nếu người chơi mua VN30=996 ngày 9/2 (hay mã đại diện cho VN30 là E1VFVN30=16.35) thì đến ngày 30/3, VN30=1153, E1VFVN30=18.88, ANV=22.9. Lợi nhuận của ANV so với VN30 là =55.0%-14.6%=40.4%

Ví dụ khác, cổ phiếu yếu:
View attachment 4996
Về kỹ thuật FPT từ tháng 11/2017 đến tháng 1/2018 liên tiếp tạo đỉnh mới cao hơn đỉnh cũ, đáy mới cao hơn đáy cũ, giao dịch theo MACD vẫn có lãi, nhưng không bằng thị trường, nghĩa là ví dụ trung bình người ta có lãi 30% thì FPT chỉ lãi 20%, thực ra là lỗ.

Các mã trên đây chọn ngẫu nhiên, không khuyến nghị gì cả.
Thấy một số sách họ vẽ được RS từ 1 đến 100 mà sao code mình không thấy bác
 
Thấy một số sách họ vẽ được RS từ 1 đến 100 mà sao code mình không thấy bác
Mình chia sẽ code mình dùng cho mục đích của mình, chỉ tìm khoảng 30 mã mạnh nhất, nên không quan tâm xếp hạng toàn bộ 1000 mã VN. Thật ra trong phần code ở trên chưa lọc ra được những mã chạy không cùng nhịp với thị trường chung, có thể gọi là nhiễu nặng, high vola, hay có tính chu kỳ khác với chu kỳ chỉ số chung.
Nếu bạn dùng Filter thì có thể list ra toàn bộ, rồi sort theo RS là có xếp hạng từ 1 đến 1000. Code xếp hạng toàn bộ mã, theo từng ngày, dựa vào hàm StaticVarGenarateRanks(), chạy khá nặng máy, 2-3 phút gì đó.
 
Back
Top