Nodejs MetaAPI Cloud / Gleitenden Durchschnitt berechnen
P粉715274052
2023-09-03 09:12:59
<p>Ich erstelle einen Trading-Bot mit metaapi.cloud und versuche, den gleitenden Durchschnitt (schnell/exponentiell) zu berechnen, aber er gibt mir ungültige Werte zurück. Das ist mein Code: </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 result = [];
sei Summe = 0;
if (type === "S") {
for (sei i = 0; i < Punkt; i++) {
Summe += Kerzen[i];
}
result.push(sum / period);
for (let i = period; i < Candles.length; i++) {
sum = sum - Kerzen[i - Punkt] + Kerzen[i];
result.push(Summe / Periode)
}
} else if (type === "E") {
const-Gewicht = 2 / (Periode + 1);
for (sei i = 0; i < Punkt; i++) {
Summe += Kerzen[i];
}
Summe /= Periode;
result.push(sum);
for (let i = period; i < Candles.length; i++) {
Summe = (Kerzen[i] * Gewicht) + (Summe * (1 - Gewicht));
result.push(sum);
}
} anders {
// throwError()
}
Rückgabeergebnis;
}
</pre>
<p>So verwende ich es: </p>
<pre class="brush:js;toolbar:false;">async onTick(infos) {
let sma = waiting this.movingAverage(infos.symbol, this.params.fast, "S");
console.log('SMA ' + sma[0]);
}
</pre>
<p>Wenn ich es jetzt teste, sollte der SMA „1906.6963“ zurückgeben, aber er gibt mir „1900.7813“ aus.
Vielleicht berechne ich sie falsch?
Falls jemand eine Lösung hat! Dank im Voraus. </p>
在下面的示例中,将 period 设置为 1 以查看已处理的所有值,将 period 设置为非常大的数字以查看整个平均值。
肯定还有其他我没有想到的边缘情况。为简洁起见,下面的示例使用 SMA。
我发现了问题。它来自 MetaTrader 的 api,“getHistoricalCandles”无法按预期正常工作。 api中写的是:
这里的问题是 StartTime 参数,它绝对不会像他们所说的那样工作,当我将其留空时,或者当我放置
Date.now()
时,它会检索 5 小时前的蜡烛,为了检索绝对的最后一根蜡烛,我必须输入Date.now()+10000000000
,所以这可能是一个时区错误,暂时无法解决,因为它来自 api 端...