1
Suivre
0
Abonnés

L'aperçu des bénéfices du backtest simulé montre qu'il n'y a que des ventes mais pas d'achats.

Créé le: 2020-12-07 23:24:34, Mis à jour le:
comments   2
hits   1050

L’aperçu des bénéfices du backtest simulé montre qu’il n’y a que des ventes mais pas d’achats.

L’aperçu des bénéfices du backtest simulé montre qu’il n’y a que des ventes mais pas d’achats.

Comme le montre le graphique ci-dessous, j’ai testé les transactions en espèces de devises et j’ai découvert que le graphique de l’aperçu des bénéfices considérait les achats comme des stocks vides, les ventes étaient sans statistiques et je ne savais pas quel grand dieu pouvait me donner un indice. Il y a aussiexchange.GetPosition()La méthode d’acquisition de la position n’est pas prise en charge dans le test de retour. Le code est le suivant :

/*backtest
start: 2020-05-01 00:00:00
end: 2020-12-03 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Huobi","currency":"BTC_USDT"}]
*/

var times = 0;
var lasttime = null;
var hasPosition = false; //持仓数量

function main() {
    Log("strategy started.");
    while(true){
        var records = _C(exchange.GetRecords, PERIOD_D1);
            records = records.slice(-20);
        var {Time} = records[records.length - 1];
        if(lasttime != Time){
            lasttime = Time;
            var fast = TA.MA(records, 5);
            var slow = TA.MA(records, 20);
            
            var lastFast1 = fast[fast.length - 2];
            var lastSlow1 = slow[slow.length - 2];
            var lastFast2 = fast[fast.length - 3];
            var lastSlow2 = slow[slow.length - 3];
            
            if(lastFast2 < lastSlow2 && lastFast1 > lastSlow1 && !hasPosition){
                //当前为金叉
                //$.Buy(0.001);
                exchange.Buy(-1, 0.01);
                hasPosition = true;
            }
            if(lastFast2 > lastSlow2 && lastFast1 < lastSlow1 && hasPosition){
                //当前为死叉
                exchange.Sell(-1, 0.01);
                hasPosition = false;
            }
        }
    }
}

function init() {
    const account = _C(exchange.GetAccount);
    Log('strategy inted.', exchange.GetName(), account);
}