Statistik Tingkat Pendapatan

Penulis:Saudara laki-laki, Tanggal: 2016-08-01
Tag:Alat

Hasil Statistik

BotVS hanya dapat mencatat satu kurva; tidak dapat melakukan analisis teknis. Templat ini dapat melakukan statistik otomatis untuk pendapatan, laba, laba bulanan, laba tahunan, laba tahunan, dan laba maksimum selama 1 hari terakhir, 1 hari terakhir, 7 hari terakhir, 7 hari terakhir, 30 hari terakhir, 30 hari terakhir, dan semua waktu.

Cara menggunakannya: Memperkenalkan template ini, menggantikan fungsi LogProfit dari kebijakan aslinya dengan $.LogProfit。 dan menambahkan string pengembalian $.ProfitSummary (kapital awal) di tempat LogStatus.

Misalnya: fungsi main (() { while ((true) { Var t = exchange.GetTicker (); T.Profit (t.Last); T.Profit (t.Profit) LogStatus (($.ProfitSummary ((10000)); Sleep ((3600000); Aku tidak tahu. Aku tidak tahu.

Menampilkan efek:

Tanggal 1: Pengambilan -78.44 yuan ((-0.537%), perbulan - 16.781%, pertahun - 204.169%, mundur 1.106% Pada 1 hari terakhir: Pengumpulan 176.08 yuan ((1.221%), perbulan 38.226%, pertahun 465.087%, penarikan 1.236% Tanggal 7: Pengumpulan 771.74 yuan ((5.599%), perbulan 24.141%, pertahun 293.719%, penarikan 1.517% Hari ke-7: Pengumpulan 223.15 yuan ((1.64%), per bulanan 7.071%, per tahun 86.039%, penarikan 0.9% Pada tanggal 30: Pengumpulan 1570.31 yuan ((12.094%), penyesuaian bulan 12.111%, penyesuaian tahun 147.352%, penarikan 3.251% 30 hari terakhir: Pengambilan 200.12 yuan ((1.565%), perbulan 1.567%, per tahun 19.076%, penarikan 1.521% Total: 4554.11 yuan ((45.541%), maksimum penarikan 3.251%, waktu statistik 74 hari 23 jam


$.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);
    }
}

Berkaitan

Lebih banyak

xunfeng91Dengan menggunakan template ini, retesting sangat lambat.

nxtplayerTerima kasih banyak.

LogaAtau tidak menggunakan kontak kami?

YWXTerima kasih, ini yang saya butuhkan.

MomoxDukungan