moneropro/app/charts/views.py
Kumi 7ada7f9d26
Some checks are pending
Docker / build (push) Waiting to run
refactor(auth): use is_superuser check for admin actions
Replaced specific username checks for "Administrator" with `is_superuser`
attribute to determine admin access. This improves security and flexibility
by leveraging Django's built-in permissions and roles system, facilitating
maintenance and potential role adjustments without code changes.
2024-11-12 08:32:48 +01:00

5050 lines
178 KiB
Python

from ctypes import sizeof
from os import readlink
from django.shortcuts import render
from django.http import HttpResponseRedirect
from django.urls import reverse
import requests
import json
from .models import *
from .forms import *
import datetime
from datetime import date, timedelta
from dateutil.relativedelta import relativedelta
from requests.exceptions import ConnectionError, Timeout, TooManyRedirects
import math
import locale
import pandas as pd
from . import asynchronous
from . import synchronous
from operator import truediv
from datetime import timezone
import aiohttp
import asyncio
import pygsheets
from django.contrib.auth.decorators import login_required
from requests import Session
from django.contrib.staticfiles.storage import staticfiles_storage
from charts.synchronous import get_history_function
####################################################################################
# Set some parameters
####################################################################################
locale.setlocale(locale.LC_ALL, 'en_US.utf8')
####################################################################################
# Useful functions for admins
####################################################################################
# Add manually a new entrance for coin
# To be used when there's a problem with the API
@login_required
def add_coin(request):
if not request.user.is_superuser:
return render(request, 'users/error.html')
if request.method != 'POST':
#create new page with blank form
form = CoinForm()
else:
#process data and submit article
form = CoinForm(data=request.POST)
if form.is_valid():
add_coin = form.save(commit=False)
coin = Coin.objects.filter(name=add_coin.name).filter(date=add_coin.date)
if coin:
for item in coin:
item.delete()
print('coin found and deleted')
else:
print('coin not found')
add_coin.stocktoflow = (100/add_coin.inflation)**1.65
print(add_coin.name)
print(add_coin.date)
print(add_coin.priceusd)
print(add_coin.pricebtc)
print(add_coin.inflation)
print(add_coin.transactions)
print(add_coin.hashrate)
print(add_coin.stocktoflow)
print(add_coin.supply)
print(add_coin.fee)
print(add_coin.revenue)
print(add_coin.blocksize)
print(add_coin.difficulty)
add_coin.save()
print('coin saved')
message = 'Coin added to the database!'
coin = Coin.objects.filter(name=add_coin.name).get(date=add_coin.date)
print('GET: ' + str(coin.name) + ' ' +str(coin.date) + ' ' +str(coin.priceusd) + ' ' +str(coin.pricebtc) + ' ' +str(coin.inflation) + ' ' +str(coin.transactions) + ' ' +str(coin.hashrate) + ' ' +str(coin.stocktoflow) + ' ' +str(coin.supply) + ' ' + ' ' +str(coin.fee) + ' ' + ' ' +str(coin.revenue))
print('updating p2pool')
synchronous.update_p2pool()
context = {'form': form, 'message': message}
return render(request, 'charts/add_coin.html', context)
else:
message = 'An error has happened. Try again.'
context = {'form': form, 'message': message}
return render(request, 'charts/add_coin.html', context)
context = {'form': form}
return render(request, 'charts/add_coin.html', context)
# Get all history for metrics of a certain coin named as 'symbol'
# Only authorized users can download all price data via URL request
@login_required
def get_history(request, symbol, start_time=None, end_time=None):
if not request.user.is_superuser:
return render(request, 'users/error.html')
count = get_history_function(symbol, start_time, end_time)
if type(count) in [int, 'int']:
message = 'Total of ' + str(count) + ' data imported'
context = {'message': message}
else:
message = 'Failed to load the data'
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
# Populate database with rank history
# Only authorized users can do this
@login_required
def load_rank(request, symbol):
if not request.user.is_superuser:
return render(request, 'users/error.html')
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('Sheet8')
count = 0
values_mat = wks.get_values(start=(3,1), end=(9999,2), returnas='matrix')
print(len(values_mat))
Rank.objects.all().delete()
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][1]:
rank = Rank()
rank.name = symbol
rank.date = values_mat[k][0]
rank.rank = int(values_mat[k][1].replace(',', '.'))
if not(rank.rank) and not(rank.date):
break
else:
rank.save()
count += 1
else:
break
message = 'Total of ' + str(count) + ' data imported'
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
# Populate database with p2pool history
# Only authorized users can do this
@login_required
def load_p2pool(request):
if not request.user.is_superuser:
return render(request, 'users/error.html')
count = 0
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('p2pool')
values_mat = wks.get_values(start=(3,1), end=(9999,6), returnas='matrix')
P2Pool.objects.all().delete()
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][1]:
p2pool_stat = P2Pool()
p2pool_stat.date = values_mat[k][0]
p2pool_stat.miners = float(values_mat[k][1].replace(',', '.'))
p2pool_stat.hashrate = float(values_mat[k][2].replace(',', '.'))
p2pool_stat.percentage = float(values_mat[k][3].replace(',', '.'))
p2pool_stat.totalhashes = float(values_mat[k][4].replace(',', '.'))
p2pool_stat.totalblocksfound = float(values_mat[k][5].replace(',', '.'))
p2pool_stat.mini = False
p2pool_stat.save()
count += 1
#print('p2poolmini data saved - ' + str(p2pool_stat.date) + ' - ' + str(p2pool_stat.percentage) + ' - ' + str(p2pool_stat.miners))
else:
break
wks = sh.worksheet_by_title('p2poolmini')
values_mat = wks.get_values(start=(3,1), end=(9999,6), returnas='matrix')
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][1]:
p2pool_stat = P2Pool()
p2pool_stat.date = values_mat[k][0]
p2pool_stat.miners = float(values_mat[k][1].replace(',', '.'))
p2pool_stat.hashrate = float(values_mat[k][2].replace(',', '.'))
p2pool_stat.percentage = float(values_mat[k][3].replace(',', '.'))
p2pool_stat.totalhashes = float(values_mat[k][4].replace(',', '.'))
p2pool_stat.totalblocksfound = float(values_mat[k][5].replace(',', '.'))
p2pool_stat.mini = True
p2pool_stat.save()
count += 1
#print('p2poolmini data saved - ' + str(p2pool_stat.date) + ' - ' + str(p2pool_stat.percentage) + ' - ' + str(p2pool_stat.miners))
else:
break
message = 'Total of ' + str(count) + ' data imported'
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
# Populate database with dominance history
# Only authorized users can do this
@login_required
def load_dominance(request, symbol):
if not request.user.is_superuser:
return render(request, 'users/error.html')
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('Sheet7')
count = 0
values_mat = wks.get_values(start=(3,1), end=(9999,2), returnas='matrix')
Dominance.objects.all().delete()
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][1]:
dominance = Dominance()
dominance.name = symbol
dominance.date = values_mat[k][0]
dominance.dominance = float(values_mat[k][1].replace(',', '.'))
if not(dominance.dominance) and not(dominance.date):
break
else:
dominance.save()
count += 1
else:
break
message = 'Total of ' + str(count) + ' data imported'
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
# Import Reddit history from file on static folder
# Only authorized users can do this
@login_required
def importer(request):
if not request.user.is_superuser:
return render(request, 'users/error.html')
count = 0
Social.objects.all().delete()
filename = staticfiles_storage.path('import.txt')
with open(filename) as f:
content = f.readlines()
for line in content:
data = json.loads(line)
symbol = data['name']
item = data['subscriberCountTimeSeries']
dates = []
subscriberCount = []
commentsPerHour = []
postsPerHour = []
for unit in item:
date_now = datetime.datetime.strptime('1970-01-01', '%Y-%m-%d')
date_now += timedelta(int(unit['utcDay']))
dates.append(datetime.datetime.strftime(date_now, '%Y-%m-%d'))
value = float(unit['count'])
subscriberCount.append(value)
item = data['commentsPerHourTimeSeries']
for unit in item:
value = float(unit['commentsPerHour'])
commentsPerHour.append(value)
item = data['postsPerHourTimeSeries']
for unit in item:
value = float(unit['postsPerHour'])
postsPerHour.append(value)
for i in range(len(dates)-1):
social = Social()
social.name = symbol
social.date = dates[i]
if i >= len(dates) - len(subscriberCount):
social.subscriberCount = subscriberCount[i-len(subscriberCount)]
else:
social.subscriberCount = 0
if i >= len(dates) - len(commentsPerHour):
social.commentsPerHour = commentsPerHour[i-(len(dates) - len(commentsPerHour))]
else:
social.commentsPerHour = 0
if i >= len(dates) - len(postsPerHour):
social.postsPerHour = postsPerHour[i-(len(dates) - len(postsPerHour))]
else:
social.postsPerHour = 0
social.save()
count += 1
message = 'Total of ' + str(count) + ' data imported'
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
# Erase all data for a certain coin
# Only authorized users can do this
@login_required
def reset(request, symbol):
if not request.user.is_superuser:
return render(request, 'users/error.html')
Coin.objects.filter(name=symbol).all().delete()
message = 'All data for ' + str(symbol) + ' erased'
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
# Populate database with especific chart variables
# Only authorized users can do this
@login_required
def populate_database(request):
if not request.user.is_superuser:
return render(request, 'users/error.html')
count = 0
###################################################################
# SF model charts
###################################################################
print('Populating database for sfmodel.html, sfmodelin.html and pricesats.html, wait a moment...')
Sfmodel.objects.all().delete()
timevar = 1283
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
previous_supply = 0
supply = 0
sf_aux = 0
count_aux = 0
coins = Coin.objects.order_by('date').filter(name='xmr')
for coin in coins:
if coin.priceusd < 0.1:
coin.priceusd = 0.1
coin.pricebtc = 0.000001
if coin.stocktoflow > sf_aux*1.3+100:
coin.stocktoflow = sf_aux
sf_aux = coin.stocktoflow
if coin.supply > 0:
supply = int(coin.supply)*10**12
else:
supply = previous_supply
count += 1
count_aux += 1
data = Sfmodel()
data.date = coin.date
data.priceusd = coin.priceusd
data.pricebtc = coin.pricebtc
data.stocktoflow = coin.stocktoflow
data.color = 30*coin.pricebtc/(count*delta + v0)
date_aux1 = datetime.datetime.strptime('2017-12-29', '%Y-%m-%d')
date_aux2 = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
date_aux2 = datetime.datetime.strptime(date_aux2, '%Y-%m-%d')
if date_aux2 < date_aux1:
lastprice = coin.priceusd
current_inflation = coin.inflation
data.greyline = 0
count_aux = 0
else:
day = date_aux2 - timedelta(timevar)
coin_aux1 = Coin.objects.filter(name='xmr').get(date=day)
day = date_aux2 - timedelta(timevar+1)
coin_aux2 = Coin.objects.filter(name='xmr').get(date=day)
date_aux3 = datetime.datetime.strptime('2017-12-29', '%Y-%m-%d')
if date_aux3 + timedelta(int(count_aux*2)) < datetime.datetime.strptime('2021-07-03', '%Y-%m-%d'):
day = date_aux3 + timedelta(int(count_aux*2))
coin_aux3 = Coin.objects.filter(name='xmr').get(date=day)
if coin_aux3:
if (coin_aux3.inflation/current_inflation) > 1.2 or (coin_aux3.inflation/current_inflation) < 0.8:
coin_aux3.inflation = current_inflation
else:
current_inflation = coin_aux3.inflation
supply2 = supply
else:
reward2 = (2**64 -1 - supply2) >> 19
if reward2 < 0.6*(10**12):
reward2 = 0.6*(10**12)
supply2 += int(720*reward2)
current_inflation = 100*reward2*720*365/supply2
if coin_aux1 and coin_aux2:
lastprice += (coin_aux1.priceusd/coin_aux2.priceusd-1)*lastprice
actualprice = lastprice*(math.sqrt(coin.inflation/current_inflation))
data.greyline = actualprice
else:
data.greyline = 0
previous_supply = supply
data.save()
count_aux = 0
for count_aux in range(700):
date_now = date.today() + timedelta(count_aux)
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*(10**12)
supply += int(720*reward)
data = Sfmodel()
data.date = datetime.datetime.strftime(date_now, '%Y-%m-%d')
data.stocktoflow = (100/(100*reward*720*365/supply))**1.65
data.priceusd = 0
data.pricebtc = 0
data.greyline = 0
data.color = 0
data.priceusd = 0
data.greyline = 0
data.save()
count += 1
###################################################################
# Daily Emissions, inflation charts and coins against bitcoin
###################################################################
print('Populating database for dailyemission.html and dailyemissionntv.html, wait a moment...')
DailyData.objects.all().delete()
supply_btc = 0
supply_xmr = 0
count_aux = 0
coins_btc = Coin.objects.order_by('date').filter(name='btc')
for coin_btc in coins_btc:
count_aux += 1
data = DailyData()
data.date = datetime.datetime.strftime(coin_btc.date, '%Y-%m-%d')
if coin_btc.blocksize > 0:
data.btc_blocksize = coin_btc.blocksize
data.btc_transactions = coin_btc.transactions
else:
data.btc_blocksize = 0
data.btc_transactions = 0
if coin_btc.difficulty > 0:
data.btc_difficulty = coin_btc.difficulty
else:
data.btc_difficulty = 0
if coin_btc.transactions == 0:
data.btc_transcostusd = 0
data.btc_transcostntv = 0
else:
if coin_btc.fee*coin_btc.priceusd/coin_btc.transactions < 0.0001:
data.btc_transcostusd = 0
data.btc_transcostntv = 0
else:
data.btc_transcostusd = coin_btc.fee*coin_btc.priceusd/coin_btc.transactions
data.btc_transcostntv = coin_btc.fee/coin_btc.transactions
if coin_btc.revenue < 0.000001 or coin_btc.priceusd < 0.001:
data.btc_minerrevntv = 0
data.btc_minerrevusd = 0
data.btc_commitntv = 0
data.btc_commitusd = 0
data.btc_priceusd = 0
data.btc_marketcap = 0
else:
data.btc_minerrevntv = coin_btc.revenue
data.btc_minerrevusd = coin_btc.revenue*coin_btc.priceusd
data.btc_commitntv = coin_btc.hashrate/(coin_btc.revenue)
data.btc_commitusd = coin_btc.hashrate/(coin_btc.revenue*coin_btc.priceusd)
data.btc_priceusd = coin_btc.priceusd
data.btc_marketcap = coin_btc.priceusd*coin_btc.supply
if coin_btc.supply == 0:
data.btc_minerrevcap = 0
else:
data.btc_minerrevcap = 365*100*coin_btc.revenue/coin_btc.supply
if coin_btc.priceusd:
if coin_btc.priceusd/30 > 0.02:
data.btc_return = coin_btc.priceusd/30
else:
data.btc_return = 0
else:
data.btc_return = 0
if coin_btc.inflation > 0:
data.btc_inflation = coin_btc.inflation
else:
data.btc_inflation = 0
if coin_btc.supply > 0:
data.btc_supply = coin_btc.supply
else:
data.btc_supply = 0
if coin_btc.supply - supply_btc < 0.000001:
data.btc_minerfeesntv = 0
data.btc_minerfeesusd = 0
data.btc_emissionntv = 0
else:
data.btc_minerfeesntv = coin_btc.revenue - coin_btc.supply + supply_btc
data.btc_minerfeesusd = (coin_btc.revenue - coin_btc.supply + supply_btc)*coin_btc.priceusd
data.btc_emissionntv = coin_btc.supply - supply_btc
if (coin_btc.supply - supply_btc)*coin_btc.priceusd < 1000:
data.btc_emissionusd = 0
else:
data.btc_emissionusd = (coin_btc.supply - supply_btc)*coin_btc.priceusd
supply_btc = coin_btc.supply
if count_aux > 1750:
coins_xmr = Coin.objects.filter(name='xmr').filter(date=coin_btc.date)
if coins_xmr:
for coin_xmr in coins_xmr:
if coin_xmr.blocksize > 0:
data.xmr_blocksize = coin_xmr.blocksize
else:
data.xmr_blocksize = 0
if coin_xmr.difficulty > 0:
data.xmr_difficulty = coin_xmr.difficulty
else:
data.xmr_difficulty = 0
if coin_xmr.priceusd < 0.001:
data.xmr_pricebtc = 0
data.xmr_priceusd = 0
data.xmr_marketcap = 0
else:
data.xmr_pricebtc = coin_xmr.pricebtc
data.xmr_priceusd = coin_xmr.priceusd
data.xmr_marketcap = coin_xmr.priceusd*coin_xmr.supply
if coin_btc.supply > 0 and coin_btc.transactions > 0:
data.xmr_transactions = coin_xmr.transactions
data.xmr_metcalfeusd = coin_btc.priceusd*coin_xmr.transactions*coin_xmr.supply/(coin_btc.supply*coin_btc.transactions)
data.xmr_metcalfebtc = coin_xmr.transactions*coin_xmr.supply/(coin_btc.supply*coin_btc.transactions)
else:
data.xmr_metcalfeusd = 0
data.xmr_metcalfebtc = 0
data.xmr_transactions = 0
if data.xmr_metcalfeusd < 0.23:
data.xmr_metcalfeusd = 0
data.xmr_metcalfebtc = 0
if coin_xmr.transactions == 0:
data.xmr_transacpercentage = 0
data.xmr_transcostusd = 0
data.xmr_transcostntv = 0
else:
if coin_xmr.fee*coin_xmr.priceusd/coin_xmr.transactions < 0.0001:
data.xmr_transcostusd = 0
data.xmr_transcostntv = 0
else:
data.xmr_transcostusd = coin_xmr.fee*coin_xmr.priceusd/coin_xmr.transactions
data.xmr_transcostntv = coin_xmr.fee/coin_xmr.transactions
if coin_btc.transactions == 0:
data.xmr_transacpercentage = 0
else:
data.xmr_transacpercentage = coin_xmr.transactions/coin_btc.transactions
if coin_xmr.revenue < 0.000001 or coin_xmr.priceusd < 0.001:
data.xmr_minerrevntv = 0
data.xmr_minerrevusd = 0
data.xmr_commitntv = 0
data.xmr_commitusd = 0
else:
data.xmr_minerrevntv = coin_xmr.revenue
data.xmr_minerrevusd = coin_xmr.revenue*coin_xmr.priceusd
data.xmr_commitntv = coin_xmr.hashrate/(coin_xmr.revenue)
data.xmr_commitusd = coin_xmr.hashrate/(coin_xmr.revenue*coin_xmr.priceusd)
if coin_xmr.supply == 0:
data.xmr_minerrevcap = 0
else:
data.xmr_minerrevcap = 365*100*coin_xmr.revenue/coin_xmr.supply
if coin_xmr.priceusd/5.01 > 0.02:
data.xmr_return = coin_xmr.priceusd/5.01
else:
data.xmr_return = 0
if coin_xmr.inflation > 0:
data.xmr_inflation = coin_xmr.inflation
else:
data.xmr_inflation = 0
if coin_xmr.supply > 0:
data.xmr_supply = coin_xmr.supply
else:
data.xmr_supply = 0
if coin_xmr.supply - supply_xmr < 0.000001:
data.xmr_minerfeesntv = 0
data.xmr_minerfeesusd = 0
data.xmr_emissionntv = 0
else:
data.xmr_minerfeesntv = coin_xmr.revenue - coin_xmr.supply + supply_xmr
data.xmr_minerfeesusd = (coin_xmr.revenue - coin_xmr.supply + supply_xmr)*coin_xmr.priceusd
data.xmr_emissionntv = coin_xmr.supply - supply_xmr
if (coin_xmr.supply - supply_xmr)*coin_xmr.priceusd < 1000:
data.xmr_emissionusd = 0
else:
data.xmr_emissionusd = (coin_xmr.supply - supply_xmr)*coin_xmr.priceusd
supply_xmr = coin_xmr.supply
else:
data.xmr_emissionntv = 0
data.xmr_emissionusd = 0
data.xmr_inflation = 0
data.xmr_supply = 0
data.xmr_return = 0
data.xmr_minerrevntv = 0
data.xmr_minerrevusd = 0
data.xmr_minerfeesntv = 0
data.xmr_minerfeesusd = 0
data.xmr_transcostntv = 0
data.xmr_transcostusd = 0
data.xmr_commitntv = 0
data.xmr_commitusd = 0
data.xmr_metcalfeusd = 0
data.xmr_metcalfebtc = 0
data.xmr_pricebtc = 0
data.xmr_priceusd = 0
data.xmr_transacpercentage = 0
data.xmr_marketcap = 0
data.xmr_minerrevcap = 0
data.xmr_transactions = 0
data.xmr_blocksize = 0
data.xmr_difficulty = 0
coins_dash = Coin.objects.filter(name='dash').filter(date=coin_btc.date)
if coins_dash:
for coin_dash in coins_dash:
if coin_dash.transactions > 0:
data.dash_transactions = coin_dash.transactions
else:
data.dash_transactions = 0
if coin_dash.inflation > 0:
data.dash_inflation = coin_dash.inflation
else:
data.dash_inflation = 0
if coin_dash.priceusd > 0:
data.dash_marketcap = coin_dash.priceusd*coin_dash.supply
else:
data.dash_marketcap = 0
else:
data.dash_inflation = 0
data.dash_marketcap = 0
data.dash_transactions = 0
else:
data.xmr_emissionntv = 0
data.xmr_emissionusd = 0
data.xmr_inflation = 0
data.xmr_supply = 0
data.xmr_return = 0
data.dash_inflation = 0
data.dash_marketcap = 0
data.dash_transactions = 0
data.xmr_marketcap = 0
data.xmr_minerrevntv = 0
data.xmr_minerrevusd = 0
data.xmr_minerfeesntv = 0
data.xmr_minerfeesusd = 0
data.xmr_transcostntv = 0
data.xmr_transcostusd = 0
data.xmr_commitntv = 0
data.xmr_commitusd = 0
data.xmr_metcalfeusd = 0
data.xmr_metcalfebtc = 0
data.xmr_pricebtc = 0
data.xmr_priceusd = 0
data.xmr_transacpercentage = 0
data.xmr_minerrevcap = 0
data.xmr_transactions = 0
data.xmr_blocksize = 0
data.xmr_difficulty = 0
if count_aux > 2800:
coins_zcash = Coin.objects.filter(name='zec').filter(date=coin_btc.date)
if coins_zcash:
for coin_zcash in coins_zcash:
if coin_zcash.transactions > 0:
data.zcash_transactions = coin_zcash.transactions
else:
data.zcash_transactions = 0
if coin_zcash.inflation > 0:
data.zcash_inflation = coin_zcash.inflation
else:
data.zcash_inflation = 0
if coin_zcash.priceusd > 0:
data.zcash_marketcap = coin_zcash.priceusd*coin_zcash.supply
else:
data.zcash_marketcap = 0
else:
data.zcash_inflation = 0
data.zcash_marketcap = 0
data.zcash_transactions = 0
else:
data.zcash_inflation = 0
data.zcash_marketcap = 0
data.zcash_transactions = 0
if count_aux > 3600:
coins_grin = Coin.objects.filter(name='grin').filter(date=coin_btc.date)
if coins_grin:
for coin_grin in coins_grin:
if coin_grin.transactions > 0:
data.grin_transactions = coin_grin.transactions
else:
data.grin_transactions = 0
if coin_grin.inflation > 0:
data.grin_inflation = coin_grin.inflation
else:
data.grin_inflation = 0
if coin_grin.priceusd > 0:
data.grin_marketcap = coin_grin.priceusd*coin_grin.supply
else:
data.grin_marketcap = 0
else:
data.grin_inflation = 0
data.grin_marketcap = 0
data.grin_transactions = 0
else:
data.grin_inflation = 0
data.grin_marketcap = 0
data.grin_transactions = 0
socials = Social.objects.filter(name='Bitcoin').filter(date=coin_btc.date)
if socials:
for social in socials:
data.btc_subscriberCount = social.subscriberCount
data.btc_commentsPerHour = social.commentsPerHour
data.btc_postsPerHour = social.postsPerHour
else:
data.btc_subscriberCount = 0
data.btc_commentsPerHour = 0
data.btc_postsPerHour = 0
socials = Social.objects.filter(name='Monero').filter(date=coin_btc.date)
if socials:
for social in socials:
data.xmr_subscriberCount = social.subscriberCount
data.xmr_commentsPerHour = social.commentsPerHour
data.xmr_postsPerHour = social.postsPerHour
else:
data.xmr_subscriberCount = 0
data.xmr_commentsPerHour = 0
data.xmr_postsPerHour = 0
socials = Social.objects.filter(name='CryptoCurrency').filter(date=coin_btc.date)
if socials:
for social in socials:
data.crypto_subscriberCount = social.subscriberCount
data.crypto_commentsPerHour = social.commentsPerHour
data.crypto_postsPerHour = social.postsPerHour
else:
data.crypto_subscriberCount = 0
data.crypto_commentsPerHour = 0
data.crypto_postsPerHour = 0
data.save()
count += 1
message = 'Total of ' + str(count) + ' data generated'
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
# Update database with between certain dates
# Only authorized users can do this
@login_required
def update_database_admin(request, date_from, date_to):
if not request.user.is_superuser:
return render(request, 'users/error.html')
synchronous.update_database(date_from, date_to)
message = 'Database updated from ' + str(date_from) + ' to ' + str(date_to)
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
if not request.user.is_superuser:
return render(request, 'users/error.html')
count = 0
###################################################################
# SF model charts
###################################################################
print('Populating database for sfmodel.html, sfmodelin.html and pricesats.html, wait a moment...')
Sfmodel.objects.all().delete()
timevar = 1283
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
previous_supply = 0
supply = 0
sf_aux = 0
count_aux = 0
coins = Coin.objects.order_by('date').filter(name='xmr')
for coin in coins:
if coin.priceusd < 0.1:
coin.priceusd = 0.1
coin.pricebtc = 0.000001
if coin.stocktoflow > sf_aux*1.3+100:
coin.stocktoflow = sf_aux
sf_aux = coin.stocktoflow
if coin.supply > 0:
supply = int(coin.supply)*10**12
else:
supply = previous_supply
count += 1
count_aux += 1
data = Sfmodel()
data.date = coin.date
data.priceusd = coin.priceusd
data.pricebtc = coin.pricebtc
data.stocktoflow = coin.stocktoflow
data.color = 30*coin.pricebtc/(count*delta + v0)
date_aux1 = datetime.datetime.strptime('2017-12-29', '%Y-%m-%d')
date_aux2 = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
date_aux2 = datetime.datetime.strptime(date_aux2, '%Y-%m-%d')
if date_aux2 < date_aux1:
lastprice = coin.priceusd
current_inflation = coin.inflation
data.greyline = 0
count_aux = 0
else:
day = date_aux2 - timedelta(timevar)
coin_aux1 = Coin.objects.filter(name='xmr').get(date=day)
day = date_aux2 - timedelta(timevar+1)
coin_aux2 = Coin.objects.filter(name='xmr').get(date=day)
date_aux3 = datetime.datetime.strptime('2017-12-29', '%Y-%m-%d')
if date_aux3 + timedelta(int(count_aux*2)) < datetime.datetime.strptime('2021-07-03', '%Y-%m-%d'):
day = date_aux3 + timedelta(int(count_aux*2))
coin_aux3 = Coin.objects.filter(name='xmr').get(date=day)
if coin_aux3:
if (coin_aux3.inflation/current_inflation) > 1.2 or (coin_aux3.inflation/current_inflation) < 0.8:
coin_aux3.inflation = current_inflation
else:
current_inflation = coin_aux3.inflation
supply2 = supply
else:
reward2 = (2**64 -1 - supply2) >> 19
if reward2 < 0.6*(10**12):
reward2 = 0.6*(10**12)
supply2 += int(720*reward2)
current_inflation = 100*reward2*720*365/supply2
if coin_aux1 and coin_aux2:
lastprice += (coin_aux1.priceusd/coin_aux2.priceusd-1)*lastprice
actualprice = lastprice*(math.sqrt(coin.inflation/current_inflation))
data.greyline = actualprice
else:
data.greyline = 0
previous_supply = supply
data.save()
count_aux = 0
for count_aux in range(700):
date_now = date.today() + timedelta(count_aux)
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*(10**12)
supply += int(720*reward)
data = Sfmodel()
data.date = datetime.datetime.strftime(date_now, '%Y-%m-%d')
data.stocktoflow = (100/(100*reward*720*365/supply))**1.65
data.priceusd = 0
data.pricebtc = 0
data.greyline = 0
data.color = 0
data.priceusd = 0
data.greyline = 0
data.save()
count += 1
###################################################################
# Daily Emissions, inflation charts and coins against bitcoin
###################################################################
print('Populating database for dailyemission.html and dailyemissionntv.html, wait a moment...')
DailyData.objects.all().delete()
supply_btc = 0
supply_xmr = 0
count_aux = 0
coins_btc = Coin.objects.order_by('date').filter(name='btc')
for coin_btc in coins_btc:
count_aux += 1
data = DailyData()
data.date = datetime.datetime.strftime(coin_btc.date, '%Y-%m-%d')
if coin_btc.blocksize > 0:
data.btc_blocksize = coin_btc.blocksize
data.btc_transactions = coin_btc.transactions
else:
data.btc_blocksize = 0
data.btc_transactions = 0
if coin_btc.difficulty > 0:
data.btc_difficulty = coin_btc.difficulty
else:
data.btc_difficulty = 0
if coin_btc.transactions == 0:
data.btc_transcostusd = 0
data.btc_transcostntv = 0
else:
if coin_btc.fee*coin_btc.priceusd/coin_btc.transactions < 0.0001:
data.btc_transcostusd = 0
data.btc_transcostntv = 0
else:
data.btc_transcostusd = coin_btc.fee*coin_btc.priceusd/coin_btc.transactions
data.btc_transcostntv = coin_btc.fee/coin_btc.transactions
if coin_btc.revenue < 0.000001 or coin_btc.priceusd < 0.001:
data.btc_minerrevntv = 0
data.btc_minerrevusd = 0
data.btc_commitntv = 0
data.btc_commitusd = 0
data.btc_priceusd = 0
data.btc_marketcap = 0
else:
data.btc_minerrevntv = coin_btc.revenue
data.btc_minerrevusd = coin_btc.revenue*coin_btc.priceusd
data.btc_commitntv = coin_btc.hashrate/(coin_btc.revenue)
data.btc_commitusd = coin_btc.hashrate/(coin_btc.revenue*coin_btc.priceusd)
data.btc_priceusd = coin_btc.priceusd
data.btc_marketcap = coin_btc.priceusd*coin_btc.supply
if coin_btc.supply == 0:
data.btc_minerrevcap = 0
else:
data.btc_minerrevcap = 365*100*coin_btc.revenue/coin_btc.supply
if coin_btc.priceusd:
if coin_btc.priceusd/30 > 0.02:
data.btc_return = coin_btc.priceusd/30
else:
data.btc_return = 0
else:
data.btc_return = 0
if coin_btc.inflation > 0:
data.btc_inflation = coin_btc.inflation
else:
data.btc_inflation = 0
if coin_btc.supply > 0:
data.btc_supply = coin_btc.supply
else:
data.btc_supply = 0
if coin_btc.supply - supply_btc < 0.000001:
data.btc_minerfeesntv = 0
data.btc_minerfeesusd = 0
data.btc_emissionntv = 0
else:
data.btc_minerfeesntv = coin_btc.revenue - coin_btc.supply + supply_btc
data.btc_minerfeesusd = (coin_btc.revenue - coin_btc.supply + supply_btc)*coin_btc.priceusd
data.btc_emissionntv = coin_btc.supply - supply_btc
if (coin_btc.supply - supply_btc)*coin_btc.priceusd < 1000:
data.btc_emissionusd = 0
else:
data.btc_emissionusd = (coin_btc.supply - supply_btc)*coin_btc.priceusd
supply_btc = coin_btc.supply
if count_aux > 1750:
coins_xmr = Coin.objects.filter(name='xmr').filter(date=coin_btc.date)
if coins_xmr:
for coin_xmr in coins_xmr:
if coin_xmr.blocksize > 0:
data.xmr_blocksize = coin_xmr.blocksize
else:
data.xmr_blocksize = 0
if coin_xmr.difficulty > 0:
data.xmr_difficulty = coin_xmr.difficulty
else:
data.xmr_difficulty = 0
if coin_xmr.priceusd < 0.001:
data.xmr_pricebtc = 0
data.xmr_priceusd = 0
data.xmr_marketcap = 0
else:
data.xmr_pricebtc = coin_xmr.pricebtc
data.xmr_priceusd = coin_xmr.priceusd
data.xmr_marketcap = coin_xmr.priceusd*coin_xmr.supply
if coin_btc.supply > 0 and coin_btc.transactions > 0:
data.xmr_transactions = coin_xmr.transactions
data.xmr_metcalfeusd = coin_btc.priceusd*coin_xmr.transactions*coin_xmr.supply/(coin_btc.supply*coin_btc.transactions)
data.xmr_metcalfebtc = coin_xmr.transactions*coin_xmr.supply/(coin_btc.supply*coin_btc.transactions)
else:
data.xmr_metcalfeusd = 0
data.xmr_metcalfebtc = 0
data.xmr_transactions = 0
if data.xmr_metcalfeusd < 0.23:
data.xmr_metcalfeusd = 0
data.xmr_metcalfebtc = 0
if coin_xmr.transactions == 0:
data.xmr_transacpercentage = 0
data.xmr_transcostusd = 0
data.xmr_transcostntv = 0
else:
if coin_xmr.fee*coin_xmr.priceusd/coin_xmr.transactions < 0.0001:
data.xmr_transcostusd = 0
data.xmr_transcostntv = 0
else:
data.xmr_transcostusd = coin_xmr.fee*coin_xmr.priceusd/coin_xmr.transactions
data.xmr_transcostntv = coin_xmr.fee/coin_xmr.transactions
if coin_btc.transactions == 0:
data.xmr_transacpercentage = 0
else:
data.xmr_transacpercentage = coin_xmr.transactions/coin_btc.transactions
if coin_xmr.revenue < 0.000001 or coin_xmr.priceusd < 0.001:
data.xmr_minerrevntv = 0
data.xmr_minerrevusd = 0
data.xmr_commitntv = 0
data.xmr_commitusd = 0
else:
data.xmr_minerrevntv = coin_xmr.revenue
data.xmr_minerrevusd = coin_xmr.revenue*coin_xmr.priceusd
data.xmr_commitntv = coin_xmr.hashrate/(coin_xmr.revenue)
data.xmr_commitusd = coin_xmr.hashrate/(coin_xmr.revenue*coin_xmr.priceusd)
if coin_xmr.supply == 0:
data.xmr_minerrevcap = 0
else:
data.xmr_minerrevcap = 365*100*coin_xmr.revenue/coin_xmr.supply
if coin_xmr.priceusd/5.01 > 0.02:
data.xmr_return = coin_xmr.priceusd/5.01
else:
data.xmr_return = 0
if coin_xmr.inflation > 0:
data.xmr_inflation = coin_xmr.inflation
else:
data.xmr_inflation = 0
if coin_xmr.supply > 0:
data.xmr_supply = coin_xmr.supply
else:
data.xmr_supply = 0
if coin_xmr.supply - supply_xmr < 0.000001:
data.xmr_minerfeesntv = 0
data.xmr_minerfeesusd = 0
data.xmr_emissionntv = 0
else:
data.xmr_minerfeesntv = coin_xmr.revenue - coin_xmr.supply + supply_xmr
data.xmr_minerfeesusd = (coin_xmr.revenue - coin_xmr.supply + supply_xmr)*coin_xmr.priceusd
data.xmr_emissionntv = coin_xmr.supply - supply_xmr
if (coin_xmr.supply - supply_xmr)*coin_xmr.priceusd < 1000:
data.xmr_emissionusd = 0
else:
data.xmr_emissionusd = (coin_xmr.supply - supply_xmr)*coin_xmr.priceusd
supply_xmr = coin_xmr.supply
else:
data.xmr_emissionntv = 0
data.xmr_emissionusd = 0
data.xmr_inflation = 0
data.xmr_supply = 0
data.xmr_return = 0
data.xmr_minerrevntv = 0
data.xmr_minerrevusd = 0
data.xmr_minerfeesntv = 0
data.xmr_minerfeesusd = 0
data.xmr_transcostntv = 0
data.xmr_transcostusd = 0
data.xmr_commitntv = 0
data.xmr_commitusd = 0
data.xmr_metcalfeusd = 0
data.xmr_metcalfebtc = 0
data.xmr_pricebtc = 0
data.xmr_priceusd = 0
data.xmr_transacpercentage = 0
data.xmr_marketcap = 0
data.xmr_minerrevcap = 0
data.xmr_transactions = 0
data.xmr_blocksize = 0
data.xmr_difficulty = 0
coins_dash = Coin.objects.filter(name='dash').filter(date=coin_btc.date)
if coins_dash:
for coin_dash in coins_dash:
if coin_dash.transactions > 0:
data.dash_transactions = coin_dash.transactions
else:
data.dash_transactions = 0
if coin_dash.inflation > 0:
data.dash_inflation = coin_dash.inflation
else:
data.dash_inflation = 0
if coin_dash.priceusd > 0:
data.dash_marketcap = coin_dash.priceusd*coin_dash.supply
else:
data.dash_marketcap = 0
else:
data.dash_inflation = 0
data.dash_marketcap = 0
data.dash_transactions = 0
else:
data.xmr_emissionntv = 0
data.xmr_emissionusd = 0
data.xmr_inflation = 0
data.xmr_supply = 0
data.xmr_return = 0
data.dash_inflation = 0
data.dash_marketcap = 0
data.dash_transactions = 0
data.xmr_marketcap = 0
data.xmr_minerrevntv = 0
data.xmr_minerrevusd = 0
data.xmr_minerfeesntv = 0
data.xmr_minerfeesusd = 0
data.xmr_transcostntv = 0
data.xmr_transcostusd = 0
data.xmr_commitntv = 0
data.xmr_commitusd = 0
data.xmr_metcalfeusd = 0
data.xmr_metcalfebtc = 0
data.xmr_pricebtc = 0
data.xmr_priceusd = 0
data.xmr_transacpercentage = 0
data.xmr_minerrevcap = 0
data.xmr_transactions = 0
data.xmr_blocksize = 0
data.xmr_difficulty = 0
if count_aux > 2800:
coins_zcash = Coin.objects.filter(name='zec').filter(date=coin_btc.date)
if coins_zcash:
for coin_zcash in coins_zcash:
if coin_zcash.transactions > 0:
data.zcash_transactions = coin_zcash.transactions
else:
data.zcash_transactions = 0
if coin_zcash.inflation > 0:
data.zcash_inflation = coin_zcash.inflation
else:
data.zcash_inflation = 0
if coin_zcash.priceusd > 0:
data.zcash_marketcap = coin_zcash.priceusd*coin_zcash.supply
else:
data.zcash_marketcap = 0
else:
data.zcash_inflation = 0
data.zcash_marketcap = 0
data.zcash_transactions = 0
else:
data.zcash_inflation = 0
data.zcash_marketcap = 0
data.zcash_transactions = 0
if count_aux > 3600:
coins_grin = Coin.objects.filter(name='grin').filter(date=coin_btc.date)
if coins_grin:
for coin_grin in coins_grin:
if coin_grin.transactions > 0:
data.grin_transactions = coin_grin.transactions
else:
data.grin_transactions = 0
if coin_grin.inflation > 0:
data.grin_inflation = coin_grin.inflation
else:
data.grin_inflation = 0
if coin_grin.priceusd > 0:
data.grin_marketcap = coin_grin.priceusd*coin_grin.supply
else:
data.grin_marketcap = 0
else:
data.grin_inflation = 0
data.grin_marketcap = 0
data.grin_transactions = 0
else:
data.grin_inflation = 0
data.grin_marketcap = 0
data.grin_transactions = 0
socials = Social.objects.filter(name='Bitcoin').filter(date=coin_btc.date)
if socials:
for social in socials:
data.btc_subscriberCount = social.subscriberCount
data.btc_commentsPerHour = social.commentsPerHour
data.btc_postsPerHour = social.postsPerHour
else:
data.btc_subscriberCount = 0
data.btc_commentsPerHour = 0
data.btc_postsPerHour = 0
socials = Social.objects.filter(name='Monero').filter(date=coin_btc.date)
if socials:
for social in socials:
data.xmr_subscriberCount = social.subscriberCount
data.xmr_commentsPerHour = social.commentsPerHour
data.xmr_postsPerHour = social.postsPerHour
else:
data.xmr_subscriberCount = 0
data.xmr_commentsPerHour = 0
data.xmr_postsPerHour = 0
socials = Social.objects.filter(name='CryptoCurrency').filter(date=coin_btc.date)
if socials:
for social in socials:
data.crypto_subscriberCount = social.subscriberCount
data.crypto_commentsPerHour = social.commentsPerHour
data.crypto_postsPerHour = social.postsPerHour
else:
data.crypto_subscriberCount = 0
data.crypto_commentsPerHour = 0
data.crypto_postsPerHour = 0
data.save()
count += 1
message = 'Total of ' + str(count) + ' data generated'
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
####################################################################################
# Views
####################################################################################
async def index(request):
coins = Coin.objects.filter(name='xmr').order_by('-date')
count = 0
for coin in coins:
count += 1
if count< 200:
if coin.supply < 18000000:
coin.supply += 499736
print(coin.date)
coin.save()
coin = list(Coin.objects.order_by('-date'))[0]
if not(coin):
message = 'Website under maintenance. Check back in a few minutes'
context = {'message': message}
return render(request, 'charts/maintenance.html', context)
now = int(datetime.datetime.now().strftime("%H"))
yesterday = datetime.datetime.strftime(date.today() - timedelta(1), '%Y-%m-%d')
date_aux = datetime.datetime.strftime(date.today() - timedelta(2), '%Y-%m-%d')
update_xmr = False
update_btc = False
update_socials = False
update_data = False
if now > 2 and now < 12:
try:
coin_xmr = Coin.objects.filter(name='xmr').get(date=yesterday)
if coin_xmr:
print('xmr found yesterday')
if coin_xmr.priceusd > 1 and coin_xmr.transactions > 0 and coin_xmr.inflation > 0:
print('no need to update xmr')
update_xmr = False
else:
print('will update xmr')
coin_xmr.delete()
update_xmr = True
else:
print('no xmr found yesterday - 1')
update_xmr = True
except:
print('no xmr found yesterday - 2')
update_xmr = True
if now > 6 and now < 12:
try:
coin_btc = list(Coin.objects.filter(name='btc').filter(date=yesterday))[0]
coin_zec = list(Coin.objects.filter(name='zec').filter(date=yesterday))[0]
coin_dash = list(Coin.objects.filter(name='dash').filter(date=yesterday))[0]
coin_grin = list(Coin.objects.filter(name='grin').filter(date=yesterday))[0]
if coin_btc and coin_zec and coin_dash and coin_grin:
print('coins found yesterday')
if coin_btc.transactions > 0 and coin_btc.inflation > 0 and coin_zec.supply > 0 and coin_dash.supply > 0 and coin_grin.supply > 0:
print('no need to update coins')
update_btc = False
else:
print('will update coins')
coin_btc.delete()
coin_zec.delete()
coin_dash.delete()
coin_grin.delete()
update_btc = True
else:
print('no coins found yesterday - 1')
update_btc = True
except:
print('no coins found yesterday - 2')
update_btc = True
try:
data = list(DailyData.objects.filter(date=yesterday))[0]
if data:
print('data found yesterday')
update_data = False
else:
print('no data found yesterday - 1')
update_data = True
except:
print('no data found yesterday - 2')
update_data = True
try:
coin_xmr = Coin.objects.filter(name='xmr').get(date=date_aux)
except:
coin_xmr = list(Coin.objects.filter(name='xmr').order_by('-date'))[0]
if update_xmr:
count = get_history_function('xmr', yesterday, yesterday)
await asynchronous.update_xmr_data(yesterday, coin_xmr)
if update_btc:
await asynchronous.update_others_data(yesterday)
if update_data:
synchronous.update_database(yesterday, yesterday)
if True:
enabled = synchronous.get_binance_withdrawal('Monero')
return HttpResponseRedirect(reverse('charts:sfmodel'))
def social(request):
data = DailyData.objects.order_by('date')
dates = []
dates2 = []
social_xmr = []
social_crypto = []
social_btc = []
last_xmr = 0
last_btc = 0
last_crypto = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
dates2.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_subscriberCount > last_btc:
social_btc.append(item.btc_subscriberCount)
last_btc = item.btc_subscriberCount
else:
social_btc.append(last_btc)
if item.xmr_subscriberCount > last_xmr:
social_xmr.append(item.xmr_subscriberCount)
last_xmr = item.xmr_subscriberCount
else:
social_xmr.append(last_xmr)
if item.crypto_subscriberCount > last_crypto:
social_crypto.append(item.crypto_subscriberCount)
last_crypto = item.crypto_subscriberCount
else:
social_crypto.append(last_crypto)
last_xmr = locale.format('%.0f', last_xmr, grouping=True)
last_btc = locale.format('%.0f', last_btc, grouping=True)
last_crypto = locale.format('%.0f', last_crypto, grouping=True)
context = {'dates': dates, 'dates2': dates2, 'social_xmr': social_xmr, 'social_crypto': social_crypto, 'social_btc': social_btc, 'last_xmr': last_xmr, 'last_btc': last_btc, 'last_crypto': last_crypto}
return render(request, 'charts/social.html', context)
def social2(request):
data = DailyData.objects.order_by('date')
dates = []
social_btc = []
last_btc = 0
dates2 = []
social_xmr = []
last_xmr = 0
N = 1
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
dates2.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_subscriberCount > 0:
if item.btc_marketcap > 10000:
last_btc = ((item.btc_marketcap)**N)/item.btc_subscriberCount
social_btc.append(last_btc)
else:
social_btc.append('')
else:
social_btc.append(last_btc)
if item.xmr_subscriberCount > 0:
if item.xmr_marketcap > 10000:
last_xmr = ((item.xmr_marketcap)**N)/item.xmr_subscriberCount
social_xmr.append(last_xmr)
else:
social_xmr.append('')
else:
social_xmr.append(last_xmr)
last_xmr = '$' + locale.format('%.0f', last_xmr, grouping=True)
last_btc = '$' + locale.format('%.0f', last_btc, grouping=True)
context = {'dates': dates, 'dates2': dates2, 'social_btc': social_btc, 'social_xmr': social_xmr, 'last_xmr': last_xmr, 'last_btc': last_btc}
return render(request, 'charts/social2.html', context)
def social3(request):
data = DailyData.objects.order_by('date')
dates = []
social_xmr = []
social_crypto = []
last_xmr = 0
last_crypto = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_subscriberCount > 0 and item.xmr_subscriberCount > 0:
last_xmr = 100*(item.xmr_subscriberCount/item.btc_subscriberCount)
social_xmr.append(last_xmr)
else:
social_xmr.append(last_xmr)
if item.btc_subscriberCount > 0 and item.crypto_subscriberCount > 0:
last_crypto = 100*(item.crypto_subscriberCount/item.btc_subscriberCount)
social_crypto.append(last_crypto)
else:
social_crypto.append(last_crypto)
last_xmr = locale.format('%.1f', last_xmr, grouping=True)+ '%'
last_crypto = locale.format('%.1f', last_crypto, grouping=True)+ '%'
context = {'dates': dates, 'social_xmr': social_xmr, 'social_crypto': social_crypto, 'last_xmr': last_xmr, 'last_crypto': last_crypto}
return render(request, 'charts/social3.html', context)
def social4(request):
data = DailyData.objects.order_by('date')
dates = []
dates2 = []
social_xmr = []
social_crypto = []
social_btc = []
last_xmr = 0
last_btc = 0
last_crypto = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
dates2.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_subscriberCount > last_btc:
social_btc.append(item.btc_subscriberCount)
last_btc = item.btc_subscriberCount
else:
social_btc.append(last_btc)
if item.xmr_subscriberCount > last_xmr:
social_xmr.append(item.xmr_subscriberCount)
last_xmr = item.xmr_subscriberCount
else:
social_xmr.append(last_xmr)
if item.crypto_subscriberCount > last_crypto:
social_crypto.append(item.crypto_subscriberCount)
last_crypto = item.crypto_subscriberCount
else:
social_crypto.append(last_crypto)
N = 30
last_btc = ''
speed_btc = []
for i in range(len(social_btc)):
if i < N:
speed_btc.append(last_btc)
else:
if social_btc[i-N] != 0 and social_btc[i] - social_btc[i-N] != 0:
last_btc = 100*(social_btc[i] - social_btc[i-N])/social_btc[i-N]
if last_btc < 0.2:
last_btc = 0.2
if last_btc > 1000:
last_btc = ''
else:
last_btc = ''
speed_btc.append(last_btc)
last_btc = ''
newcomers_btc = []
for i in range(len(social_btc)):
if i < N:
newcomers_btc.append(last_btc)
else:
last_btc = (social_btc[i] - social_btc[i-N])
if last_btc < 10:
last_btc = ''
newcomers_btc.append(last_btc)
last_crypto = ''
speed_crypto = []
for i in range(len(social_crypto)):
if i < N:
speed_crypto.append(last_crypto)
else:
if social_crypto[i-N] != 0 and social_crypto[i] - social_crypto[i-N] != 0:
last_crypto = 100*(social_crypto[i] - social_crypto[i-N])/social_crypto[i-N]
if last_crypto < 0.2:
last_crypto = 0.2
if last_crypto > 1000:
last_crypto = ''
else:
last_crypto = ''
speed_crypto.append(last_crypto)
last_crypto = ''
newcomers_crypto = []
for i in range(len(social_crypto)):
if i < N:
newcomers_crypto.append(last_crypto)
else:
last_crypto = (social_crypto[i] - social_crypto[i-N])
if last_crypto < 2:
last_crypto = ''
newcomers_crypto.append(last_crypto)
last_xmr = ''
speed_xmr = []
for i in range(len(social_xmr)):
if i < N:
speed_xmr.append(last_xmr)
else:
if social_xmr[i-N] != 0 and social_xmr[i] - social_xmr[i-N] != 0:
last_xmr = 100*(social_xmr[i] - social_xmr[i-N])/social_xmr[i-N]
if last_xmr < 0.2:
last_xmr = 0.2
if last_xmr > 1000:
last_xmr = ''
else:
last_xmr = ''
speed_xmr.append(last_xmr)
last_xmr = ''
newcomers_xmr = []
for i in range(len(social_xmr)):
if i < N:
newcomers_xmr.append(last_xmr)
else:
last_xmr = (social_xmr[i] - social_xmr[i-N])
if last_xmr < 0:
last_xmr = ''
newcomers_xmr.append(last_xmr)
try:
last_xmr = locale.format('%.0f', last_xmr, grouping=True)
last_btc = locale.format('%.0f', last_btc, grouping=True)
last_crypto = locale.format('%.0f', last_crypto, grouping=True)
except:
last_xmr = 0
last_btc = 0
last_crypto = 0
context = {'dates': dates, 'speed_xmr': speed_xmr, 'speed_crypto': speed_crypto, 'speed_btc': speed_btc, 'newcomers_xmr': newcomers_xmr, 'newcomers_btc': newcomers_btc, 'newcomers_crypto': newcomers_crypto, 'last_xmr': last_xmr, 'last_btc': last_btc, 'last_crypto': last_crypto}
return render(request, 'charts/social4.html', context)
def social5(request):
data = DailyData.objects.order_by('date')
transactions = []
dates = []
social_xmr = []
now_transactions = 0
last_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_subscriberCount > last_xmr:
social_xmr.append(item.xmr_subscriberCount)
last_xmr = item.xmr_subscriberCount
else:
social_xmr.append(last_xmr)
if item.xmr_transactions > 300:
now_transactions = item.xmr_transactions
transactions.append(now_transactions)
else:
transactions.append('')
last_xmr = locale.format('%.0f', last_xmr, grouping=True)
now_transactions = locale.format('%.0f', now_transactions, grouping=True)
context = {'dates': dates, 'social_xmr': social_xmr, 'last_xmr': last_xmr, 'now_transactions': now_transactions, 'transactions': transactions}
return render(request, 'charts/social5.html', context)
def social6(request):
data = DailyData.objects.order_by('date')
dates = []
social_xmr = []
social_crypto = []
social_btc = []
last_xmr = 0
last_btc = 0
last_crypto = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_commentsPerHour*24 < last_btc/4:
social_btc.append(last_btc)
else:
last_btc = item.btc_commentsPerHour*24
social_btc.append(last_btc)
if item.xmr_commentsPerHour*24 < last_xmr/4:
social_xmr.append(last_xmr)
else:
last_xmr = item.xmr_commentsPerHour*24
social_xmr.append(last_xmr)
if item.crypto_commentsPerHour*24 < last_crypto/4:
social_crypto.append(last_crypto)
else:
last_crypto = item.crypto_commentsPerHour*24
social_crypto.append(last_crypto)
last_xmr = locale.format('%.0f', last_xmr, grouping=True)
last_btc = locale.format('%.0f', last_btc, grouping=True)
last_crypto = locale.format('%.0f', last_crypto, grouping=True)
context = {'dates': dates, 'social_xmr': social_xmr, 'social_crypto': social_crypto, 'social_btc': social_btc, 'last_xmr': last_xmr, 'last_btc': last_btc, 'last_crypto': last_crypto}
return render(request, 'charts/social6.html', context)
def social7(request):
data = DailyData.objects.order_by('date')
dates = []
social_xmr = []
social_crypto = []
social_btc = []
last_xmr = 0
last_btc = 0
last_crypto = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_postsPerHour > 0:
last_btc = item.btc_postsPerHour*24
social_btc.append(last_btc)
else:
social_btc.append(last_btc)
if item.xmr_postsPerHour > 0:
last_xmr = item.xmr_postsPerHour*24
social_xmr.append(last_xmr)
else:
social_xmr.append(last_xmr)
if item.crypto_postsPerHour > 0:
last_crypto = item.crypto_postsPerHour*24
social_crypto.append(last_crypto)
else:
social_crypto.append(last_crypto)
last_xmr = locale.format('%.0f', last_xmr, grouping=True)
last_btc = locale.format('%.0f', last_btc, grouping=True)
last_crypto = locale.format('%.0f', last_crypto, grouping=True)
context = {'dates': dates, 'social_xmr': social_xmr, 'social_crypto': social_crypto, 'social_btc': social_btc, 'last_xmr': last_xmr, 'last_btc': last_btc, 'last_crypto': last_crypto}
return render(request, 'charts/social7.html', context)
def pricelog(request):
symbol = 'xmr'
now_price = 0
now_sf = 0
now_inflation = 0
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
maximum = 0
supply = 0
dates = []
color = []
values = []
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
values.append(coin.priceusd)
if coin.priceusd < 0.01:
coin.priceusd = 0.01
if coin.stocktoflow < 0.1:
coin.stocktoflow = 0.1
now_inflation = coin.inflation
now_price = coin.priceusd
now_sf = coin.stocktoflow
if now_price > maximum:
maximum = now_price
new_color = 30*coin.pricebtc/(count*delta + v0)
color.append(new_color)
supply = int(coin.supply)*10**12
count += 1
count = 0
for count in range(650):
date_now = date.today() + timedelta(count)
dates.append(datetime.datetime.strftime(date_now, '%Y-%m-%d'))
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*( 10**12)
supply += int(720*reward)
now_price = "$"+ locale.format('%.2f', now_price, grouping=True)
now_sf = "$"+ locale.format('%.2f', now_sf, grouping=True)
maximum = "$"+ locale.format('%.2f', maximum, grouping=True)
now_inflation = locale.format('%.2f', now_inflation, grouping=True)+'%'
context = {'values': values, 'dates': dates, 'maximum': maximum, 'now_price': now_price, 'now_inflation': now_inflation, 'now_sf': now_sf, 'color': color}
return render(request, 'charts/pricelog.html', context)
def movingaverage(request):
symbol = 'xmr'
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
dates = []
color = []
values = []
average1 = []
average2 = []
total = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
if coin.priceusd < 0.2:
coin.priceusd = 0.2
total += coin.priceusd
values.append(coin.priceusd)
if count < 1460:
aux = total/(730 + count/2)
if aux < 0.2:
aux = 0.2
average1.append(aux)
average2.append(aux*5)
if coin.priceusd > 5*aux:
new_color = 1
if coin.priceusd < aux:
new_color = 0
else:
new_color = coin.priceusd/(5*aux)
color.append(new_color)
else:
color.append(new_color)
count += 1
n = 1460
median = pd.Series(values).rolling(window=n).mean().iloc[n-1:].values
#for count in range(1460):
# average1.append('')
# average2.append('')
for item in median:
average1.append(item)
average2.append(item*5)
context = {'values': values, 'dates': dates, 'color': color, 'average1': average1, 'average2': average2}
return render(request, 'charts/movingaverage.html', context)
def powerlaw(request):
symbol = 'xmr'
now_price = 0
now_sf = 0
now_inflation = 0
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
maximum = 0
dates = []
counter = []
years = []
line3 = []
line2 = []
line1 = []
a3 = 0.00000000000000000009
a2 = 0.0000000000000000000000008
a1 = 0.00000000000000000000000002
b3 = ((math.log(477,10)-math.log(5.01,10))/(math.log(2511,10)-math.log(1231,10)))
b2 = ((math.log(92,10)-math.log(0.23,10))/(math.log(3297,10)-math.log(1468,10)))
b1 = ((math.log(93,10)-math.log(0.39,10))/(math.log(3570,10)-math.log(1755,10)))
color = []
values = []
yearnumber = 2014
days = 1200
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
if coin.priceusd < 0.01:
continue
days += 1
price3 = a3*(days**b3)
price2 = a2*(days**b2)
price1 = a1*(days**b1)
line3.append(price3)
line2.append(price2)
line1.append(price1)
counter.append(days)
if coin.date.year > yearnumber:
yearnumber += 1
years.append(yearnumber)
dates.append(days)
values.append(coin.priceusd)
if coin.priceusd < 0.01:
coin.priceusd = 0.01
if coin.stocktoflow < 0.1:
coin.stocktoflow = 0.1
now_inflation = coin.inflation
now_price = coin.priceusd
now_sf = coin.stocktoflow
if now_price > maximum:
maximum = now_price
new_color = 30*coin.pricebtc/(count*delta + v0)
color.append(new_color)
count += 1
for count in range(1, 3650):
date_now = date.today() + timedelta(count)
values.append('')
days += 1
price3 = a3*(days**b3)
price2 = a2*(days**b2)
price1 = a1*(days**b1)
line3.append(price3)
line2.append(price2)
line1.append(price1)
counter.append(days)
if date_now.year > yearnumber:
yearnumber += 1
years.append(yearnumber)
dates.append(days)
now_price = "$"+ locale.format('%.2f', now_price, grouping=True)
now_sf = "$"+ locale.format('%.2f', now_sf, grouping=True)
maximum = "$"+ locale.format('%.2f', maximum, grouping=True)
now_inflation = locale.format('%.2f', now_inflation, grouping=True)+'%'
context = {'values': values, 'dates': dates, 'maximum': maximum, 'now_price': now_price, 'now_inflation': now_inflation,
'now_sf': now_sf, 'color': color, 'years': years, 'counter': counter, 'line1': line1, 'line2': line2, 'line3': line3}
return render(request, 'charts/powerlaw.html', context)
def pricelin(request):
symbol = 'xmr'
now_price = 0
now_sf = 0
now_inflation = 0
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
maximum = 0
supply = 0
dates = []
color = []
values = []
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
values.append(coin.priceusd)
if coin.priceusd < 0.01:
coin.priceusd = 0.01
if coin.stocktoflow < 0.1:
coin.stocktoflow = 0.1
now_inflation = coin.inflation
now_price = coin.priceusd
now_sf = coin.stocktoflow
if now_price > maximum:
maximum = now_price
new_color = 30*coin.pricebtc/(count*delta + v0)
color.append(new_color)
supply = int(coin.supply)*10**12
count += 1
count = 0
for count in range(650):
date_now = date.today() + timedelta(count)
dates.append(datetime.datetime.strftime(date_now, '%Y-%m-%d'))
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*( 10**12)
supply += int(720*reward)
stock = (100/(100*reward*720*365/supply))**1.65
now_price = "$"+ locale.format('%.2f', now_price, grouping=True)
now_sf = "$"+ locale.format('%.2f', now_sf, grouping=True)
maximum = "$"+ locale.format('%.2f', maximum, grouping=True)
now_inflation = locale.format('%.2f', now_inflation, grouping=True)+'%'
context = {'values': values, 'dates': dates, 'maximum': maximum, 'now_price': now_price, 'now_inflation': now_inflation, 'now_sf': now_sf, 'color': color}
return render(request, 'charts/pricelin.html', context)
def pricesats(request):
dates = []
color = []
values = []
now_price = 0
maximum = 0
bottom = 1
data = Sfmodel.objects.order_by('date')
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.color != 0:
color.append(item.color)
else:
color.append('')
if item.pricebtc > 0.0001:
values.append(item.pricebtc)
now_price = item.pricebtc
if bottom > item.pricebtc:
bottom = item.pricebtc
if maximum < item.pricebtc:
maximum = item.pricebtc
else:
values.append('')
now_price = locale.format('%.4f', now_price, grouping=True) + ' BTC'
maximum = locale.format('%.4f', maximum, grouping=True) + ' BTC'
bottom = locale.format('%.4f', bottom, grouping=True) + ' BTC'
context = {'values': values, 'dates': dates, 'maximum': maximum, 'now_price': now_price, 'color': color, 'bottom': bottom}
return render(request, 'charts/pricesats.html', context)
def pricesatslog(request):
dates = []
color = []
values = []
now_price = 0
maximum = 0
bottom = 1
data = Sfmodel.objects.order_by('date')
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.color != 0:
color.append(item.color)
else:
color.append('')
if item.pricebtc > 0.0001:
values.append(item.pricebtc)
now_price = item.pricebtc
if bottom > item.pricebtc:
bottom = item.pricebtc
if maximum < item.pricebtc:
maximum = item.pricebtc
else:
values.append('')
now_price = locale.format('%.4f', now_price, grouping=True) + ' BTC'
maximum = locale.format('%.4f', maximum, grouping=True) + ' BTC'
bottom = locale.format('%.4f', bottom, grouping=True) + ' BTC'
context = {'values': values, 'dates': dates, 'maximum': maximum, 'now_price': now_price, 'color': color, 'bottom': bottom}
return render(request, 'charts/pricesatslog.html', context)
def fractal(request):
symbol = 'xmr'
dates1 = []
dates2 = []
cycle1 = []
cycle2 = []
now_multiple = 0
maximum = 0
count1 = 1
count2 = 1
date1_aux = datetime.datetime(2017, 12, 29)
date2_aux = datetime.datetime(2014, 6, 21)
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
date3_aux = datetime.datetime.combine(coin.date, datetime.time(0, 0))
if date3_aux < date1_aux and date3_aux > date2_aux:
cycle1.append(coin.priceusd/5)
dates1.append(count1/12.7)
if (coin.priceusd/5) > maximum:
maximum = coin.priceusd/5
count1 += 1
elif date3_aux > date1_aux:
cycle2.append(coin.priceusd/477.12)
dates2.append(count2/20.7) #24
now_multiple = coin.priceusd/477.12
count2 += 0.86
now_multiple = locale.format('%.2f', now_multiple, grouping=True) + 'x'
maximum = locale.format('%.2f', maximum, grouping=True) + 'x'
context = {'cycle1': cycle1, 'cycle2': cycle2, 'dates1': dates1, 'dates2': dates2, 'now_multiple': now_multiple, 'maximum': maximum}
return render(request, 'charts/fractal.html', context)
def inflationfractal(request):
symbol = 'xmr'
dates1 = []
dates2 = []
cycle1 = []
cycle2 = []
now_multiple = 0
maximum = 0
current_inflation = 0
start_inflation = 0
count1 = 1
count2 = 1
date1_aux = datetime.datetime(2017, 12, 29)
date2_aux = datetime.datetime(2014, 6, 21)
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
date3_aux = datetime.datetime.combine(coin.date, datetime.time(0, 0))
if date3_aux < date1_aux and date3_aux > date2_aux:
start_inflation = coin.inflation
current_inflation = start_inflation
cycle1.append(coin.priceusd/5)
dates1.append(count1/12.7)
if (coin.priceusd/5) > maximum:
maximum = coin.priceusd/5
count1 += 1
elif date3_aux > date1_aux:
if (coin.inflation/current_inflation) > 1.15 or (coin.inflation/current_inflation) < 0.85:
coin.inflation = current_inflation
else:
current_inflation = coin.inflation
delta = math.sqrt(coin.inflation/start_inflation)
cycle2.append(delta*coin.priceusd/477.12)
dates2.append(count2/20.55) #24
now_multiple = delta*coin.priceusd/477.12
count2 += 0.86
now_multiple = locale.format('%.2f', now_multiple, grouping=True) + 'x'
maximum = locale.format('%.2f', maximum, grouping=True) + 'x'
context = {'cycle1': cycle1, 'cycle2': cycle2, 'dates1': dates1, 'dates2': dates2, 'now_multiple': now_multiple, 'maximum': maximum}
return render(request, 'charts/inflationfractal.html', context)
def golden(request):
symbol = 'xmr'
dates = []
prices = []
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
firstdate = coin.date
break
day = firstdate - timedelta(350)
for i in range(350):
dates.append(datetime.datetime.strftime(day, '%Y-%m-%d'))
prices.append(0.2)
for coin in coins:
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
if coin.priceusd > 0.2:
prices.append(coin.priceusd)
else:
prices.append(0.2)
n = 350
median = pd.Series(prices).rolling(window=n).mean().iloc[n-1:].values
m_350 = []
m_350_0042 = []
m_350_0060 = []
m_350_0200 = []
m_350_0300 = []
m_350_0500 = []
m_350_0800 = []
m_350_1300 = []
for i in range(350):
m_350.append('')
m_350_0042.append('')
m_350_0060.append('')
m_350_0200.append('')
m_350_0300.append('')
m_350_0500.append('')
m_350_0800.append('')
m_350_1300.append('')
for item in median:
m_350.append(float(item))
m_350_0042.append(float(item)*0.42)
m_350_0060.append(float(item)*0.60)
m_350_0200.append(float(item)*2.00)
m_350_0300.append(float(item)*3.00)
m_350_0500.append(float(item)*5.00)
m_350_0800.append(float(item)*8.00)
m_350_1300.append(float(item)*13.00)
n = 120
median = pd.Series(prices).rolling(window=n).mean().iloc[n-1:].values
m_111 = []
for i in range(120):
m_111.append('')
for item in median:
m_111.append(float(item))
i = 0
down = True
price_cross = []
for price in prices:
if m_111[i] != '' and m_350_0200[i] != '':
if down == True and m_111[i] > m_350_0200[i]:
down = False
price_cross.append(price)
elif price > m_350_0500[i]:
price_cross.append(price)
elif down == False and m_111[i] < m_350_0200[i]:
down = True
else:
price_cross.append('')
else:
price_cross.append('')
i += 1
context = {'dates': dates, 'prices': prices, 'm_350': m_350, 'm_350_0042': m_350_0042, 'm_350_0060': m_350_0060, 'm_350_0200': m_350_0200, 'm_350_0300': m_350_0300,
'm_350_0500': m_350_0500, 'm_350_0800': m_350_0800, 'm_350_1300': m_350_1300, 'median': median, 'm_111': m_111, 'price_cross': price_cross}
return render(request, 'charts/golden.html', context)
def competitors(request):
dates = []
xmr = []
dash = []
grin = []
zcash = []
count = 0
now_xmr = 0
now_dash = 0
now_grin = 0
now_zcash = 0
count = 0
coins_xmr = Coin.objects.order_by('date').filter(name='xmr')
for coin_xmr in coins_xmr:
if coin_xmr.priceusd:
if count > 30:
xmr.append(coin_xmr.priceusd/5.01)
now_xmr = coin_xmr.priceusd/5.01
dates.append(count)
count += 1
elif count <= 63:
continue
else:
xmr.append('')
count = 0
coins_dash = Coin.objects.order_by('date').filter(name='dash')
for coin_dash in coins_dash:
count += 1
if coin_dash.priceusd and count > 130:
dash.append(coin_dash.priceusd/14.7)
now_dash = coin_dash.priceusd/14.7
elif count <= 130:
continue
else:
dash.append('')
dates.append(count)
count = 0
coins_grin = Coin.objects.order_by('date').filter(name='grin')
for coin_grin in coins_grin:
count += 1
if coin_grin.priceusd and count > 155:
grin.append(coin_grin.priceusd/6.37)
now_grin = coin_grin.priceusd/6.37
elif count <= 155:
continue
else:
grin.append('')
dates.append(count)
count = 0
coins_zcash = Coin.objects.order_by('date').filter(name='zec')
for coin_zcash in coins_zcash:
count += 1
if coin_zcash.priceusd and count > 434:
zcash.append(coin_zcash.priceusd/750)
now_zcash = coin_zcash.priceusd/750
elif count <= 434:
continue
else:
zcash.append('')
dates.append(count)
now_dash = locale.format('%.2f', now_dash, grouping=True)
now_grin = locale.format('%.2f', now_grin, grouping=True)
now_zcash = locale.format('%.2f', now_zcash, grouping=True)
now_xmr = locale.format('%.2f', now_xmr, grouping=True)
context = {'xmr': xmr, 'dash': dash, 'grin': grin, 'zcash': zcash, 'now_xmr': now_xmr,
'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'dates': dates}
return render(request, 'charts/competitors.html', context)
def competitorslin(request):
dates = []
xmr = []
dash = []
grin = []
zcash = []
count = 0
now_xmr = 0
now_dash = 0
now_grin = 0
now_zcash = 0
count = 0
coins_xmr = Coin.objects.order_by('date').filter(name='xmr')
for coin_xmr in coins_xmr:
if coin_xmr.priceusd:
if count > 30:
xmr.append(coin_xmr.priceusd/5.01)
now_xmr = coin_xmr.priceusd/5.01
dates.append(count)
count += 1
elif count <= 63:
continue
else:
xmr.append('')
count = 0
coins_dash = Coin.objects.order_by('date').filter(name='dash')
for coin_dash in coins_dash:
count += 1
if coin_dash.priceusd and count > 130:
dash.append(coin_dash.priceusd/14.7)
now_dash = coin_dash.priceusd/14.7
elif count <= 130:
continue
else:
dash.append('')
dates.append(count)
count = 0
coins_grin = Coin.objects.order_by('date').filter(name='grin')
for coin_grin in coins_grin:
count += 1
if coin_grin.priceusd and count > 155:
grin.append(coin_grin.priceusd/6.37)
now_grin = coin_grin.priceusd/6.37
elif count <= 155:
continue
else:
grin.append('')
dates.append(count)
count = 0
coins_zcash = Coin.objects.order_by('date').filter(name='zec')
for coin_zcash in coins_zcash:
count += 1
if coin_zcash.priceusd and count > 434:
zcash.append(coin_zcash.priceusd/750)
now_zcash = coin_zcash.priceusd/750
elif count <= 434:
continue
else:
zcash.append('')
dates.append(count)
now_dash = locale.format('%.2f', now_dash, grouping=True)
now_grin = locale.format('%.2f', now_grin, grouping=True)
now_zcash = locale.format('%.2f', now_zcash, grouping=True)
now_xmr = locale.format('%.2f', now_xmr, grouping=True)
context = {'xmr': xmr, 'dash': dash, 'grin': grin, 'zcash': zcash, 'now_xmr': now_xmr,
'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'dates': dates}
return render(request, 'charts/competitorslin.html', context)
def marketcap(request):
data = DailyData.objects.order_by('date')
dates = []
xmr = []
dash = []
grin = []
zcash = []
now_xmr = 0
now_dash = 0
now_grin = 0
now_zcash = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.zcash_marketcap > 1000000:
zcash.append(item.zcash_marketcap)
now_zcash = item.zcash_marketcap
else:
zcash.append('')
if item.dash_marketcap > 1000000:
dash.append(item.dash_marketcap)
now_dash = item.dash_marketcap
else:
dash.append('')
if item.xmr_marketcap > 1000000:
xmr.append(item.xmr_marketcap)
now_xmr = item.xmr_marketcap
else:
xmr.append('')
if item.grin_marketcap > 1000000:
grin.append(item.grin_marketcap)
now_grin = item.grin_marketcap
else:
grin.append('')
now_dash = '$'+locale.format('%.0f', now_dash, grouping=True)
now_grin = '$'+locale.format('%.0f', now_grin, grouping=True)
now_zcash = '$'+locale.format('%.0f', now_zcash, grouping=True)
now_xmr = '$'+locale.format('%.0f', now_xmr, grouping=True)
context = {'xmr': xmr, 'dash': dash, 'grin': grin, 'zcash': zcash, 'now_xmr': now_xmr,
'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'dates': dates}
return render(request, 'charts/marketcap.html', context)
def inflationreturn(request):
count = 0
xmr = []
dash = []
grin = []
zcash = []
btc = []
now_xmr = 0
now_dash = 0
now_grin = 0
now_zcash = 0
now_btc = 0
inflation_xmr = []
inflation_dash = []
inflation_grin = []
inflation_zcash = []
inflation_btc = []
lastxmrA = 0
lastxmrB = 0
count = 0
coins = Coin.objects.order_by('date').filter(name='xmr')
for coin in coins:
count += 1
if coin.priceusd and count > 30 and coin.inflation > 0:
now_xmr = coin.priceusd/5.01
#correcao de um erro nos dados
if 100/coin.inflation > 110 and now_xmr < 10:
xmr.append(lastxmrA)
inflation_xmr.append(lastxmrB)
else:
xmr.append(now_xmr)
inflation_xmr.append(100/coin.inflation)
lastxmrA = now_xmr
lastxmrB = 100/coin.inflation
count = 0
coins = Coin.objects.order_by('date').filter(name='dash')
for coin in coins:
count += 1
if coin.priceusd and count > 130 and coin.inflation > 0:
now_dash = coin.priceusd/14.7
dash.append(now_dash)
inflation_dash.append(100/coin.inflation)
count = 0
coins = Coin.objects.order_by('date').filter(name='grin')
for coin in coins:
count += 1
if coin.priceusd and count > 155 and coin.inflation > 0:
now_grin = coin.priceusd/6.37
grin.append(now_grin)
inflation_grin.append(100/coin.inflation)
count = 0
coins = Coin.objects.order_by('date').filter(name='zec')
for coin in coins:
count += 1
if coin.priceusd and count > 434 and coin.inflation > 0:
now_zcash = coin.priceusd/750
zcash.append(now_zcash)
inflation_zcash.append(100/coin.inflation)
count = 0
coins = Coin.objects.order_by('date').filter(name='btc')
for coin in coins:
count += 1
if coin.priceusd and count > 325 and coin.inflation > 0:
now_btc = coin.priceusd/30
btc.append(now_btc)
inflation_btc.append(100/coin.inflation)
now_dash = locale.format('%.2f', now_dash, grouping=True)
now_grin = locale.format('%.2f', now_grin, grouping=True)
now_zcash = locale.format('%.2f', now_zcash, grouping=True)
now_xmr = locale.format('%.2f', now_xmr, grouping=True)
now_btc = locale.format('%.2f', now_btc, grouping=True)
context = {'inflation_btc': inflation_btc,'inflation_xmr': inflation_xmr, 'inflation_dash': inflation_dash, 'inflation_grin': inflation_grin, 'inflation_zcash': inflation_zcash, 'now_xmr': now_xmr,
'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'now_btc': now_btc, 'btc': btc, 'xmr': xmr, 'dash': dash, 'zcash': zcash, 'grin': grin}
return render(request, 'charts/inflationreturn.html', context)
def bitcoin(request):
dates = []
dates3 = []
dates4 = []
btc = []
xmr3 = []
count1 = 0
count3 = 0
now_xmr = 0
now_btc = 0
coins_btc = Coin.objects.order_by('date').filter(name='btc')
for coin_btc in coins_btc:
if coin_btc.priceusd:
if count1 > 890: #450
btc.append(coin_btc.priceusd/30)
now_btc = coin_btc.priceusd/30
dates.append(count1)
count1 += 1 #1.4
elif count1 <= 890: #450
continue
else:
btc.append('')
coins_xmr = Coin.objects.order_by('date').filter(name='xmr')
for coin_xmr in coins_xmr:
if coin_xmr.priceusd:
if count3 > 30:
xmr3.append(coin_xmr.priceusd/5.01)
dates4.append(count3)
count3 += 0.92
elif count3 <= 30:
continue
else:
xmr3.append('')
data = DailyData.objects.order_by('date')
dates2 = []
xmr2 = []
btc2 = []
for item in data:
dates2.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_return > 0.0001:
btc2.append(item.btc_return)
else:
btc2.append('')
if item.xmr_return > 0.0001:
xmr2.append(item.xmr_return)
else:
xmr2.append('')
now_btc = locale.format('%.2f', now_btc, grouping=True)
now_xmr = locale.format('%.2f', now_xmr, grouping=True)
context = {'btc': btc, 'xmr2': xmr2, 'btc2': btc2, 'xmr3': xmr3, 'dates': dates, 'dates2': dates2, 'dates3': dates3, 'dates4': dates4}
return render(request, 'charts/bitcoin.html', context)
def translin(request):
symbol = 'xmr'
transactions = []
pricexmr = []
dates = []
now_transactions = 0
maximum = 0
coins = Coin.objects.order_by('date')
for coin in coins:
print(str(coin.name) + ' ' + str(coin.date))
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
if coin.transactions > 200:
transactions.append(coin.transactions)
now_transactions = coin.transactions
if now_transactions > maximum:
maximum = now_transactions
else:
transactions.append('')
if coin.priceusd > 0.001:
pricexmr.append(coin.priceusd)
else:
pricexmr.append('')
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
now_transactions = int(now_transactions)
maximum = int(maximum)
context = {'transactions': transactions, 'dates': dates, 'maximum': maximum, 'now_transactions': now_transactions, 'pricexmr': pricexmr}
return render(request, 'charts/translin.html', context)
def transmonth(request):
symbol = 'xmr'
transactions = []
pricexmr = []
dates = []
now_transactions = 0
maximum = 0
month_previous = '2014-01'
month = 0
total = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
aux = str(coin.date)
month = aux.split("-")[0] + '-' + aux.split("-")[1]
if month != month_previous:
dates.append(month_previous)
transactions.append(total)
if total > maximum:
maximum = total
total = 0
month_previous = month
if coin.transactions > 0:
total += coin.transactions
now_transactions = int(total)
maximum = int(maximum)
now_transactions = locale.format('%.0f', now_transactions, grouping=True)
maximum = locale.format('%.0f', maximum, grouping=True)
context = {'transactions': transactions, 'dates': dates, 'maximum': maximum, 'now_transactions': now_transactions, 'pricexmr': pricexmr}
return render(request, 'charts/transmonth.html', context)
def percentmonth(request):
symbol = 'xmr'
transactions = []
pricexmr = []
dates = []
now_transactions = 0
maximum = 0
month_previous = '2014-01'
month = 0
total = 0
total_btc = 0
total_xmr = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
aux = str(coin.date)
month = aux.split("-")[0] + '-' + aux.split("-")[1]
try:
coin_btc = Coin.objects.filter(name='btc').get(date=coin.date)
except:
pass
if month != month_previous:
dates.append(month_previous)
if total_btc > 0:
total = 100*total_xmr/total_btc
else:
total = 0
transactions.append(total)
if total > maximum:
maximum = total
total_xmr = 0
total_btc = 0
month_previous = month
if coin.transactions > 0:
total_xmr += coin.transactions
if coin_btc.transactions > 0:
total_btc += coin_btc.transactions
if total_btc > 0:
total = 100*total_xmr/total_btc
else:
total = 0
now_transactions = locale.format('%.1f', total, grouping=True) + ' %'
maximum = locale.format('%.1f', maximum, grouping=True) + ' %'
context = {'transactions': transactions, 'dates': dates, 'maximum': maximum, 'now_transactions': now_transactions, 'pricexmr': pricexmr}
return render(request, 'charts/percentmonth.html', context)
def deviation(request):
symbol = 'xmr'
pricexmr = []
dates = []
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
if coin.priceusd > 0.001:
pricexmr.append(coin.priceusd)
else:
pricexmr.append(0.20)
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
n = 180
median_long_price = pd.Series(pricexmr).rolling(window=n).mean().iloc[n-1:].values
m_long_price = []
for i in range(n):
m_long_price.append(0)
for item in median_long_price:
m_long_price.append(float(item))
n = 3
median_short_price = pd.Series(pricexmr).rolling(window=n).mean().iloc[n-1:].values
m_short_price = []
for i in range(n):
m_short_price.append(0)
for item in median_short_price:
m_short_price.append(float(item))
deviation_percentage = []
deviation_price = []
for count in range(0, len(m_short_price)):
if float(m_long_price[count]) < 0.001:
deviation_price.append('')
deviation_percentage.append('')
else:
deviation_price.append((float(m_short_price[count])-float(m_long_price[count]))/(1))
deviation_percentage.append(100*(float(m_short_price[count])-float(m_long_price[count]))/(float(m_long_price[count])))
context = {'deviation_percentage': deviation_percentage, 'deviation_price': deviation_price, 'dates': dates, 'pricexmr': pricexmr}
return render(request, 'charts/deviation.html', context)
def deviation_tx(request):
symbol = 'xmr'
transactions = []
pricexmr = []
dates = []
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
transactions.append(coin.transactions)
if coin.priceusd > 0.001:
pricexmr.append(coin.priceusd)
else:
pricexmr.append(0.20)
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
n = 180
median_long = pd.Series(transactions).rolling(window=n).mean().iloc[n-1:].values
m_long = []
for i in range(n):
m_long.append(0)
for item in median_long:
m_long.append(float(item))
n = 3
median_short = pd.Series(transactions).rolling(window=n).mean().iloc[n-1:].values
m_short = []
for i in range(n):
m_short.append(0)
for item in median_short:
m_short.append(float(item))
n = 180
median_long_price = pd.Series(pricexmr).rolling(window=n).mean().iloc[n-1:].values
m_long_price = []
for i in range(n):
m_long_price.append(0)
for item in median_long_price:
m_long_price.append(float(item))
n = 3
median_short_price = pd.Series(pricexmr).rolling(window=n).mean().iloc[n-1:].values
m_short_price = []
for i in range(n):
m_short_price.append(0)
for item in median_short_price:
m_short_price.append(float(item))
deviation_percentage = []
for count in range(0, len(m_short)):
if float(m_long[count]) < 0.001 or float(m_long_price[count]) < 0.001:
deviation_percentage.append('')
else:
calculation = (float(m_short_price[count])-float(m_long_price[count]))*abs(float(m_short[count])-float(m_long[count]))/(float(m_long[count]))
if calculation > 100:
calculation = 100
if calculation < -100:
calculation = -100
deviation_percentage.append(calculation)
context = {'deviation_percentage': deviation_percentage, 'dates': dates, 'pricexmr': pricexmr}
return render(request, 'charts/deviation_tx.html', context)
def percentage(request):
data = DailyData.objects.order_by('date')
transactions = []
dates = []
now_transactions = 0
maximum = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_transacpercentage > 0.00001:
transactions.append(100*item.xmr_transacpercentage)
now_transactions = 100*item.xmr_transacpercentage
if now_transactions > maximum:
maximum = now_transactions
else:
transactions.append('')
now_transactions = locale.format('%.1f', now_transactions, grouping=True) + '%'
maximum = locale.format('%.1f', maximum, grouping=True) + '%'
context = {'transactions': transactions, 'dates': dates, 'now_transactions': now_transactions, 'maximum': maximum}
return render(request, 'charts/percentage.html', context)
def translog(request):
symbol = 'xmr'
transactions = []
pricexmr = []
dates = []
now_transactions = 0
maximum = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
if coin.transactions > 200:
transactions.append(coin.transactions)
now_transactions = coin.transactions
if now_transactions > maximum:
maximum = now_transactions
else:
transactions.append('')
if coin.priceusd > 0.001:
pricexmr.append(coin.priceusd)
else:
pricexmr.append('')
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
now_transactions = int(now_transactions)
maximum = int(maximum)
context = {'transactions': transactions, 'dates': dates, 'maximum': maximum, 'now_transactions': now_transactions, 'pricexmr': pricexmr}
return render(request, 'charts/translog.html', context)
def hashrate(request):
symbol = 'xmr'
hashrate = []
dates = []
now_hashrate = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
if coin.hashrate > 0:
now_hashrate = coin.hashrate
hashrate.append(coin.hashrate)
else:
hashrate.append('')
now_hashrate = locale.format('%.0f', now_hashrate, grouping=True)
context = {'hashrate': hashrate, 'dates': dates, 'now_hashrate': now_hashrate}
return render(request, 'charts/hashrate.html', context)
def hashprice(request):
symbol = 'xmr'
hashrate = []
dates = []
buy = []
sell = []
now_hashrate = 0
color = []
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
if count > 50:
buy.append(0.00000003)
sell.append(0.00000100)
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
if coin.hashrate > 0 and coin.priceusd > 0:
now_hashrate = coin.priceusd/coin.hashrate
hashrate.append(now_hashrate)
else:
hashrate.append('')
new_color = 30*coin.pricebtc/(count*delta + v0)
color.append(new_color)
count += 1
now_hashrate = locale.format('%.8f', now_hashrate, grouping=True)
context = {'hashrate': hashrate, 'dates': dates, 'now_hashrate': now_hashrate, 'color': color, 'buy': buy, 'sell': sell}
return render(request, 'charts/hashprice.html', context)
def hashvsprice(request):
symbol = 'xmr'
hashrate = []
prices = []
dates = []
now_hashrate = 0
now_priceusd = 0
now_pricebtc = 0
color = []
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
if count > 55:
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
if coin.priceusd > 0 and coin.hashrate:
now_hashrate = coin.hashrate
now_priceusd = coin.priceusd
now_pricebtc = coin.pricebtc
hashrate.append(now_hashrate)
prices.append(now_priceusd)
else:
hashrate.append('')
prices.append('')
new_color = 30*coin.pricebtc/(count*delta + v0)
color.append(new_color)
count += 1
now_hashrate = locale.format('%.0f', now_hashrate, grouping=True)
now_priceusd = '$' + locale.format('%.2f', now_priceusd, grouping=True)
now_pricebtc = locale.format('%.5f', now_pricebtc, grouping=True) + ' BTC'
context = {'hashrate': hashrate, 'dates': dates, 'now_hashrate': now_hashrate, 'color': color, 'prices': prices, 'now_pricebtc': now_pricebtc, 'now_priceusd': now_priceusd}
return render(request, 'charts/hashvsprice.html', context)
def metcalfesats(request):
data = DailyData.objects.order_by('date')
color = []
metcalfe = []
prices = []
dates = []
now_metcalfe = 0
now_price = 0
maximum = 0
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_metcalfebtc < 0.0007:
metcalfe.append('')
color.append('')
prices.append('')
else:
metcalfe.append(item.xmr_metcalfebtc)
now_price = item.xmr_pricebtc
now_metcalfe = item.xmr_metcalfebtc
if now_metcalfe > maximum:
maximum = now_metcalfe
color.append(30*item.xmr_pricebtc/(count*delta + v0))
prices.append(now_price)
count += 1
now_price = locale.format('%.4f', now_price, grouping=True) + ' BTC'
now_metcalfe = locale.format('%.4f', now_metcalfe, grouping=True) + ' BTC'
maximum = locale.format('%.4f', maximum, grouping=True) + ' BTC'
context = {'metcalfe': metcalfe, 'dates': dates, 'maximum': maximum, 'now_metcalfe': now_metcalfe, 'color': color, 'prices': prices, 'now_price': now_price}
return render(request, 'charts/metcalfesats.html', context)
def metcalfesats_deviation(request):
data = DailyData.objects.order_by('date')
metcalfe_percentage = []
metcalfe = []
dates = []
now_metcalfe = 0
now_metcalfe_percentage = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_metcalfebtc < 0.0007 and item.xmr_pricebtc <= 0:
metcalfe.append('')
metcalfe_percentage.append('')
else:
now_metcalfe = item.xmr_metcalfebtc - item.xmr_pricebtc
now_metcalfe_percentage = 100*((item.xmr_metcalfebtc/item.xmr_pricebtc) - 1)
metcalfe.append(now_metcalfe)
metcalfe_percentage.append(now_metcalfe_percentage)
now_metcalfe = locale.format('%.4f', now_metcalfe, grouping=True)
now_metcalfe_percentage = locale.format('%.0f', now_metcalfe_percentage, grouping=True)
context = {'metcalfe': metcalfe, 'dates': dates, 'now_metcalfe': now_metcalfe, 'now_metcalfe_percentage': now_metcalfe_percentage, 'metcalfe_percentage': metcalfe_percentage}
return render(request, 'charts/metcalfesats_deviation.html', context)
def metcalfe_deviation(request):
data = DailyData.objects.order_by('date')
metcalfe_percentage = []
metcalfe = []
dates = []
now_metcalfe = 0
now_metcalfe_percentage = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_metcalfeusd < 0.0007 and item.xmr_priceusd <= 0:
metcalfe.append('')
metcalfe_percentage.append('')
else:
now_metcalfe = item.xmr_metcalfeusd - item.xmr_priceusd
now_metcalfe_percentage = 100*((item.xmr_metcalfeusd/item.xmr_priceusd) - 1)
metcalfe.append(now_metcalfe)
metcalfe_percentage.append(now_metcalfe_percentage)
now_metcalfe = locale.format('%.0f', now_metcalfe, grouping=True)
now_metcalfe_percentage = locale.format('%.0f', now_metcalfe_percentage, grouping=True)
context = {'metcalfe': metcalfe, 'dates': dates, 'now_metcalfe': now_metcalfe, 'now_metcalfe_percentage': now_metcalfe_percentage, 'metcalfe_percentage': metcalfe_percentage}
return render(request, 'charts/metcalfe_deviation.html', context)
def metcalfeusd(request):
data = DailyData.objects.order_by('date')
color = []
metcalfe = []
prices = []
dates = []
now_metcalfe = 0
now_price = 0
maximum = 0
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_metcalfeusd < 0.001:
metcalfe.append('')
color.append('')
prices.append('')
else:
metcalfe.append(item.xmr_metcalfeusd)
now_price = item.xmr_priceusd
now_metcalfe = item.xmr_metcalfeusd
if now_metcalfe > maximum:
maximum = now_metcalfe
color.append(30*item.xmr_pricebtc/(count*delta + v0))
prices.append(now_price)
count += 1
now_price = "$"+ locale.format('%.2f', now_price, grouping=True)
now_metcalfe = "$"+ locale.format('%.2f', now_metcalfe, grouping=True)
maximum = "$"+ locale.format('%.2f', maximum, grouping=True)
context = {'metcalfe': metcalfe, 'dates': dates, 'maximum': maximum, 'now_metcalfe': now_metcalfe, 'color': color, 'prices': prices, 'now_price': now_price}
return render(request, 'charts/metcalfeusd.html', context)
def coins(request):
data = DailyData.objects.order_by('date')
supplyxmr = []
supplybtc = []
fsupplyxmr = []
fsupplybtc = []
dates = []
now_xmr = 0
now_btc = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_supply > 0.1:
supplybtc.append(item.btc_supply)
now_btc = item.btc_supply
else:
supplybtc.append('')
if item.xmr_inflation > 0.1:
supplyxmr.append(item.xmr_supply)
now_xmr = item.xmr_supply
else:
supplyxmr.append('')
fsupplyxmr.append('')
fsupplybtc.append('')
rewardbtc = 900
supplybitcoin = item.btc_supply
supply = int(item.xmr_supply)*10**12
for i in range(365*(2060-2020)):
supply = int(supply)
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*(10**12)
supply += int(720*reward)
fsupplyxmr.append(supply/(10**12))
date_aux = item.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
supplybitcoin += rewardbtc
if supplybitcoin > 21000000:
supplybitcoin = 21000000
fsupplybtc.append(supplybitcoin)
date_aux2 = datetime.datetime.strftime(date_aux, '%Y-%m-%d')
if date_aux2 == '2024-04-23':
rewardbtc = rewardbtc/2
if date_aux2 == '2028-05-05':
rewardbtc = rewardbtc/2
if date_aux2 == '2032-05-03':
rewardbtc = rewardbtc/2
if date_aux2 == '2036-04-30':
rewardbtc = rewardbtc/2
if date_aux2 == '2040-04-27':
rewardbtc = rewardbtc/2
if date_aux2 == '2044-04-25':
rewardbtc = rewardbtc/2
if date_aux2 == '2048-04-22':
rewardbtc = rewardbtc/2
if date_aux2 == '2052-04-19':
rewardbtc = rewardbtc/2
if date_aux2 == '2056-04-30':
rewardbtc = rewardbtc/2
if date_aux2 == '2060-04-27':
rewardbtc = rewardbtc/2
if date_aux2 == '2064-04-25':
rewardbtc = rewardbtc/2
if date_aux2 == '2068-04-22':
rewardbtc = rewardbtc/2
if date_aux2 == '2072-04-19':
rewardbtc = rewardbtc/2
if date_aux2 == '2076-04-30':
rewardbtc = rewardbtc/2
if date_aux2 == '2080-04-27':
rewardbtc = rewardbtc/2
if date_aux2 == '2084-04-25':
rewardbtc = rewardbtc/2
if date_aux2 == '2088-04-22':
rewardbtc = rewardbtc/2
if date_aux2 == '2140-01-01':
rewardbtc = 0
supplybitcoin = 21000000
supplyxmr.append('')
supplybtc.append('')
now_btc = locale.format('%.0f', now_btc, grouping=True)
now_xmr = locale.format('%.0f', now_xmr, grouping=True)
context = {'supplyxmr': supplyxmr, 'supplybtc': supplybtc, 'fsupplyxmr': fsupplyxmr, 'fsupplybtc': fsupplybtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/coins.html', context)
def dailyemission(request):
data = DailyData.objects.order_by('date')
emissionbtc = []
emissionxmr = []
dates = []
now_btc = 0
now_xmr = 0
high_btc = 0
high_xmr = 0
for item in data:
if item.btc_emissionusd == 0:
emissionbtc.append('')
else:
emissionbtc.append(item.btc_emissionusd)
now_btc = item.btc_emissionusd
if item.btc_emissionusd > high_btc:
high_btc = item.btc_emissionusd
if item.xmr_emissionusd == 0:
emissionxmr.append('')
else:
emissionxmr.append(item.xmr_emissionusd)
now_xmr = item.xmr_emissionusd
if item.xmr_emissionusd > high_xmr:
high_xmr = item.xmr_emissionusd
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
for i in range(500):
date_aux = item.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
emissionxmr.append('')
emissionbtc.append('')
now_btc = "$" + locale.format('%.0f', now_btc, grouping=True)
now_xmr = "$" + locale.format('%.0f', now_xmr, grouping=True)
high_btc = "$" + locale.format('%.0f', high_btc, grouping=True)
high_xmr = "$" + locale.format('%.0f', high_xmr, grouping=True)
context = {'emissionxmr': emissionxmr, 'emissionbtc': emissionbtc, 'high_xmr': high_xmr, 'high_btc': high_btc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/dailyemission.html', context)
def extracoins(request):
data = DailyData.objects.order_by('date')
nsupply = []
fsupply = []
dates = []
now_diff = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_supply - item.xmr_supply > 0:
nsupply.append(item.btc_supply - item.xmr_supply)
else:
nsupply.append('')
fsupply.append('')
rewardbtc = 900
supplybitcoin = item.btc_supply
supply = int(item.xmr_supply)*10**12
for i in range(365*(2060-2020)):
supply = int(supply)
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*(10**12)
supply += int(720*reward)
date_aux = item.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
supplybitcoin += rewardbtc
if supplybitcoin > 21000000:
supplybitcoin = 21000000
fsupply.append(-supply/(10**12) + supplybitcoin)
date_aux2 = datetime.datetime.strftime(date_aux, '%Y-%m-%d')
if date_aux2 == '2024-04-23':
rewardbtc = rewardbtc/2
if date_aux2 == '2028-05-05':
rewardbtc = rewardbtc/2
if date_aux2 == '2032-05-03':
rewardbtc = rewardbtc/2
if date_aux2 == '2036-04-30':
rewardbtc = rewardbtc/2
if date_aux2 == '2040-04-27':
rewardbtc = rewardbtc/2
if date_aux2 == '2044-04-25':
rewardbtc = rewardbtc/2
if date_aux2 == '2048-04-22':
rewardbtc = rewardbtc/2
if date_aux2 == '2052-04-19':
rewardbtc = rewardbtc/2
if date_aux2 == '2056-04-30':
rewardbtc = rewardbtc/2
if date_aux2 == '2060-04-27':
rewardbtc = rewardbtc/2
if date_aux2 == '2064-04-25':
rewardbtc = rewardbtc/2
if date_aux2 == '2068-04-22':
rewardbtc = rewardbtc/2
if date_aux2 == '2072-04-19':
rewardbtc = rewardbtc/2
if date_aux2 == '2076-04-30':
rewardbtc = rewardbtc/2
if date_aux2 == '2080-04-27':
rewardbtc = rewardbtc/2
if date_aux2 == '2084-04-25':
rewardbtc = rewardbtc/2
if date_aux2 == '2088-04-22':
rewardbtc = rewardbtc/2
if date_aux2 == '2140-01-01':
rewardbtc = 0
supplybitcoin = 21000000
nsupply.append('')
now_diff = locale.format('%.0f', now_diff, grouping=True)
context = {'nsupply': nsupply, 'fsupply': fsupply, 'dates': dates, 'now_diff': now_diff}
return render(request, 'charts/extracoins.html', context)
def inflation(request):
data = DailyData.objects.order_by('date')
inflationxmr = []
inflationbtc = []
finflationxmr = []
finflationbtc = []
dates = []
now_xmr = 999999
now_btc = 999999
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_inflation > 0.1:
inflationbtc.append(item.btc_inflation)
now_btc = item.btc_inflation
else:
inflationbtc.append('')
if item.xmr_inflation > 0.1:
inflationxmr.append(item.xmr_inflation)
now_xmr = item.xmr_inflation
else:
inflationxmr.append('')
finflationxmr.append('')
finflationbtc.append('')
inflationbitcoin = 1.75
supply = int(item.xmr_supply)*10**12
for i in range(2000):
supply = int(supply)
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*(10**12)
supply += int(720*reward)
finflationxmr.append(100*reward*720*365/supply)
date_aux = item.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
finflationbtc.append(inflationbitcoin)
date_aux2 = datetime.datetime.strftime(date_aux, '%Y-%m-%d')
if date_aux2 == '2024-04-23':
inflationbitcoin = 0.65
inflationxmr.append('')
inflationbtc.append('')
now_btc = locale.format('%.2f', now_btc, grouping=True) + '%'
now_xmr = locale.format('%.2f', now_xmr, grouping=True) + '%'
context = {'inflationxmr': inflationxmr, 'inflationbtc': inflationbtc, 'finflationxmr': finflationxmr, 'finflationbtc': finflationbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/inflation.html', context)
def blocksize(request):
data = DailyData.objects.order_by('date')
xmr_blocksize = []
btc_blocksize = []
dates = []
now_xmr = 0
now_btc = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_blocksize > 0.001:
btc_blocksize.append(item.btc_blocksize/1024)
now_btc = item.btc_blocksize
else:
btc_blocksize.append('')
if item.xmr_blocksize > 0.001:
xmr_blocksize.append(item.xmr_blocksize/1024)
now_xmr = item.xmr_blocksize
else:
xmr_blocksize.append('')
now_btc = locale.format('%.2f', now_btc, grouping=True) + ' bytes'
now_xmr = locale.format('%.2f', now_xmr, grouping=True) + ' bytes'
context = {'xmr_blocksize': xmr_blocksize, 'btc_blocksize': btc_blocksize, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/blocksize.html', context)
def transactionsize(request):
data = DailyData.objects.order_by('date')
xmr_blocksize = []
btc_blocksize = []
dates = []
now_xmr = 0
now_btc = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_blocksize > 0.001 and item.btc_transactions > 0:
now_btc = 144*item.btc_blocksize/(1024*item.btc_transactions)
btc_blocksize.append(144*item.btc_blocksize/(1024*item.btc_transactions))
else:
btc_blocksize.append('')
if item.xmr_blocksize > 0.001 and item.xmr_transactions > 0:
now_xmr = 720*item.xmr_blocksize/(1024*item.xmr_transactions)
xmr_blocksize.append(720*item.xmr_blocksize/(1024*item.xmr_transactions))
else:
xmr_blocksize.append('')
now_btc = locale.format('%.2f', now_btc, grouping=True) + ' bytes'
now_xmr = locale.format('%.2f', now_xmr, grouping=True) + ' bytes'
context = {'xmr_blocksize': xmr_blocksize, 'btc_blocksize': btc_blocksize, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/transactionsize.html', context)
def transactiondominance(request):
data = DailyData.objects.order_by('date')
xmr_dominance = []
dates = []
now_xmr = 0
maximum = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_transactions > 0:
now_xmr = 100*item.xmr_transactions/(item.xmr_transactions+item.dash_transactions+item.zcash_transactions+item.grin_transactions)
else:
now_xmr = 0
if now_xmr > maximum:
maximum = now_xmr
xmr_dominance.append(now_xmr)
now_xmr = locale.format('%.1f', now_xmr, grouping=True) + '%'
maximum = locale.format('%.1f', maximum, grouping=True) + '%'
context = {'xmr_dominance': xmr_dominance, 'now_xmr': now_xmr, 'maximum': maximum, 'dates': dates}
return render(request, 'charts/transactiondominance.html', context)
def difficulty(request):
data = DailyData.objects.order_by('date')
xmr_difficulty = []
btc_difficulty = []
dates = []
now_xmr = 0
now_btc = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_difficulty > 0.001:
now_btc = item.btc_difficulty
btc_difficulty.append(now_btc)
else:
btc_difficulty.append('')
if item.xmr_difficulty > 0.001:
now_xmr = item.xmr_difficulty
xmr_difficulty.append(now_xmr)
else:
xmr_difficulty.append('')
now_btc = locale.format('%.0f', now_btc, grouping=True)
now_xmr = locale.format('%.0f', now_xmr, grouping=True)
context = {'xmr_difficulty': xmr_difficulty, 'btc_difficulty': btc_difficulty, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/difficulty.html', context)
def blockchainsize(request):
data = DailyData.objects.order_by('date')
xmr_blocksize = []
btc_blocksize = []
dates = []
now_xmr = 0
now_btc = 0
hardfork = datetime.datetime.strptime('2016-03-23', '%Y-%m-%d') #block time changed here
for item in data:
date = datetime.datetime.strftime(item.date, '%Y-%m-%d')
dates.append(date)
date = datetime.datetime.strptime(date, '%Y-%m-%d')
if item.btc_blocksize > 0.001 and item.btc_transactions > 0:
now_btc += 144*item.btc_blocksize/1024
if now_btc < 200:
btc_blocksize.append('')
else:
btc_blocksize.append(now_btc)
else:
btc_blocksize.append('')
if item.xmr_blocksize > 0.001 and item.xmr_transactions > 0:
if date < hardfork:
now_xmr += 1440*item.xmr_blocksize/1024
else:
now_xmr += 720*item.xmr_blocksize/1024
if now_xmr < 200:
xmr_blocksize.append('')
else:
xmr_blocksize.append(now_xmr)
else:
xmr_blocksize.append('')
now_btc = locale.format('%.2f', now_btc/(1024*1024), grouping=True) + ' Gb'
now_xmr = locale.format('%.2f', now_xmr/(1024*1024), grouping=True) + ' Gb'
context = {'xmr_blocksize': xmr_blocksize, 'btc_blocksize': btc_blocksize, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/blockchainsize.html', context)
def securitybudget(request):
data = DailyData.objects.order_by('date')
xmr_security = []
btc_security = []
dates = []
now_xmr = 0
now_btc = 0
for item in data:
date = datetime.datetime.strftime(item.date, '%Y-%m-%d')
dates.append(date)
if item.btc_minerrevusd > 0.001:
now_btc = item.btc_minerrevusd/86400
btc_security.append(now_btc)
else:
btc_security.append('')
if item.xmr_minerrevusd > 0.001:
now_xmr = item.xmr_minerrevusd/86400
xmr_security.append(now_xmr)
else:
xmr_security.append('')
now_btc = '$' + locale.format('%.2f', now_btc, grouping=True)
now_xmr = '$' + locale.format('%.2f', now_xmr, grouping=True)
context = {'xmr_security': xmr_security, 'btc_security': btc_security, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/securitybudget.html', context)
def efficiency(request):
data = DailyData.objects.order_by('date')
xmr_efficiency = []
btc_efficiency = []
dates = []
now_xmr = 0
now_btc = 0
for item in data:
date = datetime.datetime.strftime(item.date, '%Y-%m-%d')
dates.append(date)
if item.btc_minerrevusd != 0 and item.btc_inflation > 0:
if (2**32)*item.btc_difficulty*0.10/(item.btc_minerrevusd*24000) > 10:
now_btc = (2**32)*item.btc_difficulty*0.10/(item.btc_minerrevusd*24000)
if now_btc > 0.01:
btc_efficiency.append(now_btc)
else:
btc_efficiency.append('')
else:
btc_efficiency.append('')
if item.xmr_minerrevusd != 0 and item.xmr_inflation > 0:
if item.xmr_difficulty*0.10/(item.xmr_minerrevusd*5000) > 0.01:
now_xmr = item.xmr_difficulty*0.10/(item.xmr_minerrevusd*5000)
if now_xmr > 0.01:
xmr_efficiency.append(now_xmr)
else:
xmr_efficiency.append('')
else:
xmr_efficiency.append('')
now_btc = locale.format('%.0f', now_btc, grouping=True)
now_xmr = locale.format('%.0f', now_xmr, grouping=True)
context = {'xmr_efficiency': xmr_efficiency, 'btc_efficiency': btc_efficiency, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/efficiency.html', context)
def compinflation(request):
data = DailyData.objects.order_by('date')
dates = []
inflationxmr = []
inflationdash = []
inflationgrin = []
inflationzcash = []
inflationbtc = []
now_xmr = 999999
now_dash = 999999
now_grin = 999999
now_zcash = 999999
now_btc = 999999
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_inflation > 0.1:
inflationbtc.append(item.btc_inflation)
now_btc = item.btc_inflation
else:
inflationbtc.append('')
if item.zcash_inflation > 0.1:
inflationzcash.append(item.zcash_inflation)
now_zcash = item.zcash_inflation
else:
inflationzcash.append('')
if item.dash_inflation > 0.1:
inflationdash.append(item.dash_inflation)
now_dash = item.dash_inflation
else:
inflationdash.append('')
if item.xmr_inflation > 0.1:
inflationxmr.append(item.xmr_inflation)
now_xmr = item.xmr_inflation
else:
inflationxmr.append('')
if item.grin_inflation > 0.1:
inflationgrin.append(item.grin_inflation)
now_grin = item.grin_inflation
else:
inflationgrin.append('')
now_dash = locale.format('%.2f', now_dash, grouping=True) + '%'
now_grin = locale.format('%.2f', now_grin, grouping=True) + '%'
now_zcash = locale.format('%.2f', now_zcash, grouping=True) + '%'
now_xmr = locale.format('%.2f', now_xmr, grouping=True) + '%'
now_btc = locale.format('%.2f', now_btc, grouping=True) + '%'
context = {'inflationxmr': inflationxmr, 'inflationdash': inflationdash, 'inflationgrin': inflationgrin, 'inflationzcash': inflationzcash, 'inflationbtc': inflationbtc,
'now_xmr': now_xmr, 'now_btc': now_btc, 'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/compinflation.html', context)
def comptransactions(request):
data = DailyData.objects.order_by('date')
dates = []
xmr = []
dash = []
grin = []
zcash = []
btc = []
now_xmr = 999999
now_dash = 999999
now_grin = 999999
now_zcash = 999999
now_btc = 999999
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_transactions > 10:
btc.append(item.btc_transactions)
now_btc = item.btc_transactions
else:
btc.append('')
if item.zcash_transactions > 10:
zcash.append(item.zcash_transactions)
now_zcash = item.zcash_transactions
else:
zcash.append('')
if item.dash_transactions > 10:
dash.append(item.dash_transactions)
now_dash = item.dash_transactions
else:
dash.append('')
if item.xmr_transactions > 10:
xmr.append(item.xmr_transactions)
now_xmr = item.xmr_transactions
else:
xmr.append('')
if item.grin_transactions > 10:
grin.append(item.grin_transactions)
now_grin = item.grin_transactions
else:
grin.append('')
now_dash = locale.format('%.0f', now_dash, grouping=True)
now_grin = locale.format('%.0f', now_grin, grouping=True)
now_zcash = locale.format('%.0f', now_zcash, grouping=True)
now_xmr = locale.format('%.0f', now_xmr, grouping=True)
now_btc = locale.format('%.0f', now_btc, grouping=True)
context = {'xmr': xmr, 'dash': dash, 'grin': grin, 'zcash': zcash, 'btc': btc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/comptransactions.html', context)
def sfmodel(request):
dates = []
stock_to_flow = []
projection = []
color = []
values = []
now_price = 0
now_sf = 0
now_inflation = 0
data = Sfmodel.objects.order_by('date')
count_aux = 0
for item in data:
if item.color != 0:
color.append(item.color)
else:
color.append('')
if item.greyline != 0:
projection.append(item.greyline)
if count_aux > 25:
count_aux = 0
else:
projection.append(item.greyline)
else:
projection.append('')
if item.stocktoflow > 0.2:
stock_to_flow.append(item.stocktoflow)
else:
stock_to_flow.append('')
if item.priceusd > 0.1:
values.append(item.priceusd)
now_price = item.priceusd
now_sf = item.stocktoflow
if item.date > date.today() - timedelta(4):
coins = Coin.objects.filter(name='xmr').filter(date=item.date)
if coins:
for coin in coins:
now_inflation = coin.inflation
else:
values.append('')
count_aux += 1
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
now_price = "$"+ locale.format('%.2f', now_price, grouping=True)
now_sf = "$"+ locale.format('%.2f', now_sf, grouping=True)
now_inflation = locale.format('%.2f', now_inflation, grouping=True)+'%'
context = {'values': values, 'dates': dates, 'stock_to_flow': stock_to_flow, 'projection': projection, 'now_price': now_price, 'now_inflation': now_inflation, 'now_sf': now_sf, 'color': color}
return render(request, 'charts/sfmodel.html', context)
def sfmodellin(request):
dates = []
stock_to_flow = []
projection = []
color = []
values = []
now_price = 0
now_sf = 0
now_inflation = 0
data = Sfmodel.objects.order_by('date')
count_aux = 0
for item in data:
if item.color != 0:
color.append(item.color)
else:
color.append('')
if item.greyline != 0:
projection.append(item.greyline)
if count_aux > 25:
count_aux = 0
else:
projection.append(item.greyline)
else:
projection.append('')
if item.stocktoflow > 0.2:
stock_to_flow.append(item.stocktoflow)
else:
stock_to_flow.append('')
if item.priceusd > 0.1:
values.append(item.priceusd)
now_price = item.priceusd
now_sf = item.stocktoflow
if item.date > date.today() - timedelta(4):
coins = Coin.objects.filter(name='xmr').filter(date=item.date)
if coins:
for coin in coins:
now_inflation = coin.inflation
else:
values.append('')
count_aux += 1
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
now_price = "$"+ locale.format('%.2f', now_price, grouping=True)
now_sf = "$"+ locale.format('%.2f', now_sf, grouping=True)
now_inflation = locale.format('%.2f', now_inflation, grouping=True)+'%'
context = {'values': values, 'dates': dates, 'stock_to_flow': stock_to_flow,'now_price': now_price, 'now_inflation': now_inflation, 'now_sf': now_sf, 'color': color}
return render(request, 'charts/sfmodellin.html', context)
def sfmultiple(request):
symbol = 'xmr'
now_sf = 0
maximum = 0
dates = []
stock_to_flow = []
buy = []
sell = []
color = []
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
sf_aux = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
buy.append(1)
sell.append(100)
if coin.stocktoflow > sf_aux*2+250:
coin.stocktoflow = sf_aux
sf_aux = coin.stocktoflow
if coin.priceusd < 1:
coin.priceusd = 1
if coin.stocktoflow != 0:
now_sf = coin.supply*coin.priceusd/(coin.stocktoflow*1500000)
stock_to_flow.append(now_sf)
buy.append(1)
sell.append(100)
if now_sf > maximum:
maximum = now_sf
new_color = 30*coin.pricebtc/(count*delta + v0)
color.append(new_color)
count += 1
now_sf = locale.format('%.2f', now_sf, grouping=True)
maximum = locale.format('%.2f', maximum, grouping=True)
context = {'dates': dates, 'maximum': maximum, 'stock_to_flow': stock_to_flow, 'now_sf': now_sf, 'buy': buy, 'sell': sell, 'color': color}
return render(request, 'charts/sfmultiple.html', context)
def marketcycle(request):
dates = []
color = []
sell = []
buy = []
data = Sfmodel.objects.order_by('date')
for item in data:
if item.color > 0:
color.append(item.color - 5)
else:
color.append('')
sell.append(100)
buy.append(0)
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
now_cycle = locale.format('%.2f', item.color, grouping=True)
context = {'dates': dates, 'color': color, 'sell': sell, 'buy': buy, 'now_cycle': now_cycle}
return render(request, 'charts/marketcycle.html', context)
def shielded(request):
dates = []
values = []
values2 = []
values3 = []
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('Sheet1')
dominance = 0
monthly = 0
values_mat = wks.get_values(start=(3,1), end=(999,5), returnas='matrix')
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][3]:
date = values_mat[k][0]
value = values_mat[k][3]
value3 = values_mat[k][4]
if not(value) or not(value):
break
else:
dates.append(date)
values.append(int(value))
values3.append(int(value3))
else:
break
previous_date = 0
coins = Coin.objects.order_by('date').filter(name='xmr')
for date in dates:
value2 = 0
for coin in coins:
aux = str(coin.date)
month = aux.split("-")[0] + '-' + aux.split("-")[1]
if month == date:
if previous_date != coin.date:
value2 += coin.transactions
previous_date = coin.date
values2.append(int(value2))
dominance = 100*int(value2)/(int(value2)+int(value)+int(value3))
monthly = int(value2)
monthly = format(int(monthly),',')
dominance = locale.format('%.2f', dominance, grouping=True)
context = {'dates': dates, 'values': values, 'values2': values2, 'values3': values3, "monthly": monthly, "dominance": dominance}
return render(request, 'charts/shielded.html', context)
def thermocap(request):
symbol = 'xmr'
dates = []
values = []
thermocap = []
color = []
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
sf_aux = 0
supply = 0
calorie = 1
calories = []
calories2 = []
calories3 = []
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
if coin.stocktoflow > sf_aux*2+250:
coin.stocktoflow = sf_aux
sf_aux = coin.stocktoflow
values.append(coin.priceusd)
new_color = 30*coin.pricebtc/(count*delta + v0)
color.append(new_color)
calorie += (coin.supply - supply)*coin.priceusd
if coin.inflation != 0:
if calorie/(4200000*math.sqrt(coin.inflation)) < 0.1:
calories.append('')
else:
calories.append(calorie/(4200000*math.sqrt(coin.inflation)))
if calorie/(1000000*math.sqrt(coin.inflation)) < 0.1:
calories2.append('')
else:
calories2.append(calorie/(1000000*math.sqrt(coin.inflation)))
if 28*calorie/(2500000*math.sqrt(coin.inflation)) < 0.1:
calories3.append('')
else:
calories3.append(28*calorie/(2500000*math.sqrt(coin.inflation)))
else:
calories.append('')
temperature = coin.priceusd/calorie
if temperature > 0.000004:
temperature = 0.000004
thermocap.append(temperature)
supply = coin.supply
count += 1
temperature = locale.format('%.2f', temperature, grouping=True)
context = {'dates': dates, 'temperature': temperature, 'values': values, 'thermocap': thermocap, 'color': color, 'calories': calories,
'calories2': calories2, 'calories3': calories3}
return render(request, 'charts/thermocap.html', context)
def sharpe(request):
symbol = 'xmr'
dates = []
values = []
color = []
rocs = []
sharpe = []
v0 = 0.002
delta = (0.015 - 0.002)/(6*365)
count = 0
price = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
new_color = 30*coin.pricebtc/(count*delta + v0)
count += 1
if count % 7 == 0:
if price == 0:
if coin.priceusd > 0:
price = coin.priceusd
roc = 0
else:
roc = 0
else:
roc = (coin.priceusd - price)/price
price = coin.priceusd
rocs.append(roc)
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
values.append(coin.priceusd)
color.append(new_color)
n = 52
median = pd.Series(rocs).rolling(window=n).mean().iloc[n-1:].values
std = pd.Series(rocs).rolling(window=n).std().iloc[n-1:].values
aux = list(map(truediv, median, std))
for count in range(51):
sharpe.append('')
for item in aux:
sharpe.append(item*math.sqrt(52))
context = {'dates': dates, 'values': values, 'color': color, 'sharpe': sharpe}
return render(request, 'charts/sharpe.html', context)
def about(request):
context = {}
return render(request, 'charts/about.html', context)
def transcost(request):
data = DailyData.objects.order_by('date')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_transcostusd == 0:
costxmr.append('')
else:
costxmr.append(item.xmr_transcostusd)
now_xmr = item.xmr_transcostusd
if item.btc_transcostusd == 0:
costbtc.append('')
else:
costbtc.append(item.btc_transcostusd)
now_btc = item.btc_transcostusd
now_btc = "$" + locale.format('%.2f', now_btc, grouping=True)
now_xmr = "$" + locale.format('%.2f', now_xmr, grouping=True)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/transcost.html', context)
def transcostntv(request):
data = DailyData.objects.order_by('date')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_transcostntv == 0:
costxmr.append('')
else:
costxmr.append(item.xmr_transcostntv)
now_xmr = item.xmr_transcostntv
if item.btc_transcostntv == 0:
costbtc.append('')
else:
costbtc.append(item.btc_transcostntv)
now_btc = item.btc_transcostntv
now_btc = locale.format('%.6f', now_btc, grouping=True)
now_xmr = locale.format('%.6f', now_xmr, grouping=True)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/transcostntv.html', context)
def minerrevcap(request):
data = DailyData.objects.order_by('date')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.xmr_minerrevcap == 0:
costxmr.append('')
else:
costxmr.append(item.xmr_minerrevcap)
now_xmr = item.xmr_minerrevcap
if item.btc_minerrevcap == 0:
costbtc.append('')
else:
costbtc.append(item.btc_minerrevcap)
now_btc = item.btc_minerrevcap
now_btc = locale.format('%.2f', now_btc, grouping=True) + "%"
now_xmr = locale.format('%.2f', now_xmr, grouping=True) + "%"
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/minerrevcap.html', context)
def minerrev(request):
data = DailyData.objects.order_by('date')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_minerrevusd < 0.0001:
costbtc.append('')
else:
costbtc.append(item.btc_minerrevusd)
now_btc = item.btc_minerrevusd
if item.xmr_minerrevusd < 0.0001:
costxmr.append('')
else:
costxmr.append(item.xmr_minerrevusd)
now_xmr = item.xmr_minerrevusd
now_btc = "$" + locale.format('%.2f', now_btc, grouping=True)
now_xmr = "$" + locale.format('%.2f', now_xmr, grouping=True)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/minerrev.html', context)
def minerrevntv(request):
data = DailyData.objects.order_by('date')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_minerrevntv < 0.0001:
costbtc.append('')
else:
costbtc.append(item.btc_minerrevntv)
now_btc = item.btc_minerrevntv
if item.xmr_minerrevntv < 0.0001:
costxmr.append('')
else:
costxmr.append(item.xmr_minerrevntv)
now_xmr = item.xmr_minerrevntv
now_btc = locale.format('%.2f', now_btc, grouping=True)
now_xmr = locale.format('%.2f', now_xmr, grouping=True)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/minerrevntv.html', context)
def minerfeesntv(request):
data = DailyData.objects.order_by('date')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_minerfeesntv < 0.1:
costbtc.append('')
else:
costbtc.append(item.btc_minerfeesntv)
now_btc = item.btc_minerfeesntv
if item.xmr_minerfeesntv < 0.1:
costxmr.append('')
else:
costxmr.append(item.xmr_minerfeesntv)
now_xmr = item.xmr_minerfeesntv
now_btc = locale.format('%.2f', now_btc, grouping=True)
now_xmr = locale.format('%.2f', now_xmr, grouping=True)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/minerfeesntv.html', context)
def minerfees(request):
data = DailyData.objects.order_by('date')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_minerfeesusd < 1:
costbtc.append('')
else:
costbtc.append(item.btc_minerfeesusd)
now_btc = item.btc_minerfeesusd
if item.xmr_minerfeesusd < 1:
costxmr.append('')
else:
costxmr.append(item.xmr_minerfeesusd)
now_xmr = item.xmr_minerfeesusd
now_btc = locale.format('%.2f', now_btc, grouping=True)
now_xmr = locale.format('%.2f', now_xmr, grouping=True)
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/minerfees.html', context)
def dailyemissionntv(request):
data = DailyData.objects.order_by('date')
emissionbtc = []
emissionxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
if item.btc_emissionntv == 0:
emissionbtc.append('')
else:
emissionbtc.append(item.btc_emissionntv)
now_btc = item.btc_emissionntv
if item.xmr_emissionntv == 0:
emissionxmr.append('')
else:
emissionxmr.append(item.xmr_emissionntv)
now_xmr = item.xmr_emissionntv
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
for i in range(500):
date_aux = item.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
emissionxmr.append('')
emissionbtc.append('')
now_btc = locale.format('%.0f', now_btc, grouping=True)
now_xmr = locale.format('%.0f', now_xmr, grouping=True)
context = {'emissionxmr': emissionxmr, 'emissionbtc': emissionbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/dailyemissionntv.html', context)
def commit(request):
data = DailyData.objects.order_by('date')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_commitusd < 0.000001:
costbtc.append('')
else:
costbtc.append(item.btc_commitusd)
now_btc = item.btc_commitusd
if item.xmr_commitusd < 0.000001:
costxmr.append('')
else:
costxmr.append(item.xmr_commitusd)
now_xmr = item.xmr_commitusd
now_btc = locale.format('%.2f', now_btc, grouping=True) + " hashs / dollar"
now_xmr = locale.format('%.2f', now_xmr, grouping=True) + " hashs / dollar"
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/commit.html', context)
def commitntv(request):
data = DailyData.objects.order_by('date')
costbtc = []
costxmr = []
dates = []
now_btc = 0
now_xmr = 0
for item in data:
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.btc_commitntv < 0.00001:
costbtc.append('')
else:
costbtc.append(item.btc_commitntv)
now_btc = item.btc_commitntv
if item.xmr_commitntv < 0.00001:
costxmr.append('')
else:
costxmr.append(item.xmr_commitntv)
now_xmr = item.xmr_commitntv
now_btc = locale.format('%.0f', now_btc, grouping=True) + " hashs / btc"
now_xmr = locale.format('%.0f', now_xmr, grouping=True) + " hashs / xmr"
context = {'costxmr': costxmr, 'costbtc': costbtc, 'now_xmr': now_xmr, 'now_btc': now_btc, 'dates': dates}
return render(request, 'charts/commitntv.html', context)
def competitorssats(request):
dates = []
xmr = []
dash = []
grin = []
zcash = []
count = 0
now_xmr = 0
now_dash = 0
now_grin = 0
now_zcash = 0
count = 0
coins_xmr = Coin.objects.order_by('date').filter(name='xmr')
for coin_xmr in coins_xmr:
if coin_xmr.pricebtc:
if count > 32:
xmr.append(coin_xmr.pricebtc/0.0058)
now_xmr = coin_xmr.pricebtc/0.0058
dates.append(count)
count += 1
elif count <= 63:
continue
else:
xmr.append('')
count = 0
coins_dash = Coin.objects.order_by('date').filter(name='dash')
for coin_dash in coins_dash:
count += 1
if coin_dash.pricebtc and count > 130:
dash.append(coin_dash.pricebtc/0.02)
now_dash = coin_dash.pricebtc/0.02
elif count <= 130:
continue
else:
dash.append('')
dates.append(count)
count = 0
coins_grin = Coin.objects.order_by('date').filter(name='grin')
for coin_grin in coins_grin:
count += 1
if coin_grin.pricebtc and count > 155:
grin.append(coin_grin.pricebtc/0.000513)
now_grin = coin_grin.pricebtc/0.000513
elif count <= 155:
continue
else:
grin.append('')
dates.append(count)
count = 0
coins_zcash = Coin.objects.order_by('date').filter(name='zec')
for coin_zcash in coins_zcash:
count += 1
if coin_zcash.pricebtc and count > 434:
zcash.append(coin_zcash.pricebtc/0.05)
now_zcash = coin_zcash.pricebtc/0.05
elif count <= 434:
continue
else:
zcash.append('')
dates.append(count)
now_dash = locale.format('%.3f', now_dash, grouping=True)
now_grin = locale.format('%.3f', now_grin, grouping=True)
now_zcash = locale.format('%.3f', now_zcash, grouping=True)
now_xmr = locale.format('%.3f', now_xmr, grouping=True)
context = {'xmr': xmr, 'dash': dash, 'grin': grin, 'zcash': zcash, 'now_xmr': now_xmr,
'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'dates': dates}
return render(request, 'charts/competitorssats.html', context)
def competitorssatslin(request):
dates = []
xmr = []
dash = []
grin = []
zcash = []
count = 0
now_xmr = 0
now_dash = 0
now_grin = 0
now_zcash = 0
count = 0
coins_xmr = Coin.objects.order_by('date').filter(name='xmr')
for coin_xmr in coins_xmr:
if coin_xmr.pricebtc:
if count > 32:
xmr.append(coin_xmr.pricebtc/0.0058)
now_xmr = coin_xmr.pricebtc/0.0058
dates.append(count)
count += 1
elif count <= 63:
continue
else:
xmr.append('')
count = 0
coins_dash = Coin.objects.order_by('date').filter(name='dash')
for coin_dash in coins_dash:
count += 1
if coin_dash.pricebtc and count > 130:
dash.append(coin_dash.pricebtc/0.02)
now_dash = coin_dash.pricebtc/0.02
elif count <= 130:
continue
else:
dash.append('')
dates.append(count)
count = 0
coins_grin = Coin.objects.order_by('date').filter(name='grin')
for coin_grin in coins_grin:
count += 1
if coin_grin.pricebtc and count > 155:
grin.append(coin_grin.pricebtc/0.000513)
now_grin = coin_grin.pricebtc/0.000513
elif count <= 155:
continue
else:
grin.append('')
dates.append(count)
count = 0
coins_zcash = Coin.objects.order_by('date').filter(name='zec')
for coin_zcash in coins_zcash:
count += 1
if coin_zcash.pricebtc and count > 434:
zcash.append(coin_zcash.pricebtc/0.05)
now_zcash = coin_zcash.pricebtc/0.05
elif count <= 434:
continue
else:
zcash.append('')
dates.append(count)
now_dash = locale.format('%.3f', now_dash, grouping=True)
now_grin = locale.format('%.3f', now_grin, grouping=True)
now_zcash = locale.format('%.3f', now_zcash, grouping=True)
now_xmr = locale.format('%.3f', now_xmr, grouping=True)
context = {'xmr': xmr, 'dash': dash, 'grin': grin, 'zcash': zcash, 'now_xmr': now_xmr,
'now_dash': now_dash, 'now_grin': now_grin, 'now_zcash': now_zcash, 'dates': dates}
return render(request, 'charts/competitorssatslin.html', context)
def dread_subscribers(request):
dates = []
data1 = []
data2 = []
now_xmr = 0
now_btc = 0
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('Sheet6')
values_mat = wks.get_values(start=(3,1), end=(99,3), returnas='matrix')
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][2]:
date = values_mat[k][0]
value1 = values_mat[k][1]
value2 = values_mat[k][2]
if not(value1) or not(value2):
break
else:
dates.append(date)
data1.append(int(value1))
data2.append(int(value2))
now_xmr = int(value2)
now_btc = int(value1)
else:
break
dominance = 100*int(value2)/(int(value2)+int(value1))
now_btc = locale.format('%.0f', now_btc, grouping=True)
now_xmr = locale.format('%.0f', now_xmr, grouping=True)
dominance = locale.format('%.2f', dominance, grouping=True)
context = {'dates': dates, 'now_btc': now_btc, 'now_xmr': now_xmr, 'data1': data1, "data2": data2, "dominance": dominance}
return render(request, 'charts/dread_subscribers.html', context)
def coincards(request):
dates = []
data1 = []
data2 = []
data3 = []
data4 = []
now_xmr = 0
now_btc = 0
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('Sheet2')
values_mat = wks.get_values(start=(3,1), end=(99,5), returnas='matrix')
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][2]:
date = values_mat[k][0]
value1 = values_mat[k][1]
value2 = values_mat[k][2]
value3 = values_mat[k][3]
value4 = values_mat[k][4]
if not(value1) or not(value2) or not(value3) or not(value4):
break
else:
dates.append(date)
data1.append(float(value1.replace(',','.')))
data2.append(float(value2.replace(',','.')))
data3.append(float(value3.replace(',','.')))
data4.append(float(value4.replace(',','.')))
now_btc = float(value1.replace(',','.'))
now_xmr = float(value2.replace(',','.'))
now_eth = float(value3.replace(',','.'))
now_others = float(value4.replace(',','.'))
else:
break
now_btc = locale.format('%.1f', now_btc, grouping=True)
now_xmr = locale.format('%.1f', now_xmr, grouping=True)
now_eth = locale.format('%.1f', now_eth, grouping=True)
now_others = locale.format('%.1f', now_others, grouping=True)
context = {'dates': dates, 'now_btc': now_btc, 'now_xmr': now_xmr, 'now_eth': now_eth, 'now_others': now_others, 'data1': data1, "data2": data2, "data3": data3, "data4": data4}
return render(request, 'charts/coincards.html', context)
def merchants(request):
dates = []
data1 = []
data2 = []
data3 = []
data4 = []
data5 = []
data6 = []
data7 = []
now_xmr = 0
now_btc = 0
now_eth = 0
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('Sheet3')
values_mat = wks.get_values(start=(3,1), end=(99,8), returnas='matrix')
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][2]:
date = values_mat[k][0]
value1 = values_mat[k][1]
value2 = values_mat[k][2]
value3 = values_mat[k][3]
value4 = values_mat[k][4]
value5 = values_mat[k][5]
value6 = values_mat[k][6]
value7 = values_mat[k][7]
if not(value1) or not(value2) or not(value3) or not(value4) or not(value5) or not(value6) or not(value7):
break
else:
dates.append(date)
data1.append(int(value1))
data2.append(int(value2))
data3.append(int(value3))
data4.append(int(value4))
data5.append(int(value5))
data6.append(int(value6))
data7.append(int(value7))
now_btc = int(value1)
now_xmr = int(value2)
now_eth = int(value3)
else:
break
now_btc = locale.format('%.0f', now_btc, grouping=True)
now_xmr = locale.format('%.0f', now_xmr, grouping=True)
now_eth = locale.format('%.0f', now_eth, grouping=True)
context = {'dates': dates, 'now_btc': now_btc, 'now_xmr': now_xmr, 'now_eth': now_eth, 'data1': data1, "data2": data2, "data3": data3, "data4": data4, "data5": data5, "data6": data6, "data7": data7}
return render(request, 'charts/merchants.html', context)
def merchants_increase(request):
dates = []
data1 = []
data2 = []
data3 = []
data4 = []
data5 = []
data6 = []
data7 = []
now_xmr = 0
now_btc = 0
now_eth = 0
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('Sheet4')
values_mat = wks.get_values(start=(3,1), end=(99,8), returnas='matrix')
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][2]:
date = values_mat[k][0]
value1 = values_mat[k][1]
value2 = values_mat[k][2]
value3 = values_mat[k][3]
value4 = values_mat[k][4]
value5 = values_mat[k][5]
value6 = values_mat[k][6]
value7 = values_mat[k][7]
if not(value1) or not(value2) or not(value3) or not(value4) or not(value5) or not(value6) or not(value7):
break
else:
dates.append(date)
data1.append(int(value1))
data2.append(int(value2))
data3.append(int(value3))
data4.append(int(value4))
data5.append(int(value5))
data6.append(int(value6))
data7.append(int(value7))
now_btc = int(value1)
now_xmr = int(value2)
now_eth = int(value3)
else:
break
now_btc = locale.format('%.0f', now_btc, grouping=True)
now_xmr = locale.format('%.0f', now_xmr, grouping=True)
now_eth = locale.format('%.0f', now_eth, grouping=True)
context = {'dates': dates, 'now_btc': now_btc, 'now_xmr': now_xmr, 'now_eth': now_eth, 'data1': data1, "data2": data2, "data3": data3, "data4": data4, "data5": data5, "data6": data6, "data7": data7}
return render(request, 'charts/merchants_increase.html', context)
def merchants_percentage(request):
dates = []
data1 = []
data2 = []
data3 = []
data4 = []
data5 = []
data6 = []
data7 = []
now_xmr = 0
now_btc = 0
now_eth = 0
gc = pygsheets.authorize(service_file='service_account_credentials.json')
sh = gc.open('zcash_bitcoin')
wks = sh.worksheet_by_title('Sheet5')
values_mat = wks.get_values(start=(3,1), end=(99,8), returnas='matrix')
for k in range(0,len(values_mat)):
if values_mat[k][0] and values_mat[k][2]:
date = values_mat[k][0]
value1 = values_mat[k][1]
value2 = values_mat[k][2]
value3 = values_mat[k][3]
value4 = values_mat[k][4]
value5 = values_mat[k][5]
value6 = values_mat[k][6]
value7 = values_mat[k][7]
if not(value1) or not(value2) or not(value3) or not(value4) or not(value5) or not(value6) or not(value7):
break
else:
dates.append(date)
data1.append(float(value1.replace(',', '.')))
data2.append(float(value2.replace(',', '.')))
data3.append(float(value3.replace(',', '.')))
data4.append(float(value4.replace(',', '.')))
data5.append(float(value5.replace(',', '.')))
data6.append(float(value6.replace(',', '.')))
data7.append(float(value7.replace(',', '.')))
now_btc = float(value1.replace(',', '.'))
now_xmr = float(value2.replace(',', '.'))
now_eth = float(value3.replace(',', '.'))
else:
break
now_btc = locale.format('%.1f', now_btc, grouping=True)
now_xmr = locale.format('%.1f', now_xmr, grouping=True)
now_eth = locale.format('%.1f', now_eth, grouping=True)
context = {'dates': dates, 'now_btc': now_btc, 'now_xmr': now_xmr, 'now_eth': now_eth, 'data1': data1, "data2": data2, "data3": data3, "data4": data4, "data5": data5, "data6": data6, "data7": data7}
return render(request, 'charts/merchants_percentage.html', context)
def dominance(request):
symbol = 'xmr'
values = []
pricexmr = []
dates = []
now_value = 0
maximum = 0
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
try:
dominance = Dominance.objects.get(date=coin.date)
if dominance.dominance > 0:
values.append(dominance.dominance)
now_value = dominance.dominance
if now_value > maximum:
maximum = now_value
else:
values.append('')
except:
values.append('')
if coin.priceusd > 0.001:
pricexmr.append(coin.priceusd)
else:
pricexmr.append('')
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
yesterday = date.today() - timedelta(1)
yesterday = datetime.datetime.strftime(yesterday, '%Y-%m-%d')
if coin.date == yesterday:
today = date.today()
today = datetime.datetime.strftime(today, '%Y-%m-%d')
try:
dominance = list(Dominance.objects.order_by('-date'))[0]
if str(dominance.date) == str(today):
now_value = dominance.dominance
dates.append(today)
values.append(now_value)
if now_value > maximum:
maximum = now_value
except:
pass
now_value = locale.format('%.2f', now_value, grouping=True)
maximum = locale.format('%.2f', maximum, grouping=True)
context = {'values': values, 'dates': dates, 'maximum': maximum, 'now_value': now_value, 'pricexmr': pricexmr}
return render(request, 'charts/dominance.html', context)
def rank(request):
symbol = 'xmr'
values = []
pricexmr = []
dates = []
now_value = 25
maximum = 100
coins = Coin.objects.order_by('date').filter(name=symbol)
for coin in coins:
try:
rank = Rank.objects.get(date=coin.date)
if rank.rank > 0:
values.append(rank.rank)
now_value = rank.rank
if now_value < maximum:
maximum = now_value
else:
values.append(now_value)
except:
values.append(now_value)
if coin.priceusd > 0.001:
pricexmr.append(coin.priceusd)
else:
pricexmr.append('')
coin.date = datetime.datetime.strftime(coin.date, '%Y-%m-%d')
dates.append(coin.date)
yesterday = date.today() - timedelta(1)
yesterday = datetime.datetime.strftime(yesterday, '%Y-%m-%d')
if coin.date == yesterday:
today = date.today()
today = datetime.datetime.strftime(today, '%Y-%m-%d')
try:
rank = list(Rank.objects.order_by('-date'))[0]
if str(rank.date) == str(today):
now_value = rank.rank
dates.append(today)
values.append(now_value)
if now_value < maximum:
maximum = now_value
except:
pass
if now_value == 1:
now_value = locale.format('%.0f', now_value, grouping=True) + 'st'
if now_value == 2:
now_value = locale.format('%.0f', now_value, grouping=True) + 'nd'
if now_value == 3:
now_value = locale.format('%.0f', now_value, grouping=True) + 'rd'
if now_value > 3:
now_value = locale.format('%.0f', now_value, grouping=True) + 'th'
if maximum == 1:
maximum = locale.format('%.0f', maximum, grouping=True) + 'st'
if maximum == 2:
maximum = locale.format('%.0f', maximum, grouping=True) + 'nd'
if maximum == 3:
maximum = locale.format('%.0f', maximum, grouping=True) + 'rd'
if maximum > 3:
maximum = locale.format('%.0f', maximum, grouping=True) + 'th'
context = {'values': values, 'dates': dates, 'maximum': maximum, 'now_value': now_value, 'pricexmr': pricexmr}
return render(request, 'charts/rank.html', context)
def p2pool_hashrate(request):
hashrate = []
hashrate_mini = []
combined = []
dates = []
now_hashrate = 0
now_hashrate_mini = 0
now_combined = 0
p2pool_stats = P2Pool.objects.order_by('date').filter(mini=False)
for p2pool_stat in p2pool_stats:
now_combined = 0
if p2pool_stat.hashrate and p2pool_stat.percentage > 0:
now_hashrate = p2pool_stat.hashrate/1000000
now_combined = p2pool_stat.hashrate/1000000
hashrate.append(now_hashrate)
try:
p2pool_stat_mini = P2Pool.objects.filter(mini=True).get(date=p2pool_stat.date)
if p2pool_stat_mini.hashrate and p2pool_stat_mini.percentage > 0:
now_hashrate_mini = p2pool_stat_mini.hashrate/1000000
now_combined += p2pool_stat_mini.hashrate/1000000
except:
pass
hashrate_mini.append(now_hashrate_mini)
combined.append(now_combined)
dates.append(datetime.datetime.strftime(p2pool_stat.date, '%Y-%m-%d'))
context = {'hashrate': hashrate, 'dates': dates, 'hashrate_mini': hashrate_mini, 'combined': combined}
return render(request, 'charts/p2pool_hashrate.html', context)
def p2pool_dominance(request):
dominance = []
dominance_mini = []
dates = []
combined = []
now_dominance = 0
now_dominance_mini = 0
p2pool_stats = P2Pool.objects.order_by('date').filter(mini=False)
for p2pool_stat in p2pool_stats:
now_combined = 0
if p2pool_stat.hashrate and p2pool_stat.percentage > 0:
now_dominance = p2pool_stat.percentage
now_combined += p2pool_stat.percentage
dominance.append(now_dominance)
try:
p2pool_stat_mini = P2Pool.objects.filter(mini=True).get(date=p2pool_stat.date)
if p2pool_stat_mini.hashrate and p2pool_stat_mini.percentage > 0:
now_dominance_mini = p2pool_stat_mini.percentage
now_combined += p2pool_stat_mini.percentage
except:
pass
dominance_mini.append(now_dominance_mini)
combined.append(now_combined)
dates.append(datetime.datetime.strftime(p2pool_stat.date, '%Y-%m-%d'))
context = {'dominance': dominance, 'dates': dates, 'dominance_mini': dominance_mini,'combined': combined}
return render(request, 'charts/p2pool_dominance.html', context)
def p2pool_totalblocks(request):
dates = []
totalblocks = []
totalblocks_mini = []
combined = []
now_totalblocks = 0
now_totalblocks_mini = 0
now_combined = 0
p2pool_stats = P2Pool.objects.order_by('date').filter(mini=False)
for p2pool_stat in p2pool_stats:
now_combined = 0
if p2pool_stat.totalblocksfound > now_totalblocks:
now_totalblocks = p2pool_stat.totalblocksfound
now_combined += p2pool_stat.totalblocksfound
totalblocks.append(now_totalblocks)
p2pool_stats_mini = P2Pool.objects.filter(mini=True).filter(date=p2pool_stat.date)
for p2pool_stat_mini in p2pool_stats_mini:
if p2pool_stat_mini.totalblocksfound >= now_totalblocks_mini:
now_totalblocks_mini = p2pool_stat_mini.totalblocksfound
now_combined += p2pool_stat_mini.totalblocksfound
break
totalblocks_mini.append(now_totalblocks_mini)
combined.append(now_combined)
dates.append(datetime.datetime.strftime(p2pool_stat.date, '%Y-%m-%d'))
context = {'totalblocks': totalblocks, 'totalblocks_mini': totalblocks_mini, 'dates': dates, 'combined': combined}
return render(request, 'charts/p2pool_totalblocks.html', context)
def p2pool_totalhashes(request):
dates = []
totalblocks = []
totalblocks_mini = []
combined = []
now_totalblocks = 0
now_totalblocks_mini = 0
now_combined = 0
p2pool_stats = P2Pool.objects.order_by('date').filter(mini=False)
for p2pool_stat in p2pool_stats:
now_combined = 0
if p2pool_stat.totalhashes > now_totalblocks:
now_totalblocks = p2pool_stat.totalhashes/1000000000000
now_combined += p2pool_stat.totalhashes/1000000000000
totalblocks.append(now_totalblocks)
try:
p2pool_stat_mini = P2Pool.objects.filter(mini=True).get(date=p2pool_stat.date)
if p2pool_stat_mini.totalhashes >= now_totalblocks_mini:
now_totalblocks_mini = p2pool_stat_mini.totalhashes/1000000000000
now_combined += p2pool_stat_mini.totalhashes/1000000000000
except:
pass
totalblocks_mini.append(now_totalblocks_mini)
combined.append(now_combined)
dates.append(datetime.datetime.strftime(p2pool_stat.date, '%Y-%m-%d'))
context = {'totalblocks': totalblocks, 'totalblocks_mini': totalblocks_mini, 'dates': dates, 'combined': combined}
return render(request, 'charts/p2pool_totalhashes.html', context)
def p2pool_miners(request):
miners = []
miners_mini = []
dates = []
combined = []
now_miners = 0
now_miners_mini = 0
p2pool_stats = P2Pool.objects.order_by('date').filter(mini=False)
for p2pool_stat in p2pool_stats:
now_combined = 0
if p2pool_stat.miners > 0:
now_miners = p2pool_stat.miners
now_combined += p2pool_stat.miners
miners.append(now_miners)
try:
p2pool_stat_mini = P2Pool.objects.filter(mini=True).get(date=p2pool_stat.date)
if p2pool_stat_mini.miners > 0:
now_miners_mini = p2pool_stat_mini.miners
now_combined += p2pool_stat_mini.miners
except:
pass
miners_mini.append(now_miners_mini)
combined.append(now_combined)
dates.append(datetime.datetime.strftime(p2pool_stat.date, '%Y-%m-%d'))
context = {'miners': miners, 'dates': dates, 'miners_mini': miners_mini, 'combined': combined}
return render(request, 'charts/p2pool_miners.html', context)
def miningprofitability(request):
dates = []
value = []
now_value = 0
coins = Coin.objects.order_by('date').filter(name='xmr')
for coin in coins:
if coin.hashrate > 0 and coin.priceusd > 0 and coin.revenue > 0:
if 1000*coin.priceusd*coin.revenue/coin.hashrate < 5000:
now_value = 1000*coin.priceusd*coin.revenue/coin.hashrate
dates.append(datetime.datetime.strftime(coin.date, '%Y-%m-%d'))
value.append(now_value)
context = {'value': value, 'dates': dates}
return render(request, 'charts/miningprofitability.html', context)
def tail_emission(request):
inflationxmr = []
finflationxmr = []
dates = []
now_xmr = 999999
coins = Coin.objects.order_by('date').filter(name='xmr')
for coin in coins:
now_xmr = float(coin.inflation)
supply = int(coin.supply)*10**12
for i in range(210000):
supply = int(supply)
reward = (2**64 -1 - supply) >> 19
if reward < 0.6*(10**12):
reward = 0.6*(10**12)
supply += int(720*reward)
finflationxmr.append(100*reward*720*365/supply)
date_aux = coin.date + timedelta(i)
dates.append(datetime.datetime.strftime(date_aux, '%Y-%m-%d'))
now_xmr = locale.format('%.2f', now_xmr, grouping=True) + '%'
context = {'inflationxmr': inflationxmr, 'finflationxmr': finflationxmr, 'now_xmr': now_xmr, 'dates': dates}
return render(request, 'charts/tail_emission.html', context)
def privacymarketcap(request):
data = DailyData.objects.order_by('date')
dates = []
marketcaps = []
xmr_marketcaps = []
now_marketcap = 0
now_dominance = 0
top_marketcap = 0
top_dominance = 0
for item in data:
marketcap = 0
dominance = 0
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.zcash_marketcap > 1000000:
marketcap += item.zcash_marketcap
if item.dash_marketcap > 1000000:
marketcap += item.dash_marketcap
if item.grin_marketcap > 1000000:
marketcap += item.grin_marketcap
if item.xmr_marketcap > 1000000:
marketcap += item.xmr_marketcap
try:
xmr_dominance = Dominance.objects.get(date=item.date)
dominance = marketcap*xmr_dominance.dominance/item.xmr_marketcap
except:
dominance = now_dominance
xmr_marketcaps.append(item.xmr_marketcap)
else:
xmr_marketcaps.append('')
now_marketcap = marketcap
now_dominance = dominance
if now_marketcap > top_marketcap:
top_marketcap = now_marketcap
if now_dominance > top_dominance:
top_dominance = now_dominance
if marketcap > 3000000:
marketcaps.append(marketcap)
else:
marketcaps.append('')
now_marketcap = '$'+locale.format('%.0f', now_marketcap, grouping=True)
now_dominance = locale.format('%.2f', now_dominance, grouping=True) + '%'
top_marketcap = '$'+locale.format('%.0f', top_marketcap, grouping=True)
top_dominance = locale.format('%.2f', top_dominance, grouping=True) + '%'
context = {'marketcaps': marketcaps, 'now_marketcap': now_marketcap, 'now_dominance': now_dominance, 'top_marketcap': top_marketcap, 'top_dominance': top_dominance, 'dates': dates, 'xmr_marketcaps': xmr_marketcaps}
return render(request, 'charts/privacymarketcap.html', context)
def privacydominance(request):
data = DailyData.objects.order_by('date')
dates = []
marketcaps = []
dominances = []
now_marketcap = 0
now_dominance = 0
top_marketcap = 0
top_dominance = 0
for item in data:
marketcap = 0
dominance = 0
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.zcash_marketcap > 100000:
marketcap += item.zcash_marketcap
if item.dash_marketcap > 100000:
marketcap += item.dash_marketcap
if item.grin_marketcap > 100000:
marketcap += item.grin_marketcap
if item.xmr_marketcap > 100000:
marketcap += item.xmr_marketcap
try:
xmr_dominance = Dominance.objects.get(date=item.date)
dominance = marketcap*xmr_dominance.dominance/item.xmr_marketcap
except:
dominance = now_dominance
now_marketcap = marketcap
now_dominance = dominance
if now_marketcap > top_marketcap:
top_marketcap = now_marketcap
if now_dominance > top_dominance:
top_dominance = now_dominance
if marketcap > 300000:
marketcaps.append(marketcap)
else:
marketcaps.append('')
if dominance > 0:
dominances.append(dominance)
else:
dominances.append('')
now_marketcap = '$'+locale.format('%.0f', now_marketcap, grouping=True)
now_dominance = locale.format('%.2f', now_dominance, grouping=True) + '%'
top_marketcap = '$'+locale.format('%.0f', top_marketcap, grouping=True)
top_dominance = locale.format('%.2f', top_dominance, grouping=True) + '%'
context = {'marketcaps': marketcaps, 'dominances':dominances, 'now_marketcap': now_marketcap, 'now_dominance': now_dominance, 'top_marketcap': top_marketcap, 'top_dominance': top_dominance, 'dates': dates}
return render(request, 'charts/privacydominance.html', context)
def monerodominance(request):
data = DailyData.objects.order_by('date')
dates = []
marketcaps = []
xmr_dominance = []
now_marketcap = 0
now_dominance = 0
top_marketcap = 0
top_dominance = 0
zec_cap = 0
dash_cap = 0
grin_cap = 0
for item in data:
marketcap = 0
dominance = 0
dates.append(datetime.datetime.strftime(item.date, '%Y-%m-%d'))
if item.zcash_marketcap > 1000000:
zec_cap = item.zcash_marketcap
marketcap += zec_cap
else:
marketcap += zec_cap
if item.dash_marketcap > 1000000:
dash_cap = item.dash_marketcap
marketcap += dash_cap
else:
marketcap += dash_cap
if item.grin_marketcap > 1000000:
grin_cap = item.grin_marketcap
marketcap += grin_cap
else:
marketcap += grin_cap
if item.xmr_marketcap > 1000000:
marketcap += item.xmr_marketcap
dominance = 100*item.xmr_marketcap/marketcap
now_marketcap = marketcap
now_dominance = dominance
if now_marketcap > top_marketcap:
top_marketcap = now_marketcap
if now_dominance > top_dominance:
top_dominance = now_dominance
if marketcap > 3000000:
marketcaps.append(marketcap)
else:
marketcaps.append('')
if dominance > 0:
xmr_dominance.append(dominance)
else:
xmr_dominance.append('')
now_marketcap = '$'+locale.format('%.0f', now_marketcap, grouping=True)
now_dominance = locale.format('%.2f', now_dominance, grouping=True) + '%'
top_marketcap = '$'+locale.format('%.0f', top_marketcap, grouping=True)
top_dominance = locale.format('%.2f', top_dominance, grouping=True) + '%'
context = {'marketcaps': marketcaps, 'xmr_dominance': xmr_dominance, 'now_marketcap': now_marketcap, 'now_dominance': now_dominance, 'top_marketcap': top_marketcap, 'top_dominance': top_dominance, 'dates': dates}
return render(request, 'charts/monerodominance.html', context)
def withdrawals(request):
states = []
dates = []
withdrawals = Withdrawal.objects.order_by('date')
for withdrawal in withdrawals:
dates.append(datetime.datetime.strftime(withdrawal.date, '%Y-%m-%d %H'))
if withdrawal.state:
states.append(1)
else:
states.append(0)
context = {'states': states, 'dates': dates}
return render(request, 'charts/withdrawals.html', context)