Kadar pulangan statistik
Statistik pendapatan BotVS hanya merakam satu kurva. Tidak boleh melakukan analisis teknikal. Templat ini dapat membuat statistik automatik untuk pendapatan, pendapatan bulanan, pendapatan tahunan, pendapatan tahunan, dan pulangan maksimum pada hari terakhir, hari terakhir, hari terakhir, hari terakhir, hari terakhir, hari terakhir, hari terakhir, hari terakhir, hari terakhir, hari terakhir, hari terakhir dan semua masa.
Penggunaan: Memperkenalkan templat ini, menggantikan fungsi LogProfit pada dasar asalnya dengan $.LogProfit. dan menambah tali pulangan $.ProfitSummary (Pengeluaran awal) di tempat LogStatus.
Contohnya: fungsi utama (() { while ((true) { var t = exchange.GetTicker (); $.LogProfit ((t.Last); LogStatus (($.ProfitSummary ((10000)); Sleep ((3600000); {C:$0000FF} {C:$0000FF}
Menunjukkan kesan:
Hari 1: Pengambilan -78.44 yuan ((-0.537%), perbulan - 16.781%, pertahunan - 204.169%, penarikan balik 1.106% Pada 1 hari lepas: Pengumpulan 176.08 yuan ((1.221%), pengubahsuaian bulanan 38.226%, pengubahsuaian tahunan 465.087%, penarikan balik 1.236% Hari ke-7: Pengumpulan 771.74 yuan ((5.599%), penyesuaian bulanan 24.141%, penyesuaian tahunan 293.719%, penarikan balik 1.517% 7 hari yang lalu: Pengumpulan 223.15 yuan ((1.64%), perbulan 7.071%, tahunan 86.039%, mundur 0.9% 30: Pengumpulan 1570.31 yuan ((12.094%), perbulan 12.111%, pertahun 147.352%, pengunduran diri 3.251% 30 hari yang lalu: Pengumpulan 200.12 yuan ((1.565%), 1.567% bulanan, 19.076%, 1.521% tahunan Jumlah: 4554.11 yuan ((45.541%), maksimum penarikan balik 3.251%, tempoh 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); } }
xunfeng91Dengan menggunakan templat ini, kadar pengulangan adalah perlahan.
nxtplayerTerima kasih banyak.
LogaAdakah anda mahu menggunakan contact info?
ywxTerima kasih, ini yang saya perlukan.
momoxSokongan