Beispiel #1
0
    for t in session.query(OptionTrade).filter(
                OptionTrade.status_id==TradeStatus.CLOSED).filter(
                OptionTrade.num_closes>1):
        logger.debug("*** Adjusting exit price, %d closes for OPTION trade: %s %s",
                     t.num_closes, t.symbol, t.description)
        q = session.query(OptionActivity).filter(
            OptionActivity.action_id==ActionType.SELL_TO_CLOSE).filter(
            OptionActivity.trade_id==t.id)
        l = q.all()
        if len(l) == 0:
            logger.error("*** No closing trades found!!! ******")
            continue     
        if len(l) != t.num_closes:
            logger.error("*** Number of closing trades does not match "
                         "num_closes value!!! ******")
        t.exit_price = decimal.Decimal(0)
        for a in l:
            t.exit_price += a.price
        t.exit_price /= t.num_closes
        session.commit()


if __name__ ==  "__main__":
    loglevel = logging.DEBUG
    init_logging(loglevel)
    logger.info("ETO PROCESSING: " + str(datetime.datetime.now()))
    db_refresh_trades()
    gen_trades()
    logger.info("END (ETO PROCESSING) " + str(datetime.datetime.now()))

Beispiel #2
0
#  - doesn't handle equities, or exercised options!
#  - correctly handles multiple closes for a trade (i.e. taking partial 
#    profit/loss), but not multiple entries.
#

import sys
import logging
import datetime
import csv
import sqlalchemy

from eto.util import init_logging
from eto.models import OptionActivity, ModelsError, db_get_session


init_logging(logging.DEBUG)
logger = logging.getLogger(__file__)
logger.info("IMPORTING ETO DATA: " + str(datetime.datetime.now()))

if (len(sys.argv) > 1):
    input_filename = sys.argv[1]
    logger.info("Using input file: " + input_filename)
else:
    sys.exit("Usage: import_activity.py <inputfile>")


session = db_get_session()

with open(input_filename, 'rb') as csvfile:
    reader = csv.reader(csvfile)