Exemple #1
0
def my_page():
    found = None
    lost = None
    lost_collection = db.get_collection('lostdata')
    lost_result = lost_collection.find_one({'who':current_user.id})
    if lost_result:
        lost = [lost_result['when'], lost_result['status']]
    # result = lost_collection.find_one({'who':current_user.id}, sort=[('now',-1)])
    found_collection = db.get_collection('founddata')
    found_result = found_collection.find_one({'who':current_user.id})
    if found_result:
        found = [found_result['when'],found_result['status']]
    return render_template('bootstrap/mypage.html', lost= lost, found=found)
def loadDailyHistoryData(collection, query, region):
    """mongodb数据库数据"""
    host, port = loadMongoSetting()
    dbClient = pymongo.MongoClient(host, port)
    dbClient.admin.authenticate("htquant",
                                "htgwf@2018",
                                mechanism='SCRAM-SHA-1')
    code = collection.split('.')[0]
    ID = region.split(" ")[0]
    db = dbClient.get_database('SPOT_DB')
    account = db.get_collection(code)
    print "ID: ", ID, "query:", query
    u = []
    if code == 'I':
        for i in account.find({"Variety": query}):
            u.append([
                i["ID"], i["Variety"], i["Grade"], i["Region"], i["Price"],
                i["Date"]
            ])
    else:
        for i in account.find({"ID": ID}):
            u.append([
                i["ID"], i["Variety"], i["Grade"], i["Region"], i["Price"],
                i["Date"]
            ])
    return u
Exemple #3
0
 def ping(self):
     self.last_seen = datetime.utcnow()
     collection = db.get_collection('users')
     results = collection.update_one(
         {'id': self.id}, {'$set': {
             'last_seen': self.last_seen
         }})
Exemple #4
0
 def load_user(user_id):
     collection = db.get_collection('users')
     results = collection.find_one({'id': user_id})
     if results is not None:
         user = User(results['id'], "", "")  # 20191112
         user.from_dict(results)
         return user
     else:
         return None
def baseTeams():
    team_dict = teams.get_teams()

    nbaCollection = db.get_collection("Teams")

    for team in team_dict:
        team1 = db.get_document(nbaCollection,
                                team['nickname'].replace(" ", ""))
        team1["value"] = team
        team1.save()
Exemple #6
0
def basePlayers():
    player_dict = players.get_players()

    nbaCollection = db.get_collection("Players")

    for player in player_dict:
        player1 = db.get_document(nbaCollection,
                                  player['full_name'].replace(" ", ""))
        player1["value"] = player
        player1.save()
Exemple #7
0
def loadDailyHistoryData(query):
        """按照交易日分批载入历史数据,然后回放数据"""
        host, port = loadMongoSetting()
        dbClient = pymongo.MongoClient(host, port)
        dbClient.admin.authenticate("htquant", "htgwf@2018", mechanism='SCRAM-SHA-1')
        db=dbClient.get_database('SPOT_DB')
        account=db.get_collection('I')
        u=[]
        for i in account.find({"Variety":query}):
            u.append([i["ID"],i["Variety"],i["Grade"],i["Region"],i["Price"],i["Date"]])
        return u
Exemple #8
0
def register():
    form = RegistrationForm()
    if form.validate_on_submit():
        user = User(email=form.email.data, username=form.name.data, password=form.password.data)
        collection = db.get_collection('users')
        collection.insert_one(user.to_dict())
        token = user.generate_confirmation_token()
        send_email(user.id, 'Confirm Your Account', 'auth/email/confirm', user=user, token=token)
        flash('A confirmation email has been sent to you by email.')
        return redirect(url_for('main.index'))
    # return redirect(url_for('auth.login'))
    return render_template('auth/register.html', form=form)
Exemple #9
0
def search_history_result(col):
    host, port = loadMongoSetting()
    dbClient = pymongo.MongoClient(host, port)
    dbClient.admin.authenticate("htquant",
                                "htgwf@2018",
                                mechanism='SCRAM-SHA-1')
    db = dbClient.get_database('USERDATA_DB')
    account = db.get_collection(col)
    u = []
    for i in account.find():
        u.append([i["totalAllPnl"], i["closePrice"]])
    return render_template('search_history_result.html', u=u)
Exemple #10
0
    def __init__(self, email, username, password):
        self.id = email
        self.username = username
        self.password = password

        ###
        # 20191112
        collection = db.get_collection('roles')
        if self.id == current_app.config['ADMIN']:
            self.role = Role('Administrator', 0xff)
        else:
            result = collection.find_one({'default': True})
            self.role = Role(result['name'], result['permission'],
                             result['default'])
Exemple #11
0
def login():
    form = LoginForm()
    if form.validate_on_submit():
        collection = db.get_collection('users')
        results = collection.find_one({'id': form.email.data})
        if results is not None:
            user = User(form.email.data, "", "")  # 20191112
            # print(form.email.data)
            user.from_dict(results)
            if user is not None and user.verify_password(form.password.data):
                login_user(user, form.remember_me.data)
                return redirect(request.args.get('next') or url_for('main.index'))
        flash('Invalid username or password.')
    return render_template('auth/login.html', form=form)
Exemple #12
0
 def confirm(self, token):
     s = Serializer(current_app.config['SECRET_KEY'])
     try:
         data = s.loads(token.encode('utf-8'))
     except:
         return False
     if data.get('confirm') != self.id:
         return False
     self.confirmed = True
     collection = db.get_collection('users')
     results = collection.update_one(
         {'id': self.id}, {'$set': {
             'confirmed': self.confirmed
         }})
     return True
Exemple #13
0
def search_history_result(col):
    post = Post.query.filter_by(id=col).first()
    query = post.title
    col = query
    host, port = loadMongoSetting()
    dbClient = pymongo.MongoClient(host, port)
    dbClient.admin.authenticate("htquant",
                                "htgwf@2018",
                                mechanism='SCRAM-SHA-1')
    db = dbClient.get_database('USERDATA_DB')
    account = db.get_collection(col)

    var = []
    col_vardf = col + 'vardf'
    account_vardf = db.get_collection(col_vardf)
    for i in account_vardf.find():
        i.pop('_id')
        var.append(i)
    vardf = pd.DataFrame(var)
    drawBar("Var", vardf)

    num = []
    col_numdf = col + 'numdf'
    account_numdf = db.get_collection(col_numdf)
    for i in account_numdf.find():
        i.pop('_id')
        num.append(i)
    numdf = pd.DataFrame(num)
    drawBar("ContractVol", numdf)

    nv = []
    col_nvdf = col + 'nvdf'
    account_nvdf = db.get_collection(col_nvdf)
    for i in account_nvdf.find():
        i.pop('_id')
        nv.append(i)
    nvdf = pd.DataFrame(nv)
    drawLine("NetValue", nvdf, col)
    ptnv = {'var': var}

    margin = []
    col_margindf = col + 'margindf'
    account_margindf = db.get_collection(col_margindf)
    for i in account_margindf.find():
        i.pop('_id')
        margin.append(i)
    margindf = pd.DataFrame(margin)
    drawLine("Margin", margindf, col)

    u = []
    col_hedgeResult = col + 'HedgeResult'
    account_HedgeResultdf = db.get_collection(col_hedgeResult)
    for i in account_HedgeResultdf.find():
        u.append([i["OPT"], i["Unhedged"], i["Unit"]])
    return render_template('search_history_result.html', u=u, ptnv=ptnv)
Exemple #14
0
def register_found():
    form = FoundForm()
    # TODO: 폼에서 발견 디비에 저장
    # TODO: Register Service 랑 연동
    start_coords = (37.49, 127.027)
    folium_map = folium.Map(
        location=start_coords,
        zoom_start=11,
    )
    plugins.LocateControl(auto_start=True).add_to(folium_map)  # 현재위치로 초기화
    folium_map.add_child(ClickForOneMarker(popup='습득위치'))
    if form.validate_on_submit():
        founditem = FoundedItem(current_user.id)
        collection = db.get_collection('founddata')
        collection.insert_one(founditem.to_dict())
        return redirect(url_for('lostfound.my_page'))
    return render_template('bootstrap/register.html', form=form, map=Markup(folium_map._repr_html_()))
Exemple #15
0
    def insert_roles():
        roles = {
            'User': (Permission.FOLLOW | Permission.COMMENT
                     | Permission.WRITE_ARTICLES, True),
            'Moderator':
            (Permission.FOLLOW | Permission.COMMENT | Permission.WRITE_ARTICLES
             | Permission.MODERATE_COMMENTS, False),
            'Administrator': (0xff, False)
        }

        collection = db.get_collection('roles')
        for k, v in roles.items():
            result = collection.find_one({'name': k})
            role = Role(k, v[0], v[1])

            if result is not None:
                collection.update_one({'name': k}, {'$set': role.to_dict()})
            else:
                collection.insert_one(role.to_dict())
Exemple #16
0
def register_lost():
    form = LostForm()
    # TODO: 폼데이터 분실 디비에 저장
    start_coords = (37.49, 127.027)
    folium_map = folium.Map(
        location=start_coords,
        zoom_start=11,
    )
    # geojson1 = folium.GeoJson(
    #     skorea_provinces_geo,
    #     name = 'skorea-provinces',
    # ).add_to(folium_map)
    plugins.LocateControl(auto_start=True).add_to(folium_map)  # 현재위치로 초기화
    folium_map.add_child(ClickForOneMarker(popup='분실위치'))
    if form.validate_on_submit():
        lostitem = LostedItem(form.itemname.data, form.category.data, form.place.data, form.latitude.data, form.longitude.data, form.lost_date.data, current_user.id, form.detail.data)
        collection = db.get_collection('lostdata')
        collection.insert_one(lostitem.to_dict())
        flash('등록되었습니다.')
        return redirect(url_for('lostfound.my_page'))
    return render_template('bootstrap/register.html', form=form, map=Markup(folium_map._repr_html_()))
def producer():
    #开启回测实例线程 该线程推送把回测的datetime数据推送到queue
    engine = BacktestingEngine(queue=queue)
    #..........实现回测.......
    # 读取策略参数字典,为下一步读取合约做准备
    engine.readParam_Setting()
    # 设置回测日期
    date_ = paramDate()
    datastartdate = date_['datastartdate']
    lastdate = date_['enddate']
    engine.setStartDate(datastartdate, 0)
    engine.setEndDate(lastdate)
    #engine.setStartDate('20170103', 0)
    #engine.setEndDate('20170213')
    # 设置手续费
    engine.setRate(0.3 / 10000)  # 万0.3
    # 在引擎中创建策略对象
    #engine.initStrategy(strategyDemo, {})
    engine.initStrategy(strategyHedge, {})
    # 读取参数
    symbol = date_['symbol']
    symbolList = []
    symbol = symbol.encode('unicode-escape').decode('string_escape')
    symbolList.append(symbol.split('.')[0])

    #symbolList = ['HC']
    title = date_['strategyname']
    engine.setDatabase(symbolList)
    # 设置初始仓位
    engine.setInitialPos(0)
    engine.loadDailyHistoryData()
    engine.hedgeResult()

    host, port = loadMongoSetting()
    dbClient = pymongo.MongoClient(host, port)
    dbClient.admin.authenticate("htquant",
                                "htgwf@2018",
                                mechanism='SCRAM-SHA-1')
    db = dbClient.get_database('USERDATA_DB')
    # 先删除重名的
    account = db.get_collection(title)
    account.drop()
    account = db.get_collection(title + 'vardf')
    account.drop()
    account = db.get_collection(title + 'nvdf')
    account.drop()
    account = db.get_collection(title + 'margindf')
    account.drop()
    account = db.get_collection(title + 'numdf')
    account.drop()
    account = db.get_collection(title + 'HedgeResult')
    account.drop()
    #回测结果
    col = db[title]
    data = xlrd.open_workbook(
        r'C:\vnpy-master190102\vnpy-master\vnpy\trader\app\ctaStrategy\resultsDF.xlsx'
    )
    table = data.sheets()[0]
    rowstag = table.row_values(0)
    nrows = table.nrows
    returnData = {}
    for i in range(1, nrows):
        returnData[i] = json.dumps(dict(zip(rowstag, table.row_values(i))))
        returnData[i] = json.loads(returnData[i])
        col.insert(returnData[i])
    #nvdf表单
    col_nvdf = db[title + 'nvdf']
    data = xlrd.open_workbook(
        r'C:\vnpy-master190102\vnpy-master\vnpy\trader\app\ctaStrategy\nvDF.xlsx'
    )
    table = data.sheets()[0]
    rowstag = table.row_values(0)
    nrows = table.nrows
    returnData = {}
    for i in range(1, nrows):
        returnData[i] = json.dumps(dict(zip(rowstag, table.row_values(i))))
        returnData[i] = json.loads(returnData[i])
        col_nvdf.insert(returnData[i])

#vardf表单
    col_vardf = db[title + 'vardf']
    data = xlrd.open_workbook(
        r'C:\vnpy-master190102\vnpy-master\vnpy\trader\app\ctaStrategy\varDF.xlsx'
    )
    table = data.sheets()[0]
    rowstag = table.row_values(0)
    nrows = table.nrows
    returnData = {}
    for i in range(1, nrows):
        returnData[i] = json.dumps(dict(zip(rowstag, table.row_values(i))))
        returnData[i] = json.loads(returnData[i])
        col_vardf.insert(returnData[i])

#numdf表单
    col_numdf = db[title + 'numdf']
    data = xlrd.open_workbook(
        r'C:\vnpy-master190102\vnpy-master\vnpy\trader\app\ctaStrategy\numDF.xlsx'
    )
    table = data.sheets()[0]
    rowstag = table.row_values(0)
    nrows = table.nrows
    returnData = {}
    for i in range(1, nrows):
        returnData[i] = json.dumps(dict(zip(rowstag, table.row_values(i))))
        returnData[i] = json.loads(returnData[i])
        col_numdf.insert(returnData[i])

#margindf表单
    col_margindf = db[title + 'margindf']
    data = xlrd.open_workbook(
        r'C:\vnpy-master190102\vnpy-master\vnpy\trader\app\ctaStrategy\marginDF.xlsx'
    )
    table = data.sheets()[0]
    rowstag = table.row_values(0)
    nrows = table.nrows
    returnData = {}
    for i in range(1, nrows):
        returnData[i] = json.dumps(dict(zip(rowstag, table.row_values(i))))
        returnData[i] = json.loads(returnData[i])
        col_margindf.insert(returnData[i])

#HedgeResult
    col_margindf = db[title + 'HedgeResult']
    data = xlrd.open_workbook(
        r'C:\vnpy-master190102\vnpy-master\vnpy\trader\app\ctaStrategy\HedgeResult.xlsx'
    )
    table = data.sheets()[0]
    rowstag = table.row_values(0)
    nrows = table.nrows
    returnData = {}
    for i in range(1, nrows):
        returnData[i] = json.dumps(dict(zip(rowstag, table.row_values(i))))
        returnData[i] = json.loads(returnData[i])
        col_margindf.insert(returnData[i])
    # 全部生成完毕,推送queue 完成信息
    msg = 'finish'
    queue.put(msg)
def search_history_result(col):
    print ' col:', col  # 这个就是 name  然后用它把生成图像的数据 推送到 回测结果页面  search_history_result这个页面
    # 返回回测完成  生成url的是哪一个函数的 ;
    #post = Post.query.filter_by(id=col).first()
    #query=post
    #col=query
    host, port = loadMongoSetting()
    dbClient = pymongo.MongoClient(host, port)
    dbClient.admin.authenticate("htquant",
                                "htgwf@2018",
                                mechanism='SCRAM-SHA-1')
    db = dbClient.get_database('USERDATA_DB')
    account = db.get_collection(col)

    var = []
    col_vardf = col + 'vardf'
    account_vardf = db.get_collection(col_vardf)
    for i in account_vardf.find():
        i.pop('_id')
        var.append(i)
    vardf = pd.DataFrame(var)
    vardf.index = vardf.iloc[:, 0]
    drawBar("Var", vardf)

    num = []
    col_numdf = col + 'numdf'
    account_numdf = db.get_collection(col_numdf)
    for i in account_numdf.find():
        i.pop('_id')
        num.append(i)
    numdf = pd.DataFrame(num)
    numdf.index = numdf.iloc[:, 0]
    drawBar("ContractVol", numdf)

    nv = []
    col_nvdf = col + 'nvdf'
    account_nvdf = db.get_collection(col_nvdf)
    for i in account_nvdf.find():
        i.pop('_id')
        nv.append(i)
    nvdf = pd.DataFrame(nv)
    nvdf.index = nvdf.iloc[:, 0]
    drawLine("NetValue", nvdf, col)
    ptnv = {'var': var}

    margin = []
    col_margindf = col + 'margindf'
    account_margindf = db.get_collection(col_margindf)
    for i in account_margindf.find():
        i.pop('_id')
        margin.append(i)
    margindf = pd.DataFrame(margin)
    margindf.index = margindf.iloc[:, 0]
    drawLine("Margin", margindf, col)

    var = []
    opt = []
    unhedged = []
    unit = []
    col_vardf = col + 'vardf'
    account_vardf = db.get_collection(col_vardf)
    for i in account_vardf.find():

        opt.append(i.values()[4])
        unhedged.append(i.values()[1])
        unit.append(i.values()[2])

    #optnv=[]
    #unhedgednv=[]
    #unitnv=[]
    #col_nvdf=col+'nvdf'
    #account_nvdf=db.get_collection(col_nvdf)
    #for i in account_nvdf.find():

    #i.pop('_id')
    #optnv.append([i[''].encode('ascii'),i[u"最优套保"]])
    #unhedgednv.append([i[''].encode('ascii'),i[u"未对冲"]])
    #unitnv.append([i[''].encode('ascii'),i[u"单位套保"]])

    #optnum=[]
    #unitnum=[]
    #col_numdf=col+'numdf'
    #account_numdf=db.get_collection(col_numdf)
    #for i in account_numdf.find():

    #i.pop('_id')
    #optnum.append([i[''],i[u"最优套保"]])
    #unitnum.append([i[''],i[u"单位套保"]])

    #optmargin=[]
    #unhedgedmargin=[]
    #unitmargin=[]
    #col_margindf=col+'margindf'
    #account_margindf=db.get_collection(col_margindf)
    #for i in account_margindf.find():
    #print i
    #i.pop('_id')
    #optmargin.append([i[''],i[u"最优套保"]])
    ##unhedgedmargin.append([i[''],i["Unhedged"]])
    #unitmargin.append([i[''],i[u"单位套保"]])
    u = []
    col_hedgeResult = col + 'HedgeResult'
    account_HedgeResultdf = db.get_collection(col_hedgeResult)
    j = 0
    for i in account_HedgeResultdf.find():
        if j == 0 or j == 1 or j == 3:
            f = round(i.values()[4], 4)
            f = str(f * 100) + "%"
            e = round(i.values()[1], 4)
            e = str(e * 100) + "%"
            g = round(i.values()[2], 4)
            g = str(g * 100) + "%"
            u.append([f, e, g])
        if j > 1 and j != 3:
            u.append([i.values()[4], i.values()[1], i.values()[2]])
        j = j + 1

    return render_template('search_history_result.html',
                           u=u,
                           opt=opt,
                           unhedged=unhedged,
                           unit=unit)
        host = setting['mongoHost']
        port = setting['mongoPort']
    except:
        host = '10.3.135.33'
        port = 57012
    return host, port


#posts = db.session.query(Post).filter(Post.title =='111').one()
#posts =Post.query.filter_by(id='3333').first()
#para= posts
host, port = loadMongoSetting()
dbClient = pymongo.MongoClient(host, port)
dbClient.admin.authenticate("htquant", "htgwf@2018", mechanism='SCRAM-SHA-1')
db = dbClient.get_database('USERDATA_DB')
account = db.get_collection('3333')
var = []
col = '3333'
col_vardf = col + 'vardf'
account_vardf = db.get_collection(col_vardf)
for i in account_vardf.find():
    i.pop('_id')
    var.append(i)
import pandas as pd
vardf = pd.DataFrame(var)
#import time
#startdate= para.splitlines()[7]
#lastdate=para.splitlines()[9]
#startDate = time.strptime(startdate, "%Y-%m-%d")
#endDate =  time.strptime(lastdate, "%Y-%m-%d")
print vardf
Exemple #20
0
 def validate_email(self, field):
     collection = db.get_collection('users')
     results = collection.find_one({'id': field.data})
     if results is not None:
         raise ValidationError('이미 등록된 이메일 입니다.')
     pass