Nodejs MetaAPI クラウド / 移動平均の計算
P粉715274052
P粉715274052 2023-09-03 09:12:59
0
2
549
<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
P粉715274052
P粉715274052

全員に返信(2)
P粉071743732
  • SMA は正しいようですが、EMA にはさまざまなパターンがあります。サンプルデータセットを投稿していないので、サーバーから何が渡されているかを推測するのは困難ですが、NaN、null、空の文字列やカンマ付きの数値など、変換できない値が多数ある可能性があります。指数などキャンドルを間違った値の配列に置き換えただけです。フィルタリングを行ってから計算を行います
  • 期間 > データセットを考えます。この場合、期間を length に設定します。

以下の例では、処理されたすべての値を表示するには期間を 1 に設定し、全体の平均を表示するには期間を非常に大きな数値に設定します。

私が思いつかなかった他のエッジケースが間違いなくあります。簡潔にするために、次の例では SMA を使用します。

リーリー リーリー
いいねを押す +0
P粉563446579

問題が見つかりました。これは MetaTrader の API、「getHistoricalCandles」が期待どおりに機能しないことに起因します。 API に書かれていることは次のとおりです:

リーリー

ここでの問題は StartTime パラメータです。空のままにしたり、Date.now() を入力すると、5 時間からのキャンドルが取得されます。これは間違いなく言われているように機能しません。以前、絶対的な最後のローソク足を取得するには、Date.now() 10000000000 と入力する必要がありました。これは、API 側から発生しているため、現時点では解決できないタイムゾーン エラーである可能性があります。 . .

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート