आय के आंकड़े

लेखक:चोंग, दिनांकः 2016-08-01 00:29:26
टैगःऔजार

सांख्यिकीय लाभ

BotVS में आय के आंकड़े केवल एक वक्र को रिकॉर्ड करते हैं; तकनीकी विश्लेषण नहीं किया जा सकता है। यह टेम्पलेट स्वचालित रूप से हाल के 1, पिछले 1, पिछले 7, पिछले 7, हाल के 30, पिछले 30 दिनों और सभी समय के लिए आय, आय, मासिक आय, वार्षिक आय और अधिकतम वापसी के आंकड़ों को स्वचालित रूप से रिकॉर्ड कर सकता है।

उपयोगः इस टेम्पलेट में लॉगप्रॉफिट फ़ंक्शन को $.LogProfit के रूप में बदल दिया गया है। और लॉगस्टेटस के स्थान पर $.ProfitSummary ((प्रारंभिक धन) की वापसी स्ट्रिंग जोड़ी गई है।

उदाहरण के लिएः function main (() { while ((true) { var t = exchange.GetTicker ((); $ लॉगप्रॉफ़िट ((t.Last); लॉग स्टेटस (($.ProfitSummary ((10000)); नींद (((3600000); } }

परिणाम दिखा रहा हैः

1 दिनः 78.44 युआन ((-0.537%), मासिक -16.781%, वार्षिक -204.169%, 1.106% को वापस ले लिया पिछले 1 दिनः 176.08 युआन ((1.221%), मासिक 38.226%, वार्षिक 465.087%, 1.236% की वापसी 7 वें दिनः 771.74 युआन ((5.599%), 24.141% मासिक, 293.719% वार्षिक, 1.517% वापस ले लिया गया पिछले 7 दिनों मेंः 223.15 युआन ((1.64%), 7.071 प्रतिशत मासिक, 86.039 प्रतिशत वार्षिक, 0.9 प्रतिशत वापसी 30 तारीखः 157031 युआन ((12.094%), 12.111% मासिक, 147.352% वार्षिक, 3.251% वापस ले लिया पिछले 30 दिनों मेंः 200.12 युआन ((1.565%)), 1.567% मासिक, 19.076%, 1.521% वार्षिक निकासी कुलः 4554.11 युआन ((45.541%), अधिकतम निकासी 3.251%, सांख्यिकीय समय 74 दिन 23 घंटे


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

संबंधित

अधिक

जुन्फेंग91इस टेम्पलेट का उपयोग करके, पुनः परीक्षण बहुत धीमा है।

nxtplayerबहुत बहुत धन्यवाद।

लोगाया संपर्क के लिए संपर्क करें

यवक्सधन्यवाद, मुझे वास्तव में इसकी आवश्यकता है।

मोमोक्ससमर्थन