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

Thầy @ranluc dạo này đi đâu k thấy vậy? Có code nào hay hay chia sẻ k thầy?
Mình chơi ps nhiều hơn. Rút ra 2 chiến lược ps hiệu quả là break MA swing và break Donchian channels , mình nghĩ 2 chiến lược này có thể có điểm chung bổ sung cho nhau thành 1 chiến lược duy nhất là thời gian trong kênh phải đủ lâu để break, biên hẹp tăng thêm hiệu quả nhưng không nhất thiết... Các indi như MACD, ADX, RSI, OBV là vô dụng.
 
break MA swing em chưa hiểu là đường MA thoát khỏi vùng dao động trước đó (có thể xây dựng theo Donchian chanels) hay giao cắt giữa đường ngắn và dài bác?
 
break MA swing em chưa hiểu là đường MA thoát khỏi vùng dao động trước đó (có thể xây dựng theo Donchian chanels) hay giao cắt giữa đường ngắn và dài bác?
Dùng 1 đường MA để xác định swing, giá vượt đỉnh nhịp trước đó thì Long, không cần dùng indi kiểu ADX. Cách này giúp tránh sideway tốt hơn cách khi giá vượt MA hay 2 MA cắt nhau. Kết hợp yếu tố thời gian của Donchian thì các đỉnh quá gần trước đó không tính, đỉnh phải dủ xa.
MABreak.png
Ví dụ minh họa, giá tại vị trí 3 vượt đỉnh 2 chưa phải là điểm vào tốt vì đỉnh 2 quá gần, cần xét đỉnh xa hơn là đỉnh 1. Tại vị trí 4 vào tốt hơn vì vượt đỉnh 3 và xa hơn (đủ xa) không còn đỉnh nào. Vị trí 4 là đủ xa rồi không cần đợi tới vị trí 5 vượt đỉnh 1.
 
Last edited:
Dùng 1 đường MA để xác định swing, giá vượt đỉnh nhịp trước đó thì Long, không cần dùng indi kiểu ADX. Cách này giúp tránh sideway tốt hơn cách khi giá vượt MA hay 2 MA cắt nhau. Kết hợp yếu tố thời gian của Donchian thì các đỉnh quá gần trước đó không tính, đỉnh phải dủ xa.
View attachment 6248
Ví dụ minh họa, giá tại vị trí 3 vượt đỉnh 2 chưa phải là điểm vào tốt vì đỉnh 2 quá gần, cần xét đỉnh xa hơn là đỉnh 1. Tại vị trí 4 vào tốt hơn vì vượt đỉnh 3 và xa hơn (đủ xa) không còn đỉnh nào. Vị trí 4 là đủ xa rồi không cần đợi tới vị trí 5 vượt đỉnh 1.
Em cũng dùng món này mấy năm nay, ổn áp phết.
 
Dùng 1 đường MA để xác định swing, giá vượt đỉnh nhịp trước đó thì Long, không cần dùng indi kiểu ADX. Cách này giúp tránh sideway tốt hơn cách khi giá vượt MA hay 2 MA cắt nhau. Kết hợp yếu tố thời gian của Donchian thì các đỉnh quá gần trước đó không tính, đỉnh phải dủ xa.
View attachment 6248
Ví dụ minh họa, giá tại vị trí 3 vượt đỉnh 2 chưa phải là điểm vào tốt vì đỉnh 2 quá gần, cần xét đỉnh xa hơn là đỉnh 1. Tại vị trí 4 vào tốt hơn vì vượt đỉnh 3 và xa hơn (đủ xa) không còn đỉnh nào. Vị trí 4 là đủ xa rồi không cần đợi tới vị trí 5 vượt đỉnh 1.
cái donchian chanels mịnh có thể setup đc trong hệ thống ko BÁc
 
Chào bác @ranluc !
Mình mới cài lại ami mà cái chart Ichi trong đó dùng parameters không chuẩn.
Mình có "xoay sở" lấy code cũ để tạo custom nhưng nó báo bị lỗi không ra được chart. Lỗi

Với cái code mình đã dán trong ami như dưới đây. Nhờ bác xem và chỉnh giúp hoặc nếu bác có code để tạo chart Ichi với các tham số chuẩn (9. 26, 26, 26, 52) nhờ bác cho mình với.
_SECTION_BEGIN("Main Parameters");
p1 = Param("Turning Line",9,5,26,1);//also known as Tenkan Sen
p2 = Param("Standard Line",26,5,52,1);//also known as Kijun Sen
p3 = Param("Delayed Line",26,0,52,1);//also known as Chikou Span
p4 = Param("Cloud F-Bars",26,0,52,1);//also known as Chikou Span
_SECTION_END();
/*******************************************************************************************/
_SECTION_BEGIN("Buy and Sell Signals");
Strategy = ParamList("Strategy", List1 = "1: Tenkan Sen/Kijun Sen Cross");//,2: ,3: ,4: ,5: ",0);
MinStrength = ParamList("Min Signal Strength", List2 = "1 - Weak,2 - Mid,3 - Strong,4 - Only best",2);
for( i=0; i<10; i++) {if( StrExtract(List1, i) == Strategy ) SelectedStrategy = i+1; }
for( i=0; i<10; i++) {if( StrExtract(List2, i) == MinStrength ) SelectedMinStrength = i+1; }
BuyShape = Param("Buy Shape Typ",def_BuyShape,0,50,1);
SellShape = Param("Sell Shape Typ",def_SellShape,0,50,2);
Buyshapecolor = ParamColor("Buy Shape Color",def_BuyShapeColor);
Sellshapecolor = ParamColor("Sell Shape Color",def_SellShapeColor);
_SECTION_END();
/*******************************************************************************************/
_SECTION_BEGIN("Styles");
TLstyle = ParamStyle("Turning Line",styleThick);
SLstyle = ParamStyle("Standard Line",styleThick);
DLstyle = ParamStyle("Delayed Line",styleThick|styleNoTitle);
_SECTION_END();
/*******************************************************************************************/
GraphZOrder = 0;
AddICHIMOKU2(p1,p2,p3,p4);
HSB = 0;
/*******************************************************************************************/
if(HSB)
{
_SECTION_BEGIN("Cloud 1");
Hue = Param("Hue",90,0,255,1);
Saturation = Param("Saturation",255,0,255,1);
Brightness = Param("Brightness",60,0,255,1);
Cloud1color = ColorHSB(Hue,Saturation,Brightness);
_SECTION_END();

_SECTION_BEGIN("Cloud 2");
Hue = Param("Hue",0,0,255,1);
Saturation = Param("Saturation",180,0,255,1);
Brightness = Param("Brightness",125,0,255,1);
Cloud2color = ColorHSB(Hue,Saturation,Brightness);
_SECTION_END();
}
else
{
_SECTION_BEGIN("Colors");
TLcolor = ParamColor("Turning Line",def_Color3);
SLcolor = ParamColor("Standard Line",def_StandardLine);
DLcolor = ParamColor("Delayed Line",colorGrey50);
Cloud1color = ParamColor("Cloud 1",def_Cloud1color);
Cloud2color = ParamColor("Cloud 2",def_Cloud2color);
_SECTION_END();
}
/*******************************************************************************************/
//Strategy 1: Tenkan Sen/Kijun Sen Cross
MinTLSL = Min(TL,SL); MaxTLSL = Max(TL,SL);
BuyPositionTLSL_1 = IIf(MinTLSL > CloudHigh,3, IIf(MinTLSL > CloudLow AND MaxTLSL < CloudHigh,2,1));
SellPositionTLSL_1 = IIf(MaxTLSL < CloudLow,3, IIf(MinTLSL > CloudLow AND MaxTLSL < CloudHigh,2,1));
BuyStrength_1 = BuyPositionTLSL_1+IIf(RDL,1,-1);
SellStrength_1 = SellPositionTLSL_1+IIf(FDL,1,-1);
Buy_1 = Cross(TL,SL) AND BuyStrength_1 >= SelectedMinStrength;
Sell_1 = Cross(SL,TL) AND SellStrength_1 >= SelectedMinStrength;
Strength_1 = IIf(Buy_1,BuyStrength_1,IIf(Sell_1,SellStrength_1,0));
Interpretation = "\n"+"Strategy = " + "\n"+Strategy + "\n\n";
BuyInterpretation1 =
WriteIf(BuyPositionTLSL_1 == 3,"The cross happend above the cloud, this is a strong signal and gives 3 ranking points.",
WriteIf(BuyPositionTLSL_1 == 2,"The cross happend inside the cloud, this is a mid signal and gives 2 ranking points.",
WriteIf(BuyPositionTLSL_1 == 1,"The cross happend below the cloud, this is a weak signal and gives 1 ranking point.","")));
BuyInterpretation1 = BuyInterpretation1 +
WriteIf(BuyStrength_1 == BuyPositionTLSL_1+1,"\n\nDelayed line is above past close. This shows rising prices and gives 1 ranking point.",
WriteIf(BuyStrength_1 == BuyPositionTLSL_1-1,"\n\nDelayed line is below past close. This shows falling prices and gives -1 ranking point.",""));

SellInterpretation1 =
WriteIf(SellPositionTLSL_1 == 3,"The cross happend below the cloud, this is a strong signal and gives 3 ranking points.",
WriteIf(SellPositionTLSL_1 == 2,"The cross happend inside the cloud, this is a mid signal and gives 2 ranking points.",
WriteIf(SellPositionTLSL_1 == 1,"The cross happend above the cloud, this is a weak signal and gives 1 ranking point.","")));
SellInterpretation1 = SellInterpretation1 +
WriteIf(SellStrength_1 == SellPositionTLSL_1+1,"\n\nDelayed line is below past close. This shows falling prices and gives 1 ranking point.",
WriteIf(SellStrength_1 == SellPositionTLSL_1-1,"\n\nDelayed line is above past close. This shows rising prices and gives -1 ranking point.",""));

Interpretation = Interpretation +
WriteIf(Buy_1,Buyinterpretation1,WriteIf(Sell_1,Sellinterpretation1,""));
/*******************************************************************************************/
Buy = def_Buy AND Buy_1;
Sell = def_Sell AND Sell_1;
/*******************************************************************************************/
AddAlert(Buy,Audio,Email,"Standard line crossed Turning line",1,BarComplete,def_BuySound1);
AddAlert(Sell,Audio,Email,"Turning line crossed Standard line",2,BarComplete,def_SellSound1);
/*******************************************************************************************/
_SECTION_BEGIN("Lines");
Plot(TL, "TL", TLcolor,TLstyle);
Plot(SL, "SL", SLcolor,SLstyle);
Plot(DL, "DL", DLcolor,DLstyle);
PlotOHLC( 0, SpanA_ahead, SpanB_ahead, SpanB_ahead, "Cloud", IIf(SpanA_ahead>SpanB_ahead,Cloud1color,Cloud2color), styleCloud+styleNoTitle+styleNoLabel,Null,Null,p4 );
PlotShapes(BuyShape*Buy,BuyShapecolor,0,L,-def_BuyShapeOffset);
PlotShapes(SellShape*Sell,SellShapecolor,0,H,-def_SellShapeOffset);
_SECTION_END();
Cám ơn bác nhiều nhiều. Nice w/end to you!
 
@mtp
Mình chưa dùng Ichi nên không thể xem được.
Có thể bạn đã cài lại Ami nhưng chưa cài PatternExplorer hay plugin nào đó nên code chưa chạy. Ngoài ra code này cũng còn thiếu nhiều phần khác.
 
  • Like
Reactions: mtp
@mtp
Mình chưa dùng Ichi nên không thể xem được.
Có thể bạn đã cài lại Ami nhưng chưa cài PatternExplorer hay plugin nào đó nên code chưa chạy. Ngoài ra code này cũng còn thiếu nhiều phần khác.
Vậy hả bác.
Thế để mình hỏi lại mn trong 4r vậy. Cám ơn bác nhé!
 
Chào Bạn ranluc;
Mình đang dùng Code RS của bạn.Mình rất thích chỉ báo này. Nhưng có điều mình không hiểu chổ cấu hình "nth" khi điều chỉnh từ 1-5 thì giá trị RS khác nhau và khu kéo thanh RS thì nó thay đổi liên tục. Mình thấy các chỉ báo khác không như vậy.
Bạn giải thích giúp mình với.
Cám ơn bạn nhiều.
 

Attachments

  • RS.png
    RS.png
    173.7 KB · Views: 36
Mình up hình cấu hình 1 và 5
 

Attachments

  • VJC_RS_1.png
    VJC_RS_1.png
    199.5 KB · Views: 30
  • VJC_RS_5.png
    VJC_RS_5.png
    210.3 KB · Views: 26
codes này của bạn Ranluc đây bạn
_SECTION_BEGIN("RS");
base = ParamStr("base", "VNINDEX"); //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 );
PlotGrid(0, colorRed);
Plot( relStr, "RS_5("+base+")", colorGreen, styleLine|styleThick|styleBarNoTicks|styleNoLabel|stylehidden);
_SECTION_END();
 
codes này của bạn Ranluc đây bạn
_SECTION_BEGIN("RS");
base = ParamStr("base", "VNINDEX"); //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 );
PlotGrid(0, colorRed);
Plot( relStr, "RS_5("+base+")", colorGreen, styleLine|styleThick|styleBarNoTicks|styleNoLabel|stylehidden);
_SECTION_END();
cảm ơn bác
 
Back
Top