Nodejs MetaAPI Cloud / Kira Purata Pergerakan
P粉715274052
2023-09-03 09:12:59
<p>Saya sedang membuat bot dagangan menggunakan metaapi.cloud dan saya cuba mengira purata bergerak (cepat/eksponen) tetapi ia mengembalikan saya nilai tidak sah, ini kod saya: </p>
<pre class="brush:js;toolbar:false;">async movingAverage(simbol, noktah, jenis = "S") {
let candles = (tunggu this.account.getHistoricalCandles(simbol, this.params.timeframe, null, period)).peta(c => c.close);
hasil const = [];
biarkan jumlah = 0;
if (taip === "S") {
untuk (biar i = 0; i < tempoh; i++) {
jumlah += lilin[i];
}
result.push(jumlah / tempoh);
untuk (biar i = noktah; i < candles.length; i++) {
jumlah = jumlah - lilin[i - tempoh] + lilin[i];
result.push(jumlah / tempoh)
}
} else if (taip === "E") {
berat const = 2 / (tempoh + 1);
untuk (biar i = 0; i < tempoh; i++) {
jumlah += lilin[i];
}
jumlah /= tempoh;
result.push(sum);
untuk (biar i = noktah; i < candles.length; i++) {
jumlah = (lilin[i] * berat) + (jumlah * (1 - berat));
result.push(sum);
}
} lain {
// throwError()
}
pulangan hasil;
}
</pra>
<p>Begini cara saya menggunakannya: </p>
<pre class="brush:js;toolbar:false;">async onTick(infos) {
biarkan sma = tunggu this.movingAverage(infos.symbol, this.params.fast, "S");
console.log('SMA ' + sma[0]);
}
</pra>
<p>Sekarang apabila saya mengujinya, SMA sepatutnya mengembalikan "1906.6963" tetapi ia memberi saya "1900.7813"
Mungkin saya menggunakan cara yang salah untuk mengira mereka?
Jika sesiapa mempunyai penyelesaian! Terima kasih terlebih dahulu. </p>
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.
Saya jumpa masalahnya. Ia datang daripada api MetaTrader, "getHistoricalCandles" tidak berfungsi seperti yang diharapkan. Apa yang tertulis dalam api ialah:
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...