資源の読み込みに... 荷物...

内蔵機能に関する分析と使用説明 _Cross

作者: リン・ハーンFMZ~リディア作成日:2023年10月7日 15:35:44 更新日:2024年1月2日 21:17:16 更新日:2020年1月2日 21:17:16 更新日:2020年1月2日 更新日:2021年2月2日 更新日:2021年2月2日 更新日:2021年2月2日 更新日:2021年2月2日 更新日:2021年2月2日 更新日:2021年2月2日

img

内蔵機能に関する分析と使用説明 _Cross

API ドキュメンテーションの Global Functions セクションの _Cross 関数は,2つの指標のクロスオーバー状態を計算するために使用されます.

機能の実装は次のコードに似ている:

注目してください.arr1迅速な指標の配列として定義され,arr2スローインジケーターの集合として 返された値_Cross機能が正である,つまり,ドキュメントによると,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- わかった この時点で見ることができますarr1上向きに浸透したarr2速度の線が上向きに突入し ゆっくりとした線が交差しています 同じこと_Cross負の数を返します. つまり,横断数です.

逆のことが起こりますarr1遅い指標の配列として定義され,arr2迅速な指標として 返される値は_Crossこの関数は,横切りを表します. 負の値が返されます._Crossこの関数は,交差値を表します.

// 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.
};

このパラメータに転送されたデータセットをシミュレートして,結果を見てみましょう.

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

3 - 3 です.

img

3つのK線バーの前に交差点が起こります


もっと