Chỉ báo SuperTrend trong Amibroker

ha.anh
5 Min Read

Bài viết này sẽ giúp bạn tìm hiểu về chỉ báo SuperTrend trong phần mềm Amibroker để xây dựng một chiến thuật giao dịch hiệu quả.

Bạn có thể tìm thấy rất nhiều mã AFL về chỉ báo này, dưới đây là một ví dụ lấy từ đây.

/* This AFL is to plot Supertrend for Swing Trading, this can also be sued for Intraday Supertrend, I would suggest
to use the AFL for any time frame based on your strategy planning. The default multiplier is 1 and period used as 7 for ATR, you can use as per your strategy.
*/

_SECTION_BEGIN("Supertrend AFL");         
        
SetChartOptions(0,chartShowArrows|chartShowDates);        
       
SetBarFillColor(IIf(C>O,ParamColor("UP Color", colorGreen),IIf(C<=O,ParamColor("Down Color", colorRed),colorLightGrey)));        
Plot(C,"Price",IIf(C>O,ParamColor("Wick UP Color", colorLime),IIf(C<=O,ParamColor("Wick Down Color", colorOrange),colorLightGrey)),styleCandle | styleNoTitle);        
        
         
_N(Title = "Supertrend AFL\n" + StrFormat("{{INTERVAL}} {{DATE}} \nOpen= %g, HiGH= %g, LoW= %g, Close= %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));         
        


///////////////////////////////////////////// SUPERTRENT FUNCTION /////////////////////////////////////
function FunctionST (Period, Multiplier)
{
	ATR_Val=ATR(Period);

	UpperBand=LowerBand=final_UpperBand=final_LowerBand=SuperTrend=0;
	

	///////// CALCULATE SUPERTRENT //////////
	for( i = Period; i < BarCount; i++ )
	{
		UpperBand[i]=((High[i] + Low[i])/2) + Multiplier*ATR_Val[i];
		LowerBand[i]=((High[i] + Low[i])/2) - Multiplier*ATR_Val[i];
		final_UpperBand[i] = IIf( ((UpperBand[i]<final_UpperBand[i-1]) OR (Close[i-1]>final_UpperBand[i-1])), (UpperBand[i]), final_UpperBand[i-1]);
		final_LowerBand[i] = Iif( ((LowerBand[i]>final_LowerBand[i-1]) OR (Close[i-1]<final_LowerBand[i-1])), (LowerBand[i]), final_LowerBand[i-1]);
			
		SuperTrend[i] = IIf(((SuperTrend[i-1]==final_UpperBand[i-1]) AND (Close[i]<=final_UpperBand[i])),final_UpperBand[i],
		IIf(((SuperTrend[i-1]==final_UpperBand[i-1]) AND (Close[i]>=final_UpperBand[i])),final_LowerBand[i],
		IIf(((SuperTrend[i-1]==final_LowerBand[i-1]) AND (Close[i]>=final_LowerBand[i])),final_LowerBand[i],
		IIf(((SuperTrend[i-1]==final_LowerBand[i-1]) AND (Close[i]<=final_LowerBand[i])),final_UpperBand[i],0))));

	}
	Plot( SuperTrend, "SuperTrend", (IIf( SuperTrend>Close, ParamColor("Resistance", colorRed ), ParamColor( "Support", colorGreen ))), ParamStyle("Style") | styleThick | styleLine );
	Return SuperTrend;  
}


Periods_set 	= Param("Periods", 7, 1, 50 );
Multiplier_set	= Param("Multiplier	", 1, 1, 10 );
Multiplier		= Multiplier_set;
Period			= Periods_set ;

SuperTrend		=	FunctionST(Period,Multiplier);


_SECTION_END();

Mã nguồn AFL (Amibroker Formula Language) này tạo ra chỉ báo SuperTrend, có thể được sử dụng cho giao dịch đảo chiều (Swing Trading) cũng như giao dịch trong ngày (Intraday). Dưới đây là giải thích cho từng phần của mã:

  1. Khởi tạo và Cài đặt Biểu đồ:
    • _SECTION_BEGIN("Supertrend AFL");: Khởi tạo một phần mã mới với tiêu đề “Supertrend AFL”.
    • SetChartOptions(0, chartShowArrows | chartShowDates);: Thiết lập các tùy chọn biểu đồ, bao gồm hiển thị mũi tên và ngày.
    • SetBarFillColor(...): Đặt màu sắc cho các thanh (bars) trên biểu đồ dựa trên giá đóng cửa so với giá mở cửa. Dùng màu xanh cho giá tăng và màu đỏ cho giá giảm.
  2. Vẽ Biểu đồ và Tiêu Đề:
    • Plot(...): Vẽ biểu đồ giá dạng nến với màu sắc tương ứng.
    • _N(Title = "Supertrend AFL\n" + StrFormat(...)): Thiết lập tiêu đề biểu đồ, hiển thị thông tin như khung thời gian, ngày, giá mở cửa, cao, thấp, và đóng cửa.
  3. Định nghĩa Hàm SuperTrend:
    • function FunctionST(Period, Multiplier): Bắt đầu định nghĩa hàm SuperTrend với hai tham số: Period (chu kỳ) và Multiplier (bội số).
    • ATR_Val = ATR(Period);: Tính giá trị ATR (Average True Range – Phạm vi Trung bình Thực) cho chu kỳ đã cho.
    • UpperBandLowerBandfinal_UpperBandfinal_LowerBandSuperTrend: Khởi tạo các biến cần thiết.
    • Vòng lặp for: Tính toán các giá trị cho Upper Band, Lower Band, và SuperTrend.
  4. Tính toán và Vẽ SuperTrend:
    • Plot(SuperTrend, ...): Vẽ đường SuperTrend trên biểu đồ với màu sắc biểu thị kháng cự (màu đỏ) và hỗ trợ (màu xanh).
    • Return SuperTrend;: Trả về giá trị SuperTrend từ hàm.
  5. Thiết lập Tham số Người Dùng:
    • Periods_set = Param("Periods", 7, 1, 50);: Cho phép người dùng thiết lập chu kỳ cho ATR (mặc định là 7).
    • Multiplier_set = Param("Multiplier", 1, 1, 10);: Cho phép người dùng thiết lập bội số (mặc định là 1).
    • SuperTrend = FunctionST(Period, Multiplier);: Gọi hàm SuperTrend với các tham số đã thiết lập.
  6. Kết thúc Phần Mã:
    • _SECTION_END();: Kết thúc phần mã này.

Chỉ báo SuperTrend là một công cụ phân tích kỹ thuật được sử dụng để xác định xu hướng thị trường và cung cấp tín hiệu mua hoặc bán. Nó thường được sử dụng trong các chiến lược giao dịch để xác định điểm vào và ra thị trường một cách hiệu quả.

Hy vọng bài viết trên đã giúp bạn hiểu rõ hơn về cách viết một đoạn code AFL để xây dựng cho mình một chỉ báo hiệu quả. Chúc các bạn sẽ thành công.

Share This Article
Leave a Comment