SeanChenTaipei 2 years ago
parent f56b681026
commit e0a6ffed3a
  1. 35
      main.py
  2. 21
      templates/result.html
  3. 26
      templates/strategy_tw.html

@ -140,7 +140,7 @@ def login_post():
flash('使用者代號不對或密碼不對,請再試一次。', 'danger')
return render_template('login.html')
elif check_password_hash(data[2], password):
session['username'] = username
session['username'] = username.split('@')[0]
session['user_id'] = data[0]
session['privilege'] = data[-1]
session['update_freq'] = 100
@ -388,32 +388,37 @@ def result():
elif request.method=='POST':
role = request.form.get('role')
comp = request.form.get('competition')
if role == "my":
conn = psycopg2.connect(**SQL_CONFIG)
with conn:
with conn.cursor() as curs:
sql=f"select id, date, name, username, annual_ret, vol, annual_sr, mdd\
from strategy where username=%s order by id desc limit 50;"
curs.execute(sql, (session['username'], ))
data= curs.fetchall()
conn.close()
return render_template('result.html', strategy_data=data)
if role in ['id', 'annual_ret', 'annual_sr', 'vol']:
pass
else:
role='id'
if role == 'vol':
order= 'asc'
else:
order= 'desc'
if comp == 'none':
comp=None
print("result", type(role), type(comp))
print("result", role)
conn = psycopg2.connect(**SQL_CONFIG)
with conn:
with conn.cursor() as curs:
if comp is None:
if role is None:
sql="select id, date, name, username, annual_ret, vol, annual_sr, mdd\
from strategy order by id desc limit 50"
curs.execute(sql)
elif role=='vol':
sql=f"select id, date, name, username, annual_ret, vol, annual_sr, mdd\
from strategy order by {role} asc limit 50"
curs.execute(sql)
else:
sql=f"select id, date, name, username, annual_ret, vol, annual_sr, mdd\
from strategy order by {role} desc limit 50"
curs.execute(sql)
sql=f"select id, date, name, username, annual_ret, vol, annual_sr, mdd\
from strategy order by {role} {order} limit 50"
curs.execute(sql)
else:
sql=f"select id, date, name, username, annual_ret, vol, annual_sr, mdd\
from strategy where competition=%s order by {role} desc limit 50;"
from strategy where competition=%s order by {role} {order} limit 50;"
curs.execute(sql, (comp, ))
data= curs.fetchall()
conn.close()

@ -2,14 +2,16 @@
{% set active_page = 'result' %}
{% block style %}
.card-header {
color: #000093;
}
{% endblock style %}
{% block title %}Result Page{% endblock%}
{% block content %}
<div class="container-fluid" style="background-color: #eee;;min-height:92%;position:relative;">
<div class="container-fluid px-1 py-4">
<div class="alert alert-secondary p-3 mx-3" role="alert">
<div class="alert alert-secondary p-3 mx-3" role="alert" style="border: 1px solid black">
<div class="flex-row">
<p class="font-italic font-bold text-xl">
"Risk comes from not knowing what you're doing."
@ -34,25 +36,18 @@
<option value="annual_ret">報酬率排序</option>
<option value="annual_sr">夏普率排序</option>
<option value="vol">波動率排序</option>
<option value="my">我的策略</option>
</select>
</div>
<div class="d-flex flex-column-reverse">
<div class="ms-auto">
<div class="">
<button id="changeComp" type="submit" class="btn btn-secondary"><i class="bi bi-arrow-right-square-fill"></i></button>
</div>
</div>
</form>
</div>
<div class="card m-3">
<div card="card p-3 m-3">
<div class="card-header">
<div class="d-flex">
Hello
</div>
策略排行
</div>
<div class="p-3 table-responsive-sm table-responsive-md table-responsive-xl">
<table class="table caption-top">
@ -82,7 +77,7 @@
<td>{{ info[6] }}</td>
<td>{{ info[5] }}</td>
<td>{{ info[7] }}</td>
<td>{{ info[1] }}</td>
<td>{{ info[1]|truncate(16, False, '', 0) }}</td>
</tr>
</thead>
{% endfor %}

@ -18,6 +18,11 @@ div.card{
.card-header {
color: #000093;
}
.scroll {
max-height: 471px;
overflow-y: auto;
}
@keyframes cursor {
0% {
opacity: 0;
@ -47,7 +52,7 @@ div.card{
<li><span class="fa-li"><i class="fa-solid fa-scroll"></i></span>未輸入投資組合名稱則會由系統隨機生成。</li>
</ul>
</div>
<div class="row">
<div class="row mb-3">
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="card my-2 font-bold" style="border-radius: 7px;">
<div class="card-header">
@ -76,7 +81,7 @@ div.card{
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="card my-2" style="border-radius: 7px;">
<div class="card my-2 scroll" style="border-radius: 7px;">
<div class="card-header d-flex">
<div class="py-2 font-bold text-lg">
已選擇的資產
@ -100,7 +105,7 @@ div.card{
加入
</button>
</div>
<div>
<div class='mb-auto'>
<ol class="list-group list-group-numbered px-3 pb-3" id="stock-list" type="1">
<li class="list-group-item">
<span class="px-2">2330.TW</span>
@ -127,11 +132,18 @@ div.card{
</div>
<div class="card-body">
<div id="graph" style="max-height:50vh">
<span>
圖表將在此渲染。
</span>
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12">
<div id="graph" style="max-height:50vh">
<span>
圖表將在此渲染。
</span>
</div>
</div>
<div class="col-lg-3 col-md-3 col-sm-8">
</div>
</div>
</div>
</div>
<div class="card mt-3">

Loading…
Cancel
Save