찾다

 >  Q&A  >  본문

Nodejs MetaAPI Cloud / 이동 평균 계산

<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粉715274052P粉715274052490일 전531

모든 응답(2)나는 대답할 것이다

  • P粉071743732

    P粉0717437322023-09-04 00:37:22

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

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

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

    으아악 으아악

    회신하다
    0
  • P粉563446579

    P粉5634465792023-09-04 00:18:21

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

    으아악

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

    회신하다
    0
  • 취소회신하다