B******y 发帖数: 2255 | 1 俺不是做自动交易的,基本全手动交易。准备换个交易平台,那种能比较容易作点小工
具,比如自动下载option数据,用以计算option pain啦。或者其他的简单的自动交易
的。
有过tradestation 或 IB经验的,可以指点下俺哪个更好开发,俺拿不定主意换那个平
台。当然,tradestation那些数据月费挺讨厌。
先谢啦。 | m********0 发帖数: 2717 | 2 IB没有返回options symbol list的函数,需要自己生成。
给你一个我以前用过的script,我自己从bloomberg下载的list,然后下载的options数
据,
基于IBPY, 另外IB数据很差,如果只是为了计算max pain,到处都有,没必要自己闭门造车。
#! /usr/bin/env python
# -*- coding: utf-8 -*-
from ib.ext.Contract import Contract
from ib.opt import ibConnection, message
from time import sleep
from datetime import date
# print all messages from TWS
def watcher(msg):
print msg
# show Bid and Ask quotes
def my_BidAsk(msg):
if msg.field == 1:
print '%s:%s: bid: %s' % (contractTuple[0],
contractTuple[6], msg.price)
elif msg.field == 2:
print '%s:%s: ask: %s' % (contractTuple[0], contractTuple[6], msg.
price)
def makeoptContract(constr):
contractStr = constr.split('|')
newContract = Contract()
newContract.m_symbol = contractStr[0]
newContract.m_secType = 'OPT'
newContract.m_exchange = 'SMART'
newContract.m_currency = 'USD'
newContract.m_expiry = contractStr[1]
newContract.m_strike = contractStr[2]
newContract.m_right = contractStr[3]
#newContract.m_includeExpired = 1
newContract.m_multiplier = 100
print 'Contract Values:%s,%s,%s,%s,%s,%s,%s,%s,%s:' % (newContract.m_
symbol, newContract.m_secType, newContract.m_exchange, newContract.m_
currency, newContract.m_expiry,\
newContract.m_strike, newContract.m_right, newContract.m_
includeExpired, newContract.m_multiplier)
return newContract
def printHistoricalData(msg):
if msg.date.find("finish") == -1:
timeline = msg.date[:4] + '-' + msg.date[4:6] + '-' + msg.date[6:]
print '%s,%s,%s,%s,%s,%s,%s,%s,%s' % (optContract.m_symbol + '-' +
optContract.m_expiry + '-' + optContract.m_right + optContract.m_strike,\
timeline , msg.open, msg.high, msg.low, msg.close, msg.
volume, msg.count, msg.WAP)
#with open("C:/Stock/IB_Hist/" + contractTuple[0] + ".txt", 'w') as f:
#f.writelines('%s,%s,%s,%s,%s,%s,%s,%s,%s' % (contractTuple[0], msg.
date, msg.open, msg.high, msg.low, msg.close, msg.volume, msg.count, msg.WAP
))
if __name__ == '__main__':
con = ibConnection()
con.registerAll(watcher)
#con.register(watcher, message.HistoricalData)
con.unregister(watcher, message.HistoricalData)
con.register(printHistoricalData, message.HistoricalData)
con.connect()
sleep(1)
tickId = 28
with open("C:/Stock/IBATM/weekly_options_trading_days.txt", 'r') as f:
daytimes = f.readlines()
""" get serial of days before OE
days = []
for a in daytimes:
days.append(a[:8])
print days
"""
with open("C:/Stock/IBATM/weekly_options_list.txt", 'r') as f:
#today = date.today().strftime("%Y%m%d")
#print today
for line in f:
optContract = makeoptContract(line[:-1])
#oe = line[:-1].split('|')[1]
optHistoricalLength = 30
for i in range(len(daytimes)- optHistoricalLength, len(daytimes)
):
con.reqHistoricalData(tickId, optContract, daytimes[i][:-1],
'1 D', '1 min', 'TRADES', 1 , 1)
sleep(10)
con.cancelMktData(tickId)
sleep(1)
con.disconnect()
sleep(1)
【在 B******y 的大作中提到】 : 俺不是做自动交易的,基本全手动交易。准备换个交易平台,那种能比较容易作点小工 : 具,比如自动下载option数据,用以计算option pain啦。或者其他的简单的自动交易 : 的。 : 有过tradestation 或 IB经验的,可以指点下俺哪个更好开发,俺拿不定主意换那个平 : 台。当然,tradestation那些数据月费挺讨厌。 : 先谢啦。
| B******y 发帖数: 2255 | 3 嘿嘿,果然有高手。谢谢。其实主要是想找个好用的platform入门开发这一行,以后会
开发点啥俺也不知道,option pain算俺想练手。
阁下说IB数据差是什么意思,各家数据不都应该一样吗?
闭门造车。
【在 m********0 的大作中提到】 : IB没有返回options symbol list的函数,需要自己生成。 : 给你一个我以前用过的script,我自己从bloomberg下载的list,然后下载的options数 : 据, : 基于IBPY, 另外IB数据很差,如果只是为了计算max pain,到处都有,没必要自己闭门造车。 : #! /usr/bin/env python : # -*- coding: utf-8 -*- : from ib.ext.Contract import Contract : from ib.opt import ibConnection, message : from time import sleep : from datetime import date
| w********2 发帖数: 16371 | 4 options你抓yahoo住容易些,虽然会晚两个小时,tradestation和ib都没有symbol 列
表。
【在 B******y 的大作中提到】 : 俺不是做自动交易的,基本全手动交易。准备换个交易平台,那种能比较容易作点小工 : 具,比如自动下载option数据,用以计算option pain啦。或者其他的简单的自动交易 : 的。 : 有过tradestation 或 IB经验的,可以指点下俺哪个更好开发,俺拿不定主意换那个平 : 台。当然,tradestation那些数据月费挺讨厌。 : 先谢啦。
| m********0 发帖数: 2717 | 5 嗯。没有chains函数。
【在 w********2 的大作中提到】 : options你抓yahoo住容易些,虽然会晚两个小时,tradestation和ib都没有symbol 列 : 表。
|
|