1
Подписаться
0
Подписчики

Обзор прибыли смоделированного бэктеста показывает, что есть только продажи, но нет покупок.

Создано: 2020-12-07 23:24:34, Обновлено:
comments   2
hits   1050

Обзор прибыли смоделированного бэктеста показывает, что есть только продажи, но нет покупок.

Обзор прибыли смоделированного бэктеста показывает, что есть только продажи, но нет покупок.

Как показано на рисунке, когда я тестировал наличные валютные сделки, я обнаружил, что график с обзором доходов считает покупку пустым складом, а продажу без статистики, не знаю, какой бог может указать на это. И ещё…exchange.GetPosition()Метод получения позиций в отзывах показал, что этот метод не поддерживается. Код выглядит следующим образом:

/*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);
}