Nodejs MetaAPI Cloud / 이동 평균 계산
P粉715274052
P粉715274052 2023-09-03 09:12:59
0
2
521
<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>
P粉715274052
P粉715274052

모든 응답(2)
P粉071743732
  • SMA는 정확해 보이지만 EMA에는 다양한 패턴이 있습니다. 샘플 데이터셋을 게시하지 않았기 때문에 서버에서 무엇이 전달되는지 추측하기 어렵지만 NaN, null, 빈 문자열 또는 쉼표가 있는 숫자 등 변환할 수 없는 값이 많이 있을 수 있으며, 지수 등 양초를 잘못된 값을 가진 배열로 교체했습니다. 필터링을 한 다음 계산해 보세요
  • 기간 > 데이터세트를 고려하세요. 이 경우 기간을 길이로 설정하세요.

아래 예시에서 period를 1로 설정하면 처리된 모든 값을 볼 수 있고, period를 아주 큰 숫자로 설정하면 전체 평균을 볼 수 있습니다.

제가 생각하지 못한 다른 극단적인 경우도 분명히 있습니다. 간결하게 하기 위해 다음 예에서는 SMA를 사용합니다.

으아악 으아악
P粉563446579

문제를 발견했습니다. MetaTrader의 API인 "getHistoricalCandles"가 예상대로 작동하지 않는 문제입니다. API에 쓰여진 내용은 다음과 같습니다:

으아악

여기서 문제는 StartTime 매개변수입니다. 이 매개변수를 비워두거나 Date.now() 时,它会检索 5 小时前的蜡烛,为了检索绝对的最后一根蜡烛,我必须输入 Date.now()+10000000000를 입력하면 작동하지 않는다는 것이 확실합니다. 따라서 아마도 시간대 오류일 것입니다. API 끝...

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿