Nodejs MetaAPI Cloud / 이동 평균 계산
P粉715274052
2023-09-03 09:12:59
<p>metaapi.cloud를 사용하여 트레이딩 봇을 만들고 있으며 이동 평균(빠른/지수)을 계산하려고 하는데 잘못된 값이 반환됩니다. 내 코드는 다음과 같습니다. </p>
<pre class="brush:js;toolbar:false;">async MovingAverage(symbol, period, type = "S") {
let candles = (await this.account.getHistoricalCandles(symbol, this.params.timeframe, null, period)).map(c => c.close);
const 결과 = [];
합계 = 0으로 둡니다.
if (유형 === "S") {
for (i = 0; i < 마침표; i++) {
합계 += 양초[i];
}
result.push(합계/기간);
for (i = 기간; i < candles.length; i++) {
합계 = 합계 - 양초[i - 기간] + 양초[i];
result.push(합계/기간)
}
} else if (유형 === "E") {
const 가중치 = 2 / (마침표 + 1);
for (i = 0; i < 마침표; i++) {
합계 += 양초[i];
}
합계 /= 기간;
결과.푸시(합계);
for (i = 기간; i < candles.length; i++) {
합계 = (양초[i] * 무게) + (합계 * (1 - 무게));
결과.푸시(합계);
}
} 또 다른 {
// 오류 발생()
}
결과 반환;
}
</pre>
<p>사용 방법은 다음과 같습니다.</p>
<pre class="brush:js;toolbar:false;">async onTick(infos) {
let sma = wait this.movingAverage(infos.symbol, this.params.fast, "S");
console.log('SMA' + sma[0]);
}
</pre>
<p>이제 테스트하면 SMA가 "1906.6963"을 반환해야 하는데 "1900.7813"이 반환됩니다.
어쩌면 내가 계산하는 데 잘못된 방법을 사용하고 있는 것은 아닐까?
누구든지 해결책이 있다면! 미리 감사드립니다. </p>
아래 예시에서 period를 1로 설정하면 처리된 모든 값을 볼 수 있고, period를 아주 큰 숫자로 설정하면 전체 평균을 볼 수 있습니다.
제가 생각하지 못한 다른 극단적인 경우도 분명히 있습니다. 간결하게 하기 위해 다음 예에서는 SMA를 사용합니다.
문제를 발견했습니다. MetaTrader의 API인 "getHistoricalCandles"가 예상대로 작동하지 않는 문제입니다. API에 쓰여진 내용은 다음과 같습니다:
으아악여기서 문제는 StartTime 매개변수입니다. 이 매개변수를 비워두거나
Date.now()
时,它会检索 5 小时前的蜡烛,为了检索绝对的最后一根蜡烛,我必须输入Date.now()+10000000000
를 입력하면 작동하지 않는다는 것이 확실합니다. 따라서 아마도 시간대 오류일 것입니다. API 끝...