示例#1
0
def getReport():
    today = date.today()
    delta = datetime.timedelta(days=1)
    yesterday = today - delta

    trades = Trade.objects.filter(
        Q(tradeDate__year=today.year) & Q(tradeDate__month=today.month) & Q(tradeDate__day=today.day)
    )

    for trade in trades:
        try:
            new_report = Report.objects.get(
                Q(symbol=trade.symbol)
                & Q(reportDate__year=today.year)
                & Q(reportDate__month=today.month)
                & Q(reportDate__day=today.day)
            )

        except Report.DoesNotExist:  # today's new does not exist
            try:  # get yesterday's
                old_report = Report.objects.get(
                    Q(symbol=trade.symbol)
                    & Q(reportDate__year=yesterday.year)
                    & Q(reportDate__month=yesterday.month)
                    & Q(reportDate__day=yesterday.day)
                )
                old_report.pk = None
                old_report.save()  # clone a new one
                new_report = old_report
                new_report.SOD = new_report.EOD  # update SOD
            except Report.DoesNotExist:  # yesterday's old does not exist
                new_report = Report()
                new_report.symbol = trade.symbol

            new_report.reportDate = today

        # update report
        if trade.side == "B":
            total = new_report.buys * new_report.buyAve
            total += trade.quantity * trade.price  # new total
            new_report.buys += trade.quantity  # new buys
            new_report.buyAve = total / new_report.buys  # new buy ave
            new_report.EOD = new_report.EOD + trade.quantity

        elif trade.side == "S":
            total = new_report.sells * new_report.sellAve
            total += trade.quantity * trade.price  # new total
            new_report.sells += trade.quantity  # new sells
            new_report.sellAve = total / new_report.sells  # new sell ave
            new_report.EOD = new_report.EOD - trade.quantity

        new_report.save()  # save result

    getPNLs(today)  # calculate PNLS
    getTotal(today)  # get summary date
示例#2
0
def newReport(account, symbol, today):
    
    try:
        mainAccount = account[:5]
        new_report = Report.objects.get(Q(account=mainAccount) & Q(symbol=symbol) & Q(reportDate=today))
            
    except Report.DoesNotExist: # today's new does not exist  
        new_report = Report()
        new_report.account = mainAccount
        new_report.symbol = symbol      
        new_report.reportDate = today
        new_report.save()
        #new_report = Report.objects.create(symbol=symbol, reportDate=today)
        
    return new_report
示例#3
0
def getTotal(report_date):
    total = Report()
    total.symbol = "Total"
    report_list = Report.objects.filter(Q(reportDate=report_date))
    for report in report_list:
        total.SOD += report.SOD
        total.buys += report.buys
        total.sells += report.sells
        total.grossPNL += report.grossPNL
        total.unrealizedPNL += report.unrealizedPNL
        total.fees += report.fees
        total.netPNL += report.netPNL
        total.LMV += report.LMV
        total.SMV += report.SMV
        total.EOD += report.EOD
    total.reportDate = report_date
    total.save()