<p>metaapi.cloud を使用して取引ボットを作成しており、移動平均 (高速/指数) を計算しようとしていますが、無効な値が返されます。コードは次のとおりです。</p>
<pre class="brush:js;toolbar:false;">async moveAverage(symbol, period, type = "S") {
letCandles = (await this.account.getHistoricalCandles(symbol, this.params.timeframe, null, period)).map(c => c.close);
const 結果 = [];
合計 = 0 とします。
if (type === "S") {
for (let i = 0; i < period; i ) {
合計 = キャンドル[i];
}
result.push(合計 / 期間);
for (let i = period; i
以下の例では、処理されたすべての値を表示するには期間を 1 に設定し、全体の平均を表示するには期間を非常に大きな数値に設定します。
私が思いつかなかった他のエッジケースが間違いなくあります。簡潔にするために、次の例では SMA を使用します。
問題が見つかりました。これは MetaTrader の API、「getHistoricalCandles」が期待どおりに機能しないことに起因します。 API に書かれていることは次のとおりです:
リーリーここでの問題は StartTime パラメータです。空のままにしたり、
Date.now()
を入力すると、5 時間からのキャンドルが取得されます。これは間違いなく言われているように機能しません。以前、絶対的な最後のローソク足を取得するには、Date.now() 10000000000
と入力する必要がありました。これは、API 側から発生しているため、現時点では解決できないタイムゾーン エラーである可能性があります。 . .