1.、如果券商能提供介面,那非常簡單。不過對絕大多數人,這是廢話,一是券商不給提供,二是即使提供了,你的程序也得到營業部去跑。
2、 券商不提供介面,那就只能從交易軟體客戶端來想辦法了
方法一:keyboard和mouse模擬的辦法,比較笨的辦法,速度快不起來。按我以往的經驗,這種模擬keyboard和mouse的操作,因為要和UI打交道,很多地方得Sleep,不然很容易出錯,自動下單,出錯了可不是好玩的,那損失的都是錢。要想盡量減少出錯,stress test的時候每步的sleep時間都得足夠長,但這樣一來,要足夠可靠的話,整個過程估計3-5秒也完成不了。這個辦法雖然是笨點,但如果對速度和可靠性的要求不高,也是可以接受的,畢竟要比手動操作要快。(對可靠性有擔心的,可以留著交易軟體每次下單前的確認窗口,這樣還可以有最後一次人工確認的機會,但這樣一來,批量下單就下不了了)。
方法二:跳過交易軟體的UI層,直接調用下層的函數完成交易。大致方法是,1,得要code injection, 進程注入,你的代碼得在交易軟體的context下運行才行,2. 用debugger慢慢去看,了解交易軟體自身是如何調用下層的函數去完成下單,比方說通達信的交易軟體,與交易相關的函數,基本在tc.dll和tcapi.dll裡面。這個辦法弄通了,那下單估計可以在100ms以內完成,就完全和UI無關了。
方法三:從基於web和wap的交易上面動腦筋,這個渠道的下單方式,應該是http post了一些數據回server, 研究一下具體的格式就可以了。這條途徑,從client來講,下單的速度應該和方法二差不多。
3、FIX協議也是一種可能的突破口,部分櫃台系統供應商已有現成的FIX產品,有基金、QFII客戶的部分券商有采購(如中信證券),可以嘗試一下。
『貳』 想要開發一個股票交易軟體 需要怎樣獲取實時數據 數據介面
惠德贏策 大家記住了啊,這個垃圾公司老闆叫:祝清。公司內部垃圾就算了,公司出的產品都是騙人的,還有他們開發的一個模擬炒股的網站要交錢才能炒股,都是騙人的,大家千萬別上當受騙,這家公司老闆超級卑鄙,合夥別人把他原來的公司給搞垮自己開公司,不過心在自己公司也快倒閉了,員工工資都發布出來了,哈哈,真雞-巴爽呀,那個B兒子真沒話說了。
我就是受害者呀,噴血相告,切記呀
『叄』 我是做程序化交易的,在國內有開放api介面的軟體嗎 股票的,期貨的。
真搞不懂為什麼最近程序化交易軟體竟然流行?
如果說真正好軟體,只要你把電腦開上了,豈不是自動賺錢了嗎?不勞而獲,只需一次性投入一個軟體的購買費用,天上掉餡餅?
~~
附錄:程序化軟體的騙人伎倆
我知道這篇文章會觸犯到一些人的利益,但我還是想把一個真相還原出來。
在程序化的交易當中,有些交易系統表現的異常優異,正確率經常在90%以上,而盈利率也高的驚人。尤其前些年在市場上銷售非常火爆的某些股票,期貨軟體,在市場推廣的時候,經常給投資者看買入和賣出的信號,通常都是接近完美的。為什麼會有如此高效的「搖錢樹」呢?這些系統是在騙人呢?還是真實的呢?我們不得不見識一個在金融編程當中,很神奇的一類函數「未來函數」。
我們首先看一個交易測試報告:(如圖)
通過這個報告我們看出,在兩個交易周之內,我們的盈利率達到接近60%,正確率100%,這套系統真是「神」了。不出一年的時間,這個盈利速度,這個世界都被我們買下了,但是這里,有個極大地陷阱。就是我們的未來函數之一
「refx」,這個函數的功用是從目前的k線圖向後定位,比如我們上面的編程語言中,refx(close,1)>close,bk;也就是說,只有後一根k線圖的收盤價高於本根收盤價了,我們才買入,而一到了第二根k線圖,我們就賣出平倉。這樣的系統,可能不賺錢么?正確率一定是100%,因為你的入場條件限定了,只買入未來上漲的信號,所以正確率一定是100%,但是這種系統,在我們實戰當中,意義為0。因為你在真正的未來中,是無法知道下一根k線如何變化的。
以上只是通過一個非常簡單的例子告訴大家未來函數在金融編程當中的功用,但也不是一無是處。而且有些軟體利用的未來函數比這個例子要高明很多,比如通過指定時間,time,
week這樣的函數達到和未來函數同樣的目的,但是本質是一樣的。所以希望大家能夠在測試結果的時候,留著一個心眼。同時希望各位軟體開發商有點職業道德,不要賺取那些已經很痛苦,希望通過軟體來穩定盈利,最後卻竹籃打水一場空的可憐投資者的錢。
『肆』 個人可以開發股票交易軟體進行下單嗎
我覺得很有風險,搞不好給你當犯罪分子處理。看看開發火車票插件那個案例就可以了,你跟他是一個道理。
這種軟體需要經過審查和資質認定吧,如果不經過他們的認定會把你當黑客處理也說不定。
不過你很有魄力!
以上是我的見解。
『伍』 自己製作股票自動買賣軟體需要哪些知識
這個必須要有交易所的交易API介面才能開發,如果是要獲得單純的行情數據信息,那個很簡單,新浪,騰訊,搜狐都有免費的API開發文檔介面給你,你寫到程序裡面就可以了,我是程序開發的,有興趣可以探討下。謝謝
『陸』 如何編程從免費股票軟體中提取實時數據
自己寫程序的話,一種方法是從已提供的信息源,例如webservice獲取數據。還有種辦法就是去連接提供即時信息的網頁硬解析。
代碼舉例如下:
Created on Thu Jul 23 09:17:27 2015
@author: jet
"""
DAY_PRICE_COLS = ['date', 'open', 'high', 'close', 'low', 'volume',
'chg', '%chg', 'ma5', 'ma10', 'ma20',
'vma5', 'vma10', 'vma20', 'turnover']
DAY_PRICE_URL = '%sapi.finance.%s/%s/?code=%s&type=last'
INDEX_KEY = ['SH', 'SZ', 'HS300', 'SZ50', 'GEB', 'SMEB']
INDEX_LIST = {'SH': 'sh000001', 'SZ': 'sz399001', 'HS300': 'sz399300',
'SZ50': 'sh000016', 'GEB': 'sz399006', 'SMEB': 'sz399005'}
INDEX_DAY_PRICE_COLS= ['date', 'open', 'high', 'close', 'low', 'volume',
'chg', '%chg', 'ma5', 'ma10', 'ma20',
'vma5', 'vma10', 'vma20']
K_TYPE_KEY = ['D', 'W', 'M']
K_TYPE_MIN_KEY = ['5', '15', '30', '60']
K_TYPE = {'D': 'akdaily', 'W': 'akweekly', 'M': 'akmonthly'}
MIN_PRICE_URL = '%sapi.finance.%s/akmin?scode=%s&type=%s'
PAGE_TYPE = {'http': 'http://', 'ftp': 'ftp://'}
PAGE_DOMAIN = {'sina': 'sina.com.cn', 'ifeng': 'ifeng.com'}
URL_ERROR_MSG = '獲取失敗,請檢查網路狀態,或者API埠URL已經不匹配!'
get_hist_data.py
# -*- coding: utf-8 -*-
"""
Created on Thu Jul 23 09:15:40 2015
@author: jet
"""
import const as ct
import pandas as pd
import json
from urllib2 import urlopen,Request
def get_hist_data(code = None, start = None, end = None, ktype = 'D'):
"""
功能:
獲取個股歷史交易數據
--------
輸入:
--------
code:string
股票代碼 比如:601989
start:string
開始日期 格式:YYYY-MM-DD 為空時取到API所提供的最早日期數據
end:string
結束日期 格式:YYYY-MM-DD 為空時取到最近一個交易日數據
ktype:string(default=D, 函數內部自動統一為大寫)
數據類型 D=日K線,W=周K線,M=月K線,5=5分鍾,15=15分鍾
30=30分鍾,60=60分鍾
輸出:
--------
DataFrame
date 日期
open 開盤價
high 最高價
close 收盤價
low 最低價
chg 漲跌額
p_chg 漲跌幅
ma5 5日均價
ma10 10日均價
ma20 20日均價
vma5 5日均量
vma10 10日均量
vma20 20日均量
turnover換手率(指數無此項)
"""
code = code_to_APIcode(code.upper())
ktype = ktype.upper()
url = ''
url = get_url(ktype, code)
print(url)
js = json.loads(ping_API(url))
cols = []
if len(js['record'][0]) == 14:
cols = ct.INDEX_DAY_PRICE_COLS
else:
cols = ct.DAY_PRICE_COLS
df = pd.DataFrame(js['record'], columns=cols)
if ktype in ct.K_TYPE_KEY:
df = df.applymap(lambda x:x.replace(u',', u''))
for col in cols[1:]:
df[col]=df[col].astype(float)
if start is not None:
df = df [df.date >= start]
if end is not None:
df = df[df.date <= end]
df = df.set_index('date')
return df
def code_to_APIcode(code):
"""
功能:
驗證輸入的股票代碼是否正確,若正確則返回API對應使用的股票代碼
"""
print(code)
if code in ct.INDEX_KEY:
return ct.INDEX_LIST[code]
else:
if len(code) != 6:
raise IOError('code input error!')
else:
return 'sh%s'%code if code[:1] in ['5', '6'] else 'sz%s'%code
def get_url(ktype, code):
"""
功能:
驗證輸入的K線類型是否正確,若正確則返回url
"""
if ktype in ct.K_TYPE_KEY:
url = ct.DAY_PRICE_URL % (ct.PAGE_TYPE['http'], ct.PAGE_DOMAIN['ifeng'],
ct.K_TYPE[ktype], code)
return url
elif ktype in ct.K_TYPE_MIN_KEY:
url = ct.MIN_PRICE_URL % (ct.PAGE_TYPE['http'], ct.PAGE_DOMAIN['ifeng'],
code, ktype)
return url
else:
raise IOError('ktype input error!')
def ping_API(url):
"""
功能:
向API發送數據請求,若鏈接正常返回數據
"""
text = ''
try:
req = Request(url)
text = urlopen(req,timeout=10).read()
if len(text) < 15:
raise IOError('no data!')
except Exception as e:
print(e)
else:
return text
#測試入口
print(get_hist_data('601989','2015-07-11','2015-07-22'))
『柒』 股票軟體哪個可以自動交易
美股研究社有分享幾個方法:1.、如果券商能提供介面,那非常簡單。不過對絕大多數人,這是廢話,一是券商不給提供,二是即使提供了,你的程序也得到營業部去跑。
2、 券商不提供介面,那就只能從交易軟體客戶端來想辦法了
方法一:keyboard和mouse模擬的辦法,比較笨的辦法,速度快不起來。按我以往的經驗,這種模擬keyboard和mouse的操作,因為要和UI打交道,很多地方得Sleep,不然很容易出錯,自動下單,出錯了可不是好玩的,那損失的都是錢。要想盡量減少出錯,stress test的時候每步的sleep時間都得足夠長,但這樣一來,要足夠可靠的話,整個過程估計3-5秒也完成不了。這個辦法雖然是笨點,但如果對速度和可靠性的要求不高,也是可以接受的,畢竟要比手動操作要快。(對可靠性有擔心的,可以留著交易軟體每次下單前的確認窗口,這樣還可以有最後一次人工確認的機會,但這樣一來,批量下單就下不了了)。
方法二:跳過交易軟體的UI層,直接調用下層的函數完成交易。大致方法是,1,得要code injection, 進程注入,你的代碼得在交易軟體的context下運行才行,2. 用debugger慢慢去看,了解交易軟體自身是如何調用下層的函數去完成下單,比方說通達信的交易軟體,與交易相關的函數,基本在tc.dll和tcapi.dll裡面。這個辦法弄通了,那下單估計可以在100ms以內完成,就完全和UI無關了。
方法三:從基於web和wap的交易上面動腦筋,這個渠道的下單方式,應該是http post了一些數據回server, 研究一下具體的格式就可以了。這條途徑,從client來講,下單的速度應該和方法二差不多。
3、FIX協議也是一種可能的突破口,部分櫃台系統供應商已有現成的FIX產品,有基金、QFII客戶的部分券商有采購(如中信證券),可以嘗試一下。