Maison > Questions et réponses > le corps du texte
P粉0717437322023-09-04 00:37:22
Dans l'exemple ci-dessous, définissez la période sur 1 pour voir toutes les valeurs traitées et définissez la période sur un très grand nombre pour voir la moyenne entière.
Il existe certainement d'autres cas extrêmes auxquels je n'ai pas pensé. Par souci de concision, les exemples suivants utilisent 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
J'ai trouvé le problème. Cela vient de l'API de MetaTrader, "getHistoricalCandles" ne fonctionne pas comme prévu. Ce qui est écrit dans l'API est :
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
Le problème ici est le paramètre StartTime, il ne fonctionne définitivement pas comme ils le disent quand je le laisse vide, ou quand je mets Date.now()
时,它会检索 5 小时前的蜡烛,为了检索绝对的最后一根蜡烛,我必须输入 Date.now()+10000000000
, donc c'est probablement une erreur de fuseau horaire qui ne peut pas être corrigée pour l'instant puisqu'elle vient de l'API Fin...