def main_menu(session, base_url):
    """
    Provides the different options for the sample application: Market Quotes, Account List

    :param session: authenticated session
    """

    menu_items = {"1": "Market Quotes",
                  "2": "Account List",
                  "3": "Exit"}

    while True:
        print("")
        options = menu_items.keys()
        for entry in options:
            print(entry + ")\t" + menu_items[entry])
        selection = input("Please select an option: ")
        if selection == "1":
            market = Market(session, base_url)
            market.quotes()
        elif selection == "2":
            accounts = Accounts(session, base_url)
            accounts.account_list()
        elif selection == "3":
            break
        else:
            print("Unknown Option Selected!")
        def createbuyorder():
            readasklist = open("asklist.pickle", "rb")
            asklist = pickle.load(readasklist)
            readasklist.close()

            total = 0
            count = 0

            for ask in asklist:
                total = ask + total
                count = count + 1

            movingaverageFunc = lambda a, b: a / b
            movingaverage = movingaverageFunc(total, count)

            print("Today's Moving Average: ")
            print(movingaverage)
            market = Market(self.session, self.base_url, self.account)
            ask = market.quotes()
            if ask < movingaverage:

                def buy():
                    clientorderId = Generator.get_random_alphanumeric_string(
                        20)

                    # Add payload for POST Request
                    payload = """<PreviewOrderRequest>
                                                      <orderType>EQ</orderType>
                                                      <clientOrderId>{0}</clientOrderId>
                                                      <Order>
                                                          <allOrNone>false</allOrNone>
                                                          <priceType>LIMIT</priceType>
                                                          <orderTerm>GOOD_FOR_DAY</orderTerm>
                                                          <marketSession>REGULAR</marketSession>
                                                          <stopPrice></stopPrice>
                                                          <limitPrice>{1}</limitPrice>
                                                          <Instrument>
                                                              <Product>
                                                                  <securityType>EQ</securityType>
                                                                  <symbol></symbol>
                                                              </Product>
                                                              <orderAction>{2}</orderAction>
                                                              <quantityType>QUANTITY</quantityType>
                                                              <quantity>1</quantity>
                                                          </Instrument>
                                                      </Order>
                                                  </PreviewOrderRequest>"""
                    orderaction = "BUY"
                    payload = payload.format(clientorderId, ask, orderaction)
                    market.preview_order(payload, clientorderId, ask,
                                         orderaction)

                loop.call_soon(buy)
            loop.call_later(300, createbuyorder)
        def calculatetodaysmovingaverage():
            readasklist = open("asklist.pickle", "rb")
            asklist = pickle.load(readasklist)
            readasklist.close()

            market = Market(self.session, self.base_url, self.account)
            ask = market.quotes()

            asklist.append(ask)
            openasklist = open("asklist.pickle", "wb")
            pickle.dump(asklist, openasklist)
            openasklist.close()

            print("Ask Price: ")
            print(ask)

            loop.call_later(300, calculatetodaysmovingaverage)
示例#4
0
import json
import sys
import requests
from rauth import OAuth1Session
from market.market import Market

with open('.etrade-oauth.json', 'r') as f:
    info_deserialized = json.load(f)

session = OAuth1Session(**info_deserialized)
base_url = 'https://api.etrade.com'
market = Market(session, base_url)

for param in sys.argv[1:]:

    quotes = market.quotes(param)

    for stock in quotes:
        symbol = stock['Product']['symbol']

        chainDates = market.chainDates(symbol)

        chains = [{
            'Expiration':
            chainDate,
            **market.chains(
                symbol, {
                    'expiryYear': chainDate['year'],
                    'expiryMonth': chainDate['month'],
                    'expiryDay': chainDate['day'],
                    'includeWeekly': 'true',