Tài nguyên đang được tải lên... tải...

Phân tích và hướng dẫn sử dụng về chức năng tích hợp

Tác giả:FMZ~Lydia, Tạo: 2023-10-07 15:35:44, Cập nhật: 2024-01-02 21:17:16

img

Phân tích và hướng dẫn sử dụng về chức năng tích hợp

Chức năng _Cross trong phần Global Functions của tài liệu API được sử dụng để tính trạng thái chéo của hai chỉ số.

Việc thực hiện chức năng tương tự như mã sau:

Lưu ý rằng khiarr1được định nghĩa là một mảng các chỉ số nhanh vàarr2như một mảng các chỉ số chậm, giá trị được trả về bởi_Crosschức năng là dương tính, tức là, theo tài liệu,a positive number is the period of upward penetration, a negative number indicates the period of downward penetration, and 0 means the same as the current price. Có thể thấy, vào thời điểm nàyarr1lên thâm nhậparr2đã được n chu kỳ, tại thời điểm này, nó là đường nhanh thâm nhập lên đường chậm, đại diện cho một chéo. Tương tự._Crosshàm trả về một số âm, đó là, một crossdown.

Ngược lại là đúng nếuarr1được định nghĩa là một mảng các chỉ số chậm vàarr2như một mảng các chỉ số nhanh. Một giá trị dương được trả về bởi_Crosshàm đại diện cho một crossdown. Một giá trị âm được trả về bởi_Crosshàm đại diện cho một crossup.

// Return to the number of periods of upward penetration, the positive number is the number of periods of upward penetration, the negative number indicates the number of periods of downward penetration, 0 means the same as the current price
$.Cross = function(arr1, arr2) {            // The number of parameters is 2, it can be seen from the parameter name, these two parameters should be an array type, the array is like an array in the X-axis for the array index value, Y-axis for the index value of the line in the coordinate system, the function is to determine the intersection of the two lines 
    if (arr1.length !== arr2.length) {      // The first step is to determine if the two arrays being compared are equal in length
        throw "array length not equal";     // Throw an error if they are not equal, it is not possible to determine the intersection of unequal lines.
    }
    var n = 0;                              // Declare the variable n to record the intersection state, initially 0, unintersected 
    for (var i = arr1.length-1; i >= 0; i--) {      // Iterate over the array arr1, from the last element forward.
        if (typeof(arr1[i]) !== 'number' || typeof(arr2[i]) !== 'number') { // When any of the arrays arr1 or arr2 is of a non-numeric type (i.e., an invalid indicator), the traversal loop is broken.
            break;                                  // break out of a loop
        }
        if (arr1[i] < arr2[i]) {                    // If arr1 is smaller than arr2 then n--, will record the relative state of arr1, arr2 at the beginning, (i.e., at the beginning n will adjust itself according to the relative sizes of arr1[i], arr2[i], and once there is another relationship between the sizes of arr1[i], arr2[i] opposite to the state of n, i.e., a crossing of the two lines has occurred.)
            if (n > 0) {
                break;
            }
            n--;
        } else if (arr1[i] > arr2[i]) {             // If arr1 is greater than arr2 then n++
            if (n < 0) {
                break;
            }
            n++;
        } else {                                    // arr1[i] == arr2[i], then immediately break
            break;
        }
    }
    return n;                                       // Returns the value of n, which represents the number of periods that have been crossed, and 0, which means that the indicator values are equal.
};

Hãy mô phỏng một bộ dữ liệu được truyền vào tham số này và xem nó ra sao

var arr1 = [1,2,3,4,5,6,8,8,9]     // fast line indicator
var arr2 = [2,3,4,5,6,7,7,7,7]     // slow line indicator
function main(){
    Log("_Cross(arr1, arr2) : ", _Cross(arr1, arr2))
    Log("_Cross(arr2, arr1) : ", _Cross(arr2, arr1))
}

img

Chúng ta có thể thấy kết quả là 3, -3.

img

Như bạn thấy trong biểu đồ, sự giao thoa xảy ra trước ba thanh K-line.


Thêm nữa