লাভের পরিসংখ্যান

লেখক:চুনকো, তারিখঃ ২০১৬-০৮-০১ 00:29:26
ট্যাগঃসরঞ্জাম

পরিসংখ্যানগত আয়

BotVS এর আয় পরিসংখ্যান শুধুমাত্র একটি বক্ররেখা রেকর্ড করতে পারে; প্রযুক্তিগত বিশ্লেষণ করা যাবে না। এই টেমপ্লেটটি স্বয়ংক্রিয়ভাবে সর্বশেষ 1, গত 1, সর্বশেষ 7, সর্বশেষ 7, সর্বশেষ 30, সর্বশেষ 30 দিনের আয়, মুনাফা, মাসিক মুনাফা, বার্ষিক মুনাফা এবং সর্বাধিক প্রত্যাহারের সমস্ত সময় পরিসংখ্যান করতে সক্ষম।

ব্যবহারঃ এই টেমপ্লেটটি চালু করুন, মূল নীতির পরিবর্তে LogProfit ফাংশনটি $.LogProfit-এ পরিবর্তন করুন। এবং LogStatus-এর জায়গায় $.ProfitSummary (প্রাথমিক মূলধন) এর রিটার্ন স্ট্রিং যুক্ত করুন।

উদাহরণস্বরূপঃ function main (() { while ((true) { var t = exchange.GetTicker ((); $.LogProfit ((t.Last); LogStatus (($.ProfitSummary ((10000)); Sleep ((৩,৬০০,০০০); } }

ফলাফল দেখানো হচ্ছেঃ

১ম দিনঃ সংগ্রহ - ৭৮.৪৪ ইউয়ান ((-০.৫৩৭%), মাসিক - ১৬.৭৮১%, বার্ষিক - ২০৪.১৬৯%, প্রত্যাহার ১.১০৬% গত ১ দিনঃ সংগ্রহ ১৭৬.০৮ ইউয়ান ((১.২২১%), মাসিক ৩৮.২২৬%, বার্ষিক ৪৬৫.০৮৭%, প্রত্যাহার ১.২৩৬% ৭ তারিখঃ সংগ্রহ ৭৭১.৭৪ ইউয়ান ((৫,৫৯৯%), মাসিক ২৪.১৪১%, বার্ষিক ২৯৩.৭১৯%, প্রত্যাহার ১.৫১৭% গত ৭ দিনঃ সংগ্রহ ২২৩.১৫ ইউয়ান ((১.৬৪%), মাসিক ৭.০৭১%, বার্ষিক ৮৬.০৩৯%, প্রত্যাহার ০.৯% ৩০ তারিখঃ সংগ্রহ ১৫৭০.৩১ ইউয়ান ((১২.০৯৪%), মাসিক ১২.১১%, বার্ষিক ১৪৭.৩৫২%, প্রত্যাহার ৩.২৫১% গত ৩০ দিনঃ সংগ্রহ ২০০.১২ ইউয়ান ((১.৫৬৫%), মাসিক ১৫৬৭%, বার্ষিক ১৯.০৭৬%, প্রত্যাহার ১৫২১% মোটঃ ৪৫৫৪.১১ ইউয়ান ((৪৫.৫৪১%) এবং সর্বোচ্চ প্রত্যাহার ৩.২৫১%


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

সম্পর্কিত

আরো

চুংফেন ৯১এই টেমপ্লেটটি ব্যবহার করে, পুনরায় পরীক্ষা করা খুব ধীর।

nxtplayerঅনেক ধন্যবাদ।

লোগাআপনি কি যোগাযোগের জন্য অনুরোধ করতে পারেন?

YWXধন্যবাদ, ঠিক আমার দরকার ছিল।

মোমোক্সসমর্থন