API ドキュメンテーションのグローバル関数列の _Cross 関数は,2つの指標ラインのクロスステータスを計算するために使用されます.
注目すべきは,arr1
急速線指標の配列として定義され,arr2
スローラインインジケーターの配列として定義される.
返される値_Cross
文献の文脈に従ってa positive number is the upswing period, a negative number indicates the downswing period, and 0 means it is the same as the current price
ありがとうございました
この時点でarr1
横断したarr2
n サイクル間,つまり,高速ラインアップがスローラインを横切って,ゴールデンクロスを示します.
同じように,_Cross
死の十字架という意味です.
` `arr1is defined as an array of slow line indicators, and
arr2as an array of fast line indicators, the situation will be opposite. If the value returned by the
_クロスfunction is a positive number, it means death cross. If the value returned by the
_クロス```関数は負数で 金十字を意味します
// Return the number of upswing periods; a positive number represents the number of upswing periods, and a negative number represents the number of downswing periods, and 0 means it is the same as the current price
$.Cross = function(arr1, arr2) { // The number of parameters is 2. As you can see from the parameter names, these two parameters should be of array type.
// The array is like a line segment in the coordinate system where the X axis is the array index value and the Y axis is the index value. The function is to determine the intersection of two lines
if (arr1.length !== arr2.length) { // First, judge whether the lengths of the two compared arrays are equal
throw "array length not equal"; // If they are not equal, raise an error, for the unequal indicator lines cannot judge if crossed or not
}
var n = 0; // Declare the variable n to record the cross-status; its initial value is 0, indicating not crossed
for (var i = arr1.length-1; i >= 0; i--) { // Traverse arr1,from the last element to the front
if (typeof(arr1[i]) !== 'number' || typeof(arr2[i]) !== 'number') { // when arr1 or arr2 is non-numeric type (namely invalid indicators), break the traversing loop
break; // break the loop
}
if (arr1[i] < arr2[i]) { // If arr1 < arr2, the n-- will record the comparative status of arr1 and arr2 from the beginning (that is, at the beginning, n will adjust automatically according to the comparative value of arr1[i] and arr2[i]; once the comparison relation between arr1[i] and arr2[i] opposite to n happens, it means the two lines crossed).
if (n > 0) {
break;
}
n--;
} else if (arr1[i] > arr2[i]) { // If arr1 > arr2, then n++
if (n < 0) {
break;
}
n++;
} else { // arr1[i] == arr2[i], then break immediately
break;
}
}
return n; // Return n, indicating the number of periods with cross, 0 means equal indicator values
};
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))
}
3 と -3 の結果です.
3つのK線バーの前に位置しています