Statistiques de rendement

Auteur:Je ne sais pas., Date: le 08/01/2016
Les étiquettes:Outil

Taux de rendement statistique

Les statistiques de rendement de BotVS ne peuvent enregistrer qu'une seule courbe. Aucune analyse technique ne peut être effectuée. Ce modèle permet de statistiquer automatiquement les rendements, les rendements, les rendements mensuels, annuels et les retraits maximaux des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours, des derniers jours,

Utilisation: Introduisez ce modèle pour remplacer la fonction LogProfit de la politique originale par $.LogProfit. Et ajoutez la chaîne de retour $.ProfitSummary ((capital initial) à la place de LogStatus.

Par exemple: fonction main (() { pendant (true) { Var t = exchange.GetTicker (en anglais seulement); Le site Web de l'équipe est disponible en anglais. LogStatus (($.ProfitSummary ((10000))); Les résultats de l'enquête ont été publiés dans le journal. Sleep ((3600000) est une série de vidéos téléchargées par les médias locaux. Je ne sais pas. Je ne sais pas.

Affichage des résultats:

1er jour: recouvrement de 78,44 yuans ((-0,537%), modification mensuelle de 16,781%, modification annuelle de 204,169%, rétractation de 1,106% Le 1er jour: récolte de 176,08 yuans (environ 1,221%), conversion mensuelle de 38,226%, conversion annuelle de 465,087%, reprise de 1,236% 7e jour: 771.74 yuans (5,599%), 24,141 pour le mois, 293,719 pour l'année et 1,517 pour le retrait Le 7 janvier: recettes de 223,15 yuans (environ 1,64%), chiffre d'affaires mensuel de 7,071%, chiffre d'affaires annuel de 86,039%, retrait de 0,9% 30e jour: récolte de 1570.31 yuans ((12.094%), modification de 12,111% par mois, modification de 147.352% par an, retrait de 3,251% Les 30 derniers jours: le recouvrement de 200.12 yuans ((1.565%), le chiffre mensuel est de 1.567%, le chiffre annuel est de 19.076%, le recouvrement est de 1.521%. Total: 4554.11 yuans ((45.541%), le maximum de retrait est de 3.251%, en 74 jours et 23 heures


$.LogProfit = function(profit) {
    var args = Array.prototype.slice.call(arguments);
    if (SYS_LOGPROFIT) {
        LogProfit.apply(this, args);
    } else {
        args.unshift('收益');
        Log.apply(this,args);
    }

    var _history = $.GetAllProfit();
    _history.push([ Math.floor(new Date().getTime()/1000), profit]);
    _G('profit_history', JSON.stringify(_history));
};

$.GetAllProfit = function() {
	var old = _G('profit_history') || '[]';
    try {
    	var _history = JSON.parse(old);
    	return _history;
    } catch(e) {
    	_G('profit_history', null);
    	return [];
    }
};

function filterProfit(from, to) {
	var arr = $.GetAllProfit();
	if (!arr || arr.length === 0) return;
	var re, maxdrawback=0, lastProfit=0, maxProfit=false, maxdrawbackProfit=0;
	var earlest, latest;
	for(var i=0;i<arr.length;i++) {
		if (!arr[i]) continue;
		if (arr[i][0] > from && arr[i][0] <= to) {
			var profit = arr[i][1];
			if (!earlest) earlest = arr[i];
			latest = arr[i];
			if (!lastProfit) lastProfit = profit;
			if (maxProfit === false || maxProfit < profit) maxProfit = profit;
			var drawback = maxProfit - profit;
			if (drawback > maxdrawback) {
				maxdrawback = drawback;
				maxdrawbackProfit = maxProfit;
			}
		}
	}
	if (!earlest || !latest) return;
	return [earlest, latest, maxdrawback, maxdrawbackProfit];
}

function daysProfit(offset, days) {
	var from = getDaySecond( -offset+days);
	var to = getDaySecond(-offset);
	var arr = filterProfit( from, to );
	if (!arr || !arr[0] || !arr[1]) return;
	var profitTime = arr[1][0] - arr[0][0];
	if (!profitTime) return;
	var periodTime = to - from;
	var profit = arr[1][1] - arr[0][1];
	var realPercent = profitTime*100 / periodTime;
	var expectedProfit = profit * 100 / realPercent;
	return {
		profit:profit, 
		expectedProfit:expectedProfit,
		profitTime:profitTime,
		periodTime:periodTime,
		open: arr[0][1],
		close: arr[1][1],
		drawback: arr[2],
		drawbackProfit: arr[3]
	};
}

function getDaySecond(days) {
	var d = new Date();
	var now = d.getTime();
	now -= days*86400000;
	d.setTime(now);
	return Math.floor(d.getTime() / 1000);
} 

$.DaysProfit = function(days) {
	return filterProfit(days)[2];
};

$.ProfitSummary = function(initialBalance) {
	if (!initialBalance) return '没有传入初始资金';

	var day = daysProfit(0, 1);
	var lastDay = daysProfit(-1, 1);
	var week = daysProfit(0,7);
	var lastWeek = daysProfit(-7,7);
	var month = daysProfit(0,30);
	var lastMonth = daysProfit(-30,30);
	var all = daysProfit(0, 10000);
	if (!all) return '';
	var _days = Math.floor(all.profitTime / 86400);

	var text = [];
	var t = profitSummary(day, initialBalance);
	if (t) text.push('1日: '+t);
	t = profitSummary(lastDay, initialBalance);
	if (t) text.push('上1日: '+t);
	t = profitSummary(week, initialBalance);
	if (t && _days >= 7) text.push('7日: '+t);
	t = profitSummary(lastWeek, initialBalance);
	if (t) text.push('上7日: '+t);
	t = profitSummary(month, initialBalance);
	if (t && _days>=30) text.push('30日: '+t);
	t = profitSummary(lastMonth, initialBalance);
	if (t) text.push('上30日: '+t);
	
	if (all) {
		var _days = Math.floor(all.profitTime / 86400);
		all.profitTime %= 86400;
		var _hours = Math.floor(all.profitTime / 3600);
		var drawback = _N( all.drawback*100/(all.drawbackProfit+initialBalance), 3 )+'%';
		text.push('总: 收'+_N(all.close,2)+'元('+_N(all.close*100/initialBalance,3)+'%),最大回撤'+drawback+',统计时间'+_days+'天'+_hours+'小时');
	}
	return text.join('\n');
};

function profitSummary(p, base) {
	if (!p) return '';
	var text = [];
	text.push('收'+_N(p.profit,2)+'元('+_N(p.profit*100/(base+p.open), 3)+'%)');
	var month = expectProfit(p, 30, base);
	if (month) {
		text.push('月化'+month.percent+'%');
	}
	var year = expectProfit(p, 365, base);
	if (year) {
		text.push('年化'+year.percent+'%');
	}
	text.push('回撤'+ _N( p.drawback*100/(p.drawbackProfit+base), 3 )+'%' );
	return text.join(',');
}


function expectProfit(p, days, base) {
	var expectSeconds = days*86400;
	if (expectSeconds < p.profitTime) return;
	return {
		profit: _N(p.profit * expectSeconds / p.profitTime, 2),
		percent: _N(p.profit * expectSeconds *100 / (p.profitTime * (base+p.open)),3)
	};
}

function main() {
    while(true) {
        var t = exchange.GetTicker();
        $.LogProfit(t.Last);
        LogStatus($.ProfitSummary(10000));
        Sleep(3600000);
    }
}

Relationnée

Plus de

Je suis désolée.Avec ce modèle, la vitesse de retouche est très lente.

NxtplayerMerci beaucoup.

Le logueVous n'avez pas besoin d'utiliser votre numéro de téléphone.

YWXMerci, j'en avais besoin.

le momoxSoutenir