API 문서의 범용 함수 열에 있는 _Cross 함수는 두 지표선의 교차 상태를 계산하는 데 사용됩니다.
이 모든 것은 매우 중요한 것입니다.arr1
이 지표들은arr2
이 지표는 느린 줄의 지표군으로 정의됩니다._Cross
이 함수에서 반환하는 값은正数为上穿周期, 负数表示下穿的周期, 0指当前价格一样
이 모든 것은arr1
올라와arr2
이미 n 회전, 이 때 빠른 라인에서 느린 라인을 통해 금포를 나타냅니다.
또한_Cross
만약 함수가 음수를 반환한다면, 그것은 죽은 포크입니다.
정의하면arr1
이 지표는arr2
빠른 라인 지표의 배열은 반대입니다._Cross
이 함수에서 반환되는 값은 포크를 나타내는 양수입니다._Cross
이 함수에서 반환되는 값은 금포를 나타내는 음수입니다.
// 返回上穿的周期数,正数为上穿周数,负数表示下穿的周数,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))
}
그리고 3와 3의 합이 됩니다
그림에서 볼 수 있듯이, 교차의 위치는 세 개의 K선 기둥 전에 발생합니다.
알파 전략00X그리고 만약 우리가 0을 곱하면,
작은 양배추도그리고 다시 돌아와서?
발명가들의 수량화 - 작은 꿈자, 이 점을 고려해보자.
알파 전략00X답해주셔서 감사합니다. 제 말은, 0으로 돌아가는 것이 더 합리적인가요?
발명가들의 수량화 - 작은 꿈`` var arr1 = [1,2,3,4,5,6,8,8,9] // 빠른 라인 지표 var arr2 = [2,3,4,5,6,7,7,7] // 느린 라인 지표 function main ((() { Log (("_Cross ((arr1, arr2) : ", _Cross ((arr1, arr2)) Log (("_Cross ((arr2, arr1) : ", _Cross ((arr2, arr1)) ♪ ♪ `` 이 설정을 사용하여, 교차되지 않는 배열을 설정하고 실행할 수 있습니다. 0을 반환하지 않습니다.
발명가들의 수량화 - 작은 꿈최근 크로스오버에 대해서만 확인하고 소스 코드 분석을 통해 알 수 있습니다.