Status - Lấy thông tin trạng thái AFL chạy trong thời gian thực.
SYNTAX
status( ''statuscode'' )
RETURNS
NUMBER or ARRAY
FUNCTION
Trả về thông tin trạng thái chạy của bộ phân tích. Mã trạng thái được hỗ trợ:
- "stocknum" - cung cấp số thứ tự của ký hiệu hiện đang được phân tích
- "action" - cung cấp thông tin về ngữ cảnh mà công thức được chạy: 1 - actionIndicator (INDICATOR), 2 - actionCommentary (COMMENTARY), 3 - actionScan (SCAN), 4 - actionExplore (EXPLORATION), 5 - actionBacktest (BACKTEST / OPTIMIZE), 6 - actionPortfolio (portfolio backtest). Giá trị của actionBacktest (5) (backtest) cũng được sử dụng trong một số ngữ cảnh khác (như kiểm tra mã và hồ sơ). Do đó, bạn có thể sử dụng ActionEx để có thông tin chi tiết/chính xác hơn.
- "ActionEx" (mới từ phiên bản 5.20) - thông tin chi tiết hơn về hành động kích hoạt việc thực thi AFL. Lưu ý rằng 5 mã đầu tiên của ActionEx tương tự như Status("action") nhưng phạm vi giới hạn là 'core' (xem ghi chú bên dưới).
- Các giá trị có thể có:
- actionIndicator - khi chỉ số đang được vẽ lại (CHÚ Ý: 5.32 - chỉ số cũng có thể cung cấp actionExInterpret khi cập nhật cả biểu đồ và phiên giải)
- actionCommentary (CHÚ Ý: chỉ chú thích, không phải phiên giải hoặc gợi ý)
- actionScan - khi thực hiện Quét AA
- actionExplore - khi thực hiện Khám phá AA
- actionBacktest (CHÚ Ý chỉ backtest, không phải tối ưu hóa)
- actionPortfolio (pha 2 của backtest portfolio (backtester tùy chỉnh)
- dành cho sử dụng trong tương lai
- dành cho sử dụng trong tương lai
- dành cho sử dụng trong tương lai
- - actionExAAShowArrows - khi sử dụng lệnh AA "Hiển thị mũi tên"
- actionExAAParameters - khi hiển thị/cập nhật hộp thoại AA "Tham số"
- actionExEditVerifyFormula - khi trình biên dịch AFL xác minh cú pháp
- actionExOptimizeSetup - khi đọc thông số của Optimize() (để thiết lập bộ tối ưu hóa)
- actionExOptimizeBacktest - khi thực hiện Backtest là một phần của quá trình tối ưu hóa
- actionExOptimizePortfolio - khi thực hiện giai đoạn backtest-portfolio (backtester tùy chỉnh) là một phần của quá trình tối ưu hóa
- actionExTooltip - khi tooltip cho biểu đồ cụ thể được hiển thị/cập nhật
- actionExInterpret - khi cửa sổ Phiên giải đang được cập nhật (có thể có nghĩa là chỉ số + phiên giải trong 5.32 trở lên, xem ghi chú bên dưới)
- (không sử dụng, dành cho sử dụng trong tương lai) actionExAAInit - khi AA cần khởi tạo thông tin cần thiết về thanh QuickAFL và/hoặc công thức chứa các chức năng thay đổi tùy chọn chung AA
GHI CHÚ: để tương thích ngược với tất cả các công thức bạn đã viết trước đây, các mã cho Status("action") KHÔNG thay đổi.
GHI CHÚ VỀ THAY ĐỔI 5.32.x: Kể từ khi giới thiệu đa luồng, chỉ có MỘT lượt/thực thi duy nhất cập nhật cả chỉ số và phiên giải khi ô cửa sổ biểu đồ hiện tại được tập trung. Status("action") luôn trả về actionIndicator và Status("actionex") sẽ trả về actionExInterpret (khi ô không được tập trung hoặc phiên giải KHÔNG hiển thị). Hãy cẩn thận KHÔNG tắt Plot() dựa vào mã Status("actionex"). Nếu bạn thực sự nghĩ rằng bạn cần thực thi Plot() có điều kiện, bạn chỉ nên kiểm tra Status("action")==actionIndicator.
- "rangefromdate", "rangetodate" - trả về phạm vi Từ-Đến tự động hiện tại là dưới dạng DateNums
- "rangefromtime", "rangetotime" - trả về phạm vi Từ-Đến tự động hiện tại là dưới dạng DateNums
- "barinrange" - trả về 1 khi thanh trạng thái hiện tại nằm trong phạm vi Từ-Đến tự động hiện tại
- "barvisible" - (chỉ dành cho chỉ số tùy chỉnh) trả về 1 khi thanh trạng thái hiện tại hiển thị trong chế độ xem hiện tại
- "firstbarinrange" và "lastbarinrange". Chúng trả về 1 (hoặc True) trên thanh đầu tiên/cuối cùng của phạm vi phân tích.
- "buydelay", "selldelay", "shortdelay", "coverdelay" - trả về các độ trễ được đặt trong cửa sổ Cài đặt
- "firstbarintest" và "lastbarintest" - tương tự như "firstbarinrange" và "lastbarinrange" nhưng trả về các thiết lập của lần BACKTEST/OPTIMIZATION cuối cùng và các quét/khám phá trung gian không ảnh hưởng đến chúng
- "firstvisiblebar", "lastvisiblebar", "firstvisiblebarindex", "lastvisiblebarindex" - trả về số thanh hoặc chỉ số thanh của thanh hiển thị đầu tiên/cuối cùng. Chỉ có sẵn trong chế độ chỉ số. Thanh hiển thị có thể bao gồm các thanh "trống" trong tương lai (vượt qua thanh cuối cùng trong mảng) như được xác định trong tùy chọn
- "redrawaction" - trả về 0 (không) cho các làn cập nhật thông thường và 1 cho các làn cập nhật được kích hoạt thông qua RequestTimedRefresh().
- "pxwidth" - trả về chiều rộng pixel của ô cửa sổ biểu đồ (chỉ số, đồ họa cấp thấp) (AmiBroker 4.94 trở lên)
- "pxheight" - trả về chiều cao pixel của ô cửa sổ biểu đồ (chỉ số, đồ họa cấp thấp) (AmiBroker 4.94 trở lên)
- "axisminy" - lấy giá trị tối thiểu (dưới cùng) của trục Y (chỉ số, đồ họa cấp thấp)
- "axismaxy" - lấy giá trị tối đa (phía trên) của trục Y (chỉ số, đồ họa cấp thấp)
- "pxchartleft" - trả về tọa độ x của góc trên bên trái của khu vực biểu đồ
- "pxcharttop" - trả về tọa độ y của góc trên bên trái của khu vực biểu đồ
- "pxchartright" - trả về tọa độ x của góc dưới bên phải của khu vực biểu đồ
- "pxchartbottom" - trả về tọa độ y của góc dưới bên phải của khu vực biểu đồ
- "pxchartwidth" - trả về chiều rộng khu vực biểu đồ (phải-trái)
- "pxchartheight" - trả về chiều cao khu vực biểu đồ (dưới-trên)
- "quickaflfirstdatabar", "quickafllastdatabar" - Tính năng này chỉ được sử dụng nội bộ. Đây là chỉ số thanh của mảng trích dẫn nén thực tế cơ bản tạo thành mảng AFL's array[ 0 ] và array[ BarCount - 1]
- "timeshift" - trả về sự chênh lệch thời gian cơ sở dựa trên giờ, ngày và múi giờ máy chủ nền. Sự chênh lệch có thể là số dương hoặc âm. Sử dụng thời gian gốc và định dạng trong lệnh DateTime() hoặc khi tạo các biến DateTime/TimeFrame. (phiên bản 5.20 trở lên).
VÍ DỤ
Example 1:
if( Status("redrawaction") ==1 )
{
_TRACE("nTIMED REFRESH"+Now());
}
RequestTimedRefresh(1);
Example 2 (low-level graphic overlay + pixel co-ordinate conversion):
_SECTION_BEGIN("GfxOverlaySampleNew");
function GetVisibleBarCount()
{
lvb = Status("lastvisiblebar");
fvb = Status("firstvisiblebar");
return Min( Lvb - fvb, BarCount - fvb );
}
function GfxConvertBarToPixelX( bar )
{
lvb = Status("lastvisiblebar");
fvb = Status("firstvisiblebar");
pxchartleft = Status("pxchartleft");
pxchartwidth = Status("pxchartwidth");
return pxchartleft + bar * pxchartwidth / ( Lvb - fvb + 1 );
}
function GfxConvertValueToPixelY( Value )
{
local Miny, Maxy, pxchartbottom, pxchartheight;
Miny = Status("axisminy");
Maxy = Status("axismaxy");
pxchartbottom = Status("pxchartbottom");
pxchartheight = Status("pxchartheight");
return pxchartbottom - floor( 0.5 + ( Value - Miny ) * pxchartheight/ ( Maxy - Miny ) );
}
Plot(C, "Price", colorBlack, styleHistogram );
GfxSetOverlayMode(0);
GfxSelectSolidBrush( colorRed );
GfxSelectPen( colorRed );
AllVisibleBars = GetVisibleBarCount();
fvb = Status("firstvisiblebar");
for( i = 0; i < AllVisibleBars ; i++ )
{
x = GfxConvertBarToPixelX( i );
y = GfxConvertValueToPixelY( C[ i + fvb ] );
GfxRectangle( x-1, y-1, x + 2, y+1 );
}
//SetChartBkGradientFill( ColorRGB(200,200,200), ColorRGB( 255,255,255) );
_SECTION_END();