Rumah > Soal Jawab > teks badan
P粉0717437322023-09-04 00:37:22
Dalam contoh di bawah, tetapkan tempoh kepada 1 untuk melihat semua nilai diproses dan tetapkan tempoh kepada nombor yang sangat besar untuk melihat keseluruhan purata.
Pasti ada kes tepi lain yang saya tak terfikir. Untuk ringkasnya, contoh berikut menggunakan SMA.
async function movingAverage(symbol, period, type = "S") { let candles = [1,2,3,"","",4, "0",0, null, "99,9123", undefined,"0.123e5", "wrongval", 9, 10, 20, 100] .map(d => parseFloat((d ?? "").toString().replace(",","."))) .filter(d => +d || +d === 0); const result = []; if (candles.length <= 0){return result} let sum = 0; period = Math.min(candles.length, period) || 1; for (let i = 0; i < period; i++) { sum += candles[i]; } result.push(sum / period); for (let i = period; i < candles.length; i++) { sum = sum - candles[i - period] + candles[i]; result.push(sum / period) } return result; } movingAverage("SPX",500).then(x => document.getElementById("result").textContent = x)
<div id="result"></div>
P粉5634465792023-09-04 00:18:21
Saya jumpa masalahnya. Ia datang daripada api MetaTrader, "getHistoricalCandles" tidak berfungsi seperti yang diharapkan. Apa yang tertulis dalam api ialah:
getHistoricalCandles(symbol, timeframe, startTime, limit) symbol: symbol to retrieve candles for TimeFrame: define the timeframe according to which the candles must be generated StartTime: time to start loading candles from. Note that candles are loaded in backward direction, so this should be the latest time, **leave it empty to request latest candles** Limit: maximum of candles to retrieve, must be less or equals to 1000
Masalah di sini ialah parameter StartTime, ia pasti tidak berfungsi seperti yang mereka katakan apabila saya biarkan kosong, atau apabila saya meletakkan Date.now()
时,它会检索 5 小时前的蜡烛,为了检索绝对的最后一根蜡烛,我必须输入 Date.now()+10000000000
, jadi ia mungkin ralat zon waktu yang tidak boleh diperbaiki buat masa ini kerana ia berasal dari api Tamat...