FMZ 플랫폼과 커뮤니티를 통해 전략, 코드, 아이디어, 템플릿을 공유합니다.
자막: ATR을 예로 들며, 평균값을 계산하는 단계에 대해 자세히 설명합니다. 지표 호출, 데이터 포인트 부족, 우연한 데이터 오류 포함 이 모든 것이 전략에 중요한 부분입니다.
우리는 서로 협력하고 교류하고 함께 배우고 함께 발전합니다. v:haiyanyydss
var arecords = _C(exchange.GetRecords, 300); var time = arecords[arecords.length - 1].Time var nowtime = time; var atremaarr = []; var Onoff = 0; function main() { while (true) { //这里开始 把这段放循环里 var Num = 50; //可以改,几根的平均值 var records = _C(exchange.GetRecords, 300); var atr = TA.EMA(records, 9) nowtime = records[records.length - 1].Time if (nowtime > time || Onoff == 0) { atr = atr.slice(atr.length - (20 + Num)); for (var i = 0; i < (atr.length - Num); i++) { //(atr.length-Num) 长度减掉周期 比如500根 前50根是不准的平均值 这里就取450 var atremTEMP = 0; //计算求和的,初始设置为0 for (var j = 0; j < Num; j++) { //求和 atrTEMP = atr[i + j] > 0 ? atr[i + j] : 0; //剔除意外数据 ,大于O 取值,小于O 或者其他情况取值O atremTEMP += atrTEMP; } atremaarr.push(atremTEMP / Num); //把平均值P到数组 } time = nowtime; Onoff += 1; Log("计算第:", Onoff, "次。"); } //这里结算 把这段放循环里 Sleep(3000) Log("最后一根:", _N(atremaarr[atremaarr.length - 1], 2)) //拿值 //Log("最后第二根:", _N(atremaarr[atremaarr.length-2],2)) } }