Die _Cross-Funktion in der globalen Funktionsliste in der API-Dokumentation wird verwendet, um den Überschreitungsstatus von zwei Messlinien zu berechnen
Ich bin der Meinung, dass es wichtig ist, dass die Menschen in der Region nicht verletzt werden.arr1
Die Definition ist eine Array von Schnellleitungsindikatoren.arr2
Die Definition als langsame Indikator-Array ist, dass_Cross
Die Funktion gibt einen positiven Wert zurück.正数为上穿周期, 负数表示下穿的周期, 0指当前价格一样
Ich weiß.arr1
Aufsteigen.arr2
Es gibt n Zyklen, zu denen die langsame Linie auf der schnellen Linie die Goldvierk repräsentiert.
Genauso_Cross
Wenn die Funktion eine negative Zahl zurückgibt, dann ist sie ein toter Gabel.
Wenn definiertarr1
Die Slow Line-Indikatoren sind:arr2
Für die Schnellleitungsindikator-Array ist das Gegenteil der Fall._Cross
Die Funktion gibt einen positiven Wert an, der für die Toten Gabel steht._Cross
Die Funktion gibt einen negativen Wert an, der für die Goldvierkung steht.
// 返回上穿的周期数,正数为上穿周数,负数表示下穿的周数,0指当前价格一样
$.Cross = function(arr1, arr2) { // 参数个数为2个,从参数名可以看出,这两个参数应该都是数组类型,数组就
// 好比是在X轴为数组索引值,Y轴为指标值的坐标系中的线段,该函数就是判断两条线的 交叉情况
if (arr1.length !== arr2.length) { // 首先要判断比较的两个数组长度是否相等
throw "array length not equal"; // 如果不相等抛出错误,对于不相等的指标线无法判断相交
}
var n = 0; // 声明变量n用来记录交叉状态,初始0,未相交
for (var i = arr1.length-1; i >= 0; i--) { // 遍历数组arr1,遍历顺序为从最后一个元素向前遍历
if (typeof(arr1[i]) !== 'number' || typeof(arr2[i]) !== 'number') { // 当arr1或者arr2任何一个数组为非数值类型(即无效指标)时,跳出遍历循环
break; // 跳出循环
}
if (arr1[i] < arr2[i]) { // 如果arr1小于arr2则n--,会记录开始时arr1、arr2的相对状态,(即开始时n会根据arr1[i]、arr2[i]相对大小自行调整,一旦出现另一种和n状态相反的arr1[i]、arr2[i]大小关系,即发生了两条线交叉。)
if (n > 0) {
break;
}
n--;
} else if (arr1[i] > arr2[i]) { // 如果arr1大于arr2则n++
if (n < 0) {
break;
}
n++;
} else { // arr1[i] == arr2[i],则立即跳出
break;
}
}
return n; // 返回n值,代表已经交叉了多少周期,0即指标值相等
};
var arr1 = [1,2,3,4,5,6,8,8,9] // 快线指标
var arr2 = [2,3,4,5,6,7,7,7,7] // 慢线指标
function main(){
Log("_Cross(arr1, arr2) : ", _Cross(arr1, arr2))
Log("_Cross(arr2, arr1) : ", _Cross(arr2, arr1))
}
Sie können sehen, dass das Ergebnis 3 ist.
In der Abbildung kann man sehen, dass die Position der Kreuzung vor den drei K-Säulen stattfindet.
Alpha-Strategie 00XWenn es keine Kreuzung gibt, sollte es 0 zurückgeben, oder?
Die Kleinen kommen auch.Was ist mit der Rückkehr?
Die Erfinder quantifizieren - Kleine TräumeDas ist ein Problem, das wir uns überlegen müssen.
Alpha-Strategie 00XDanke für die Antwort! Ich meine, es ist relativ vernünftiger, 0 zurückzugeben, oder?
Die Erfinder quantifizieren - Kleine TräumeIch weiß nicht. Var arr1 = [1, 2, 3, 4, 5, 6, 8, 8,9] // Schnellleitinhalter Var arr2 = [2, 3, 4, 5, 6, 7, 7, 7] // Slow Line-Indikator Die Funktion "main() { Log (("_Cross ((arr1, arr2) ": ", _Cross ((arr1, arr2)) Log (("_Cross ((arr2, arr1) ": ", _Cross ((arr2, arr1)) Wir sind hier. Ich weiß nicht. Mit diesem Set kann man eine nicht kreuzende Array ausführen. Ich habe versucht, aber es gibt keine 0 zurück.
Die Erfinder quantifizieren - Kleine TräumeNur die jüngste Verknüpfung wird erkannt, wenn man sich die Quellcode-Analyse ansieht.