Renda estatística
A estatística de ganhos do BotVS registra apenas uma curva. Não é possível fazer análise técnica. Este modelo permite estatísticas automáticas de ganhos, ganhos, ganhos mensais, ganhos anuais, ganhos anuais e retornos máximos dos últimos 1 dias, últimos 1 dias, últimos 7 dias, últimos 7 dias, últimos 30 dias e de todos os tempos.
Como usar: Introduza este modelo, substituindo a função LogProfit da política original por $.LogProfit. e adicione a cadeia de retorno de $.ProfitSummary ((capital inicial) no lugar do LogStatus.
Por exemplo: função main() { while (true) { Var t = exchange.GetTicker (); $0.LogProfit ((t.Last); LogStatus (($.ProfitSummary ((10000)); Sleep ((3600000); Não. Não.
Mostrar resultados:
1o dia: recebimento de 78,44 yuan ((-0,537%), variação mensal de 16,781%, variação anual de 204,169%, retração de 1,106% No último dia 1: recebimento de 176.08 yuans ((1.221%), variação mensal de 38.226%, variação anual de 465.087%, retração de 1.236% 7 de julho: recebimento de 771.74 yuan ((5.599%), variação mensal de 24.141%, variação anual de 293.719%, retração de 1.517% No último dia 7: recebimento de 223,15 yuans ((1,64%), variação mensal de 7,071%, variação anual de 86,039%, retração de 0,9% 30 de junho: receita de 1570.31 yuans ((12.094%), variação mensal de 12.111%, variação anual de 147.352%, retração de 3.251% No último dia 30: recebimento de 200.12 yuan ((1.565%), 1.567 por mês, 19.076 por ano e 1.521 por cento de retirada Total: recebimento de 4554.11 yuans ((45.541%), máximo de retorno de 3.251%, período estatístico de 74 dias e 23 horas
$.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); } }
Xunfeng91Com este modelo, a recuperação é lenta.
NxtplayerMuito obrigado.
LogaOu não usar o endereço de contato
YWXObrigada, precisava mesmo disso.
MomoxApoio