導航:首頁 > 程序命令 > 程序員這樣編寫股票數據

程序員這樣編寫股票數據

發布時間:2022-11-19 08:59:38

A. 股票數據信息介面,哪裡有比較全面的股票介面程序

股票軟體一般都提供了介面,例如通達信、同花順、大智慧,這些軟體裡面,都有公式系統,這個公式系統,就是介面。你可以參考軟體裡面的別的公式,編寫自己的公式,這樣就可以得到相應的數據了。
如果是機構,有專門提供這種API介面的。例如微盛的金融實時行情API介面。但這種方式,需要程序員才搞得懂,一般人用不起來。

B. 如何使用EXCEL讀取通達信股票日線數據

定量分析的第一步,是獲取數據。 獲取股票歷史行情數據最方便的途徑,就是直接讀取股票行情軟體留在你電腦中的日線數據文件。 但如果不是程序員,電腦里一般不會有VB、VC之類的編程語言。 其實,大家的電腦中一般都有OFFICE。OFFICE中的EXCEL自帶了一個VBA語言的編程環境。功能也很強大。 我用EXCEL里的VBA編寫了一段代碼,讀取通達信股票行情軟體的日線文件。已經測試通過。 代碼如下。與愛好定量分析的朋友分享。 TypeMyType a1AsLong'標示碼 a2AsLong'日期 a3AsSingle'開盤價 a4AsSingle'最高價 a5AsSingle'最低價 a6AsSingle'收盤價 a7AsSingle'成交金額 a8AsLong'成交量 EndType Sub按鈕1_Click() DimFile2AsInteger DimbAsMyType File1=FreeFile Opensh600000.dayForBinaryAccessReadAs#File1i=1DoWhileNotEOF(File1) Get#File1,,b Cells(i,1)=b.a1 Cells(i,2)=b.a2 Cells(i,3)=b.a3 Cells(i,4)=b.a4 Cells(i,5)=b.a5 Cells(i,6)=b.a6

C. 您好,有個問題想請教您。 我想實現這樣的功能:我用C語言編寫程序來買賣美國股票。大概怎麼弄方向。

。。。。。。。程序員不是神,不是什麼都能寫的,這個寫出來的話,估計得進局子里了

D. 如何獲取實時的股票行情信息,有相關的公用介面或者數據源嗎

實時股票數據介面

股票數據的獲取目前有如下兩種方法可以獲取:
1.
http/javascript介面取數據
2.
web-service介面
1.http/javascript介面取數據
1.1Sina股票數據介面
以大秦鐵路(股票代碼:601006)為例,如果要獲取它的最新行情,只需訪問新浪的股票數據
介面:
http://hq.sinajs.cn/list=sh601006
這個url會返回一串文本,例如:
var
hq_str_sh601006="大秦鐵路, 27.55, 27.25, 26.91, 27.55, 26.20, 26.91,
26.92,
22114263, 589824680, 4695, 26.91, 57590, 26.90, 14700,
26.89, 14300,
26.88, 15100, 26.87, 3100, 26.92, 8900, 26.93,
14230, 26.94, 25150, 26.95, 15220, 26.96, 2008-01-11,
15:05:32";
這個字元串由許多數據拼接在一起,不同含義的數據用逗號隔開了,按照程序員的思路,順序號從0開始。
0:」大秦鐵路」,股票名字;
1:」27.55″,今日開盤價;
2:」27.25″,昨日收盤價;
3:」26.91″,當前價格;
4:」27.55″,今日最高價;
5:」26.20″,今日最低價;
6:」26.91″,競買價,即「買一」報價;
7:」26.92″,競賣價,即「賣一」報價;
8:」22114263″,成交的股票數,由於股票交易以一百股為基本單位,所以在使用時,通常把該值除以一百;
9:」589824680″,成交金額,單位為「元」,為了一目瞭然,通常以「萬元」為成交金額的單位,所以通常把該值除以一萬;
10:」4695″,「買一」申請4695股,即47手;
11:」26.91″,「買一」報價;
12:」57590″,「買二」
13:」26.90″,「買二」
14:」14700″,「買三」
15:」26.89″,「買三」
16:」14300″,「買四」
17:」26.88″,「買四」
18:」15100″,「買五」
19:」26.87″,「買五」
20:」3100″,「賣一」申報3100股,即31手;
21:」26.92″,「賣一」報價
(22,
23), (24, 25), (26,27), (28,
29)分別為「賣二」至「賣四的情況」
30:」2008-01-11″,日期;
31:」15:05:32″,時間;
一個簡單的JavaScript應用例子:
script
type="text/javascript" src="http://hq.sinajs.cn/list=sh601006"
charset="gb2312">/script>
/javascript">
var
elements=hq_str_sh601006.split(",");
document.write("current
price:"+elements[3]);
這段代碼輸出大秦鐵路(股票代碼:601006)的當前股價
current
price:14.20
如果你要同時查詢多個股票,那麼在URL最後加上一個逗號,再加上股票代碼就可以了;比如你要一次查詢大秦鐵路(601006)和大同煤業(601001)的行情,就這樣使用URL:
http://hq.sinajs.cn/list=sh601003,sh601001
查詢大盤指數,比如查詢上證綜合指數(000001):
http://hq.sinajs.cn/list=s_sh000001
伺服器返回的數據為:
var
hq_str_s_sh000001="上證指數,3094.668,-128.073,-3.97,436653,5458126";
數據含義分別為:指數名稱,當前點數,當前價格,漲跌率,成交量(手),成交額(萬元);
查詢深圳成指數:
http://hq.sinajs.cn/list=s_sz399001
對於股票的K線圖,日線圖等的獲取可以通過請求http://image.sinajs.cn/…./…/*.gif此URL獲取,其中*代表股票代碼,詳見如下:
查看日K線圖:
http://image.sinajs.cn/newchart/daily/n/sh601006.gif

分時線的查詢:
http://image.sinajs.cn/newchart/min/n/sh000001.gif

日K線查詢:
http://image.sinajs.cn/newchart/daily/n/sh000001.gif

周K線查詢:
http://image.sinajs.cn/newchart/weekly/n/sh000001.gif

月K線查詢:
http://image.sinajs.cn/newchart/monthly/n/sh000001.gif

1.2
Bai&Google的財經數據
在,
google中搜索某隻股票代碼時,將會在頭條顯示此股票的相關信息,例如在google搜索601006時,
第一條搜索結果如下圖:
通過點擊左邊的圖片我們發現會將此圖片鏈接到sina財經頻道上,也就是說google股票數據的獲取也是從sina獲取。後經抓包分析,發現google也是採用1.1中介紹的介面。
Bai的股票數據來自的財經頻道
http://stock..com/
1.3
其他方式
除了sina,等網站提供股票信息外,其他網站也有類似的介面。我們分析了一款論壇上採用的股票插件,
其中有關於實時股票數據獲取的介紹,詳見如下代碼,其中可以看到有些數據來自sina。
以下是ASP示例:
=5
then
stockdata=gethttp("http://hq.sinajs.cn/list=sh"&code&"")
if
not len(stockdata)=0 then
stockdata=split(stockdata,chr(34))(1)
end if
if
len(stockdata)=0
then
stockdata="0,0,0,0,0,0,0,0,0,0,0,0"
else
stockdatasplit=split(stockdata,",")
stockdata=""&exstock.checkstr(stockdatasplit(0))&","&stockdatasplit(1)&","&stockdatasplit(2)&","&stockdatasplit(3)&","&stockdatasplit(4)&","&stockdatasplit(5)&","&formatdatetime(""&stockdatasplit(30)&"
"&stockdatasplit(31)&"",0)&""
end
if
『0=股票名稱,1=開盤價格,2=昨收盤價格,3=當前價格,4=最高價,5=最低價,6=更新時間
getstockdata=stockdata
end
function
function getstockimg(code)
dim
rndnum,addnum,checkcode,imgsource
if len(code)=5
then
getstockimg="http://image.sinajs.cn/newchart/daily/n/sh"&code&".gif"
end
if
imgsource="http://finance.sina.com.cn"
case
3
getstockimg="http://hq.gazxfe.com/stockchart/realline.chart?"&code&"&1003&SZ
500 330"
imgsource="http://hq.gazxfe.com"
case
4
getstockimg="http://chartse.stockstar.com/chartserver?code="&code&""
imgsource="http://www.stockstar.com/"
end
select
getstockimg=split(""&getstockimg&"||"&imgsource&"","||")
end
function
function getastockimg()
dim
rndnum,addnum,checkcode
dim
getastockimgb,imgsource
addnum=6
randomize:rndnum=cint(rnd*addnum)
select
case rndnum
case
0
getastockimg="http://202.109.106.1/gifchartse/gif/000001.gif"
getastockimgb="http://202.109.106.1/gifchartse/gif/399001.gif"
imgsource="http://www.stockstar.com/"
case
1
getastockimg="http://money.163.com/special/100.gif?C39"
getastockimgb="http://money.163.com/special/101.gif?HrS"
imgsource="http://www.163.com"
case
2
getastockimg="http://www.10jqka.com.cn/curve/realtime/index2.php?code=1a0001&w=180&h=140"
getastockimgb="http://www.10jqka.com.cn/curve/realtime/index2.php?code=399001&w=180&h=140"
imgsource="http://www.10jqka.com.cn"
case
3
getastockimg="http://chart.cnlist.com/stockchart/realline.chart?1a0001&1002&SZ
180
140"
getastockimgb="http://chart.cnlist.com/stockchart/realline.chart?399001&1002&SZ
180
140"
imgsource="http://chart.cnlist.com/"
case
4
getastockimg="http://image.sinajs.cn/newchart/small/ish000001.gif?1189176558328"
getastockimgb="http://image.sinajs.cn/newchart/small/isz399001.gif?1189176558328"
imgsource="http://www.sinajs.cn"
case
5
getastockimg="http://218.1.72.66/cgi/pic/sh/realtime/JA000001164143.png"
getastockimgb="http://218.1.72.66/cgi/pic/sz/realtime/JA399001164143.png"
imgsource="http://www.cnstock.com/"
case
6
getastockimg="http://222.73.29.85/img/000001.png"
getastockimgb="http://222.73.29.85/img/399001.png"
imgsource="http://www.eastmoney.com/"
end
select
getastockimg=split(""&getastockimg&"||"&getastockimgb&"||"&imgsource&"","||")
end
function
%>
2.
web-service介面
2.1 CHINAstock的web-service:
http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx
中國股票行情數據
WEB 服務(支持深圳和上海股市的全部基金、債券和股票),數據即時更新。輸出GIF分時走勢圖、日/周/月 K
線圖、及時行情數據(股票名稱、行情時間、最新價、昨收盤、今開盤、漲跌額、最低、最高、漲跌幅、成交量、成交額、競買價、競賣價、委比、買一 - 買五、賣一 -
賣五)。此WEB服務提供了如下幾個介面:
2.1.1
getStockImageByCode
GET
股票GIF分時走勢圖
INput:theStockCode =
股票代號,如:sh000001
POST /WebServices/ChinaStockWebService.asmx
HTTP/1.1
Host: www.webxml.com.cn
Content-Type:
text/xml; charset=utf-8
Content-Length:
length
SOAPAction:
"http://WebXml.com.cn/getStockImageByCode"

string

Output:
2.1.2
getStockImageByteByCode
獲得中國股票GIF分時走勢圖位元組數組
INput:theStockCode
= 股票代號,如:sh000001
POST /WebServices/ChinaStockWebService.asmx
HTTP/1.1Host: www.webxml.com.cnContent-Type: text/xml;
charset=utf-8Content-Length: lengthSOAPAction:
"http://WebXml.com.cn/getStockImageByteByCode"
string
返回的數據如下:
hkMyt4m4VkJtstbv8A
2.1.3
getStockImage_kByCode
直接獲得中國股票GIF日/周/月 K
線圖(545*300pixel/72dpi)
INPUT: theStockCode =
股票代號
theType = K 線圖類型(D:日[默認]、W:周、M:月),
POST
/WebServices/ChinaStockWebService.asmx HTTP/1.1Host:
www.webxml.com.cnContent-Type: text/xml; charset=utf-8Content-Length:
lengthSOAPAction: "http://WebXml.com.cn/getStockImage_kByCode" string
string
比如按照下圖所示輸入:
返回的結果就是周K線圖:
2.1.4
getStockImage_kByteByCode
獲得中國股票GIF日/周/月 K
線圖位元組數組
Input:theStockCode = 股票代號,如:sh000001
POST
/WebServices/ChinaStockWebService.asmx HTTP/1.1Host:
www.webxml.com.cnContent-Type: text/xml; charset=utf-8Content-Length:
lengthSOAPAction: "http://WebXml.com.cn/getStockImage_kByteByCode" string string
HTTP/1.1 200 OKContent-Type: text/xml; charset=utf-8Content-Length: length
base64Binary
比如按照下圖輸入:
返回的結果就是周K線圖位元組數組
hkMyt4m4VkJtstbv8A
2.1.5
getStockInfoByCode
獲得中國股票及時行情
input:theStockCode
= 股票代號
POST /WebServices/ChinaStockWebService.asmx HTTP/1.1Host:
www.webxml.com.cnContent-Type: text/xml; charset=utf-8Content-Length:
lengthSOAPAction: "http://WebXml.com.cn/getStockInfoByCode"
string
返回的值一個一維字元串數組
String(24),結構為:String(0)股票代號、String(1)股票名稱、String(2)行情時間、String(3)最新價(元)、String(4)昨收盤(元)、String(5)今開盤(元)、String(6)漲跌額(元)、String(7)最低(元)、String(8)最高(元)、String(9)漲跌幅(%)、String(10)成交量(手)、String(11)成交額(萬元)、String(12)競買價(元)、String(13)競賣價(元)、String(14)委比(%)、String(15)-String(19)買一
- 買五(元)/手、String(20)-String(24)賣一 - 賣五(元)/手。
Web
service的方法類似於現在concurrent項目的DBWS數據的獲取,都是通過SOAP協議向DBWS伺服器獲取相關的數據。
利用雅虎查中國股票
http://quote.yahoo.com/d/quotes.csv?s=MSFT&f=slc1wop
返回微軟的股票價格
"MSFT","4:00pm
- 30.70",+1.04,"21.46 -
30.75",29.77,29.66
http://quote.yahoo.com/d/quotes.csv?s=000969.SZ&f=slc1wop
這個返回安泰科技的,一般有半個小時的延遲。
但是s=000969.sz
這個後面的sz是深圳的意思, 滬市是SS後綴

E. 騰訊股票代碼

騰訊控股(00700)。
拓展資料:
1.股票名字前的字母含義:
(1)指數名字前的「G」是指「貢」字,也就是「貢獻」的意思。你點一下可以看見所有股票對該指數的漲跌貢獻度。
(2)股票名字前面「L」是指「聯」,也就是指關聯品種,是指該股可能有B股、H股,或者是債券、權證什麼的。
2.代碼(code)是程序員用開發工具所支持的語言寫出來的源文件,是一組由字元、符號或信號碼元以離散形式表示信息的明確的規則體系。
3.代碼設計的原則包括唯一確定性、標准化和通用性、可擴充性與穩定性、便於識別與記憶、力求短小與格式統一以及容易修改等。 源代碼是代碼的分支,某種意義上來說,源代碼相當於代碼。現代程序語言中,源代碼可以書籍或磁帶形式出現,但最為常用格式是文本文件,這種典型格式的目的是為了編譯出計算機程序。計算機源代碼最終目的是將人類可讀文本翻譯成為計算機可執行的二進制指令,這種過程叫編譯,它由通過編譯器完成。
4.源代碼是相對目標代碼和可執行代碼而言的。 源代碼就是用匯編語言和高級語言寫出來的地代碼。目標代碼是指源代碼經過編譯程序產生的能被cpu直接識別二進制代碼。可執行代碼就是將目標代碼連接後形成的可執行文件,當然也是二進制的。
5.在現代程序語言中,源代碼可以是以書籍或者磁帶的形式出現,但最為常用的格式是文本文件,這種典型格式的目的是為了編譯出計算機程序。計算機源代碼的最終目的是將人類可讀的文本翻譯成為計算機可以執行的二進制指令,這種過程叫做編譯,通過編譯器完成。
6.對軟體進行說明,即對軟體的編寫進行說明。為數不少的初學者,甚至少數有經驗的程序員都忽視軟體說明的編寫,因為這部分雖然不會在生成的程序中直接顯示,也不參與編譯。但是說明對軟體的學習、分享、維護和軟體復用都有巨大的好處。因此,書寫軟體說明在業界被認為是能創造優秀程序的良好習慣,一些公司也硬性規定必須書寫。


F. 股票行情軟體是用什麼語言編寫的

如下4種常見:

  1. Java:Java是一種可以撰寫跨平台應用軟體的面向對象的程序設計語言。Java 技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於PC、數據中心、游戲控制台、科學超級計算機、行動電話和互聯網,同時擁有全球最大的開發者專業社群

  2. JFreeChart:JFreeChart是JAVA平台上的一個開放的圖表繪制類庫。它完全使用JAVA語言編寫,是為applications, applets, servlets 以及JSP等使用所設計。JFreeChart可生成餅圖(pie charts)、柱狀圖(bar charts)、散點圖(scatter plots)、時序圖(time series)、甘特圖(Gantt charts)等等多種圖表,並且可以產生PNG和JPEG格式的輸出,還可以與PDF和EXCEL關聯。

3.源碼結構:源碼就是指編寫的最原始程序的代碼。運行的軟體是要經過編寫的,程序員編寫程序的過程中需要他們的「語言」。音樂家用五線譜,建築師用圖紙,那程序員的工作的語言就是「源碼」了。

4.c++ 【目前最多的】: C++是在C語言的基礎上開發的一種通用編程語言,應用廣泛。C++支持多種編程範式 --面向對象編程、泛型編程和過程化編程。最新正式標准C++14於2014年8月18日公布。其編程領域眾廣,常用於系統開發,引擎開發等應用領域,是至今為止最受廣大受用的最強大編程語言之一,支持類:類、封裝、重載等!

G. 作為一名經常在股票交易中的散戶,要怎樣建立一套自己的交易系統

交易系統,聽起來很高大上,其實,就是股票投資時需要考慮的幾個方面的重要因素。

交易系統,是在股票投資過程中使用的,那我從股票買賣全過程來說一下交易系統建立的方法。這個交易系統,分為「選股,買賣,紀律」三個部分。

一、 選股系統

股票投資的第一步,就是選股。選股要靠自己,不能道聽途說。 選股必須分析兩個方面:基本面和技術面。

基本面主要看行情軟體的f10部分,對pe,pb,roe,還有主要財務數據,選出業績優良的股票。如果散戶不具備這個能力,除了學習相關只是外,就是看看軟體裡面對該股票的估值,做個參考。散戶最好少碰創業板,到滬深300裡面去找個股。

技術面主要看大趨勢,看中長期120日和250日均線走向,只做這兩條均線向上的股票(最好在剛向上時就買入,否則,等到250日已經上移動很高時,股價已經到了階段頂部)。關於趨勢級別和階段的判斷方法,我有一篇文章專門說過。

那些120日250日均線向下的個股,散戶不要做!

二、買賣系統

這個買賣系統,其實就是買賣依據是什麼? 這里的前提是藍籌股,而且是120和250均線向上的個股!不涉及垃圾股和120日和250日均線向下的個股。

不要羨慕超跌反彈,也不要垂涎V形反轉,那些不是我們散戶的菜!! !

如上圖,在ABC點買入,有耐心等待這些買點出現!DEF點要不要賣???看清楚了,現在是牛市,完全可以不用賣!即使你一次買在了DEF點,也沒事,這種虧損,會有解套的時機,這和熊市不一樣,牛市會一浪更比一浪高,而熊市一浪更比一浪低。如果自作聰明,做高賣低買,按照以往經驗賣高,那很可能賣在H點,那後面的主升浪就錯過了,一般人在H點賣了是沒信心追買回來的。

為什麼不說買在G點,因為那時候120日均線還沒向上,穩健投資者需要觀察。

有人說,我就買在目前最高點F區了,怎麼辦?要不要止損?!請看清楚了,這只股票是牛市!!!如果F點買入被套了幾天,就忍不住割肉了,那很有可能後面繼續拉升創新高!那有人又說,要是下跌怎麼辦???再說一遍,現在是牛市,如果下跌,那就不要理會,不用多久,又會創新高的!而且,如果跌到一定支撐位再向上是,還要加倉買入。

牛市賣出依據是啥?一是基本面估值,如果價格大於價值20%以上賣出。二是根據技術面賣出。因為牛市不言頂,所以很難具體說什麼位置賣出好。就如現在的茅台,現在看,以前在哪裡賣出都是錯誤。從一般規律看,當股價距離60日均線啟動位置時上漲70~100%以上,很可能(只能用概率)是階段性頭部,甚至是一輪行情結束的時候。這時候,可以減倉三分之一,同時對k線,成交量,上行速率,股價重心,市場信息等綜合判斷形成頭部的可能。

當然,如果在本圖例你買在F點被套(還在這個股票牛市的初期),下跌時,可以減倉三分之一,用來做差價,降低成本,也可以不動等待,或則在回調上漲幅度三分之一左右再次上漲時加倉!

三、紀律系統

包含止損止盈兩個方面。

止損,就是買入前,要設立一個止損價位!沒有止損就不要買入! 一般根據有效跌破60日或則120日均線止損(每個個股均線可能不一樣,這和主力操盤風格有關)!後來如果再次上漲突破這兩條均線,買入就行。千萬不要跌破時不止損,防止有黑天鵝,股市安全第一。

止盈價位一般隨價格上漲而抬高。當達到目標價位,或則跌破上升趨勢線,或則上升均線(一般20日)時,賣出一半倉位。如果跌破60日,全部賣出。沒有跌破,又反轉向上時,把賣出的一半倉位再買回。

上漲時買,然後捂股,下跌時賣,這是牛市的操作方法,可能大部分人還沒悟透!

而熊市時,如果做反彈,是下跌時買,上漲時賣,輕倉參與,見好就收,不能貪心。

這個交易系統包含六個方面要素,每個方面要悟透。當然,六個方面可以,七個方面行不行?也行,只要自己按照股票「選股,買賣,紀律」三個要素過程來擴展,也是可以的。比如,買賣系統,這里講的是均線能不能選布林線?也可以,只要自己會用,有標准就行。

謝謝!

買低賣高,這是最起碼的。其他的,就是要有錢,不怕賠錢,就是買買買。其他的,什麼投一萬,三年過百萬。這肯定不是「天方夜譚」,是「木魚石的傳說」。我差點信了,不過我沒買。

散戶建立交易系統,問題就一句,答案可以寫一本書。這里就從大方面進行概括。

一、正三觀。這是建立交易系統的第一步,也是核心的一步。三觀決定了你如何看待事物。比如你認為「可以一夜暴富」,你就會天天盯著漲停板的股票,選股的目的就是抓漲停板;比如你是「人雲亦雲」的隨大流者,你就會天天聽股評看題材,網上說哪只會暴漲,你就跟著買哪只;比如你認為「天上不會掉餡餅」,你就會務實的尋找有成長性並被低估的實幹上市公司。你是怎樣的「三觀」,將決定了你交易系統建立的邏輯思維。

二、明確並量化股票高低邏輯。在第一條「正三觀」的前提下,你才能著手這一步。在此我以「正三觀」的角度來建立正確的能持續獲利的股市交易系統。我認為得尋找「中小盤實干績優成長股」,並不排除大盤股,但以「高成長」為優先選擇對象。量化從每年的業績遞增、現在的市盈率、市值大小、行業前景、合作夥伴、項目進展等多方面考量,股價在 歷史 階段低位(如半年線、年線)。

三、低吸。先看大盤在下跌後的底部震盪區,再看本行業板塊在下跌後的底部震盪區,最後是精選該行業中最有可能業績暴增的公司。在低位徘徊 歷史 地量後開始增量(放量)時分倉入手。逐步的試倉,在底部震盪時注意要不斷的高拋低吸,最終明確出一個底部震盪區域,在區域低位重倉,再次漲至震盪上沿時依然拋出部分倉位,不斷攤薄成本。突破箱體上沿不追,盡管拋出部分倉位,等待回踩。回踩後再次重倉。這之後是一路持股不動了。

四、高拋。在股價從底部上來50%左右時,見放量就拋出,跌破20日均線清倉出局。一個波段就此完成。有些股票此時回調之後還會上漲,有的甚至一倍二倍三倍的漲。這要說清楚就復雜些了。我的判斷是看成交量,以此才能看出主力資金是否出局,是否還會繼續向上做。這個方法有很多種類,可以出一本書。

五、具體細化交易系統。這要會編寫指標代碼,或者請程序員幫你寫。必須包羅「時空量價」這四個要素,通過這四個要素來定位股價運行的階段。股價運行必定是四個階段「底漲頂跌」。只有看清楚這四個階段,你才能獲取可靠利潤。「時空量價」這四要素,也是用來衡量「人心」的,股價的波動,就是「人心」的波動。

六、克服心魔。第一條「正三觀」決定你是否能正確的入門一個能持續獲利的交易系統,無疑是最關鍵的。而克服心魔同等重要。它決定你最終的成敗。以我為例,自認為是「正三觀」,自己也會編程,建立的交易系統能相當准確的把握頂底,從大波段來說幾乎是百分百勝率,日線級別頂底信號也相當准確,但有時誤差一兩天。但心魔影響我的操作。心魔是個問題也能說出長篇大論來,在此不展開了,總之到了那一步就必將遇見心魔這個最強的敵人。我花了兩年時間歷練自己,現在還不敢說完全戰勝了心魔。一句話,完全無腦的按交易系統指示操作,但你就是做不到。

用心的回答、經驗的回答。

讓我們來看看這三張圖的走勢可以得出,股票上漲時期的三個現象:第一,均線呈多頭排列;第二,MACD在0軸上方;第三,交易量相比變大了(圖一圖二符合。圖三前期交易量很大,後期交易量小,說明籌碼集中)。三個圖中粉紅色的線是20日均線,在上升期雖然有反復,但是始終在20日均線上方運行。我們可以用20日均線作為止損位置。

經過分析,我們可以做一個買股票的前提條件,就是我為什麼買這一隻股票,問自己三個問題:第一,此股的均線是否是多頭排列;第二,此股的MACD在0軸上方嗎?第三,在符合前兩個條件的基礎上,看交易量。

有人說你這是拿著 歷史 圖形在說事。不錯,這就是已經走完的圖形,但是它表明了一個特徵,就是處於上漲時期的股票基本滿足的特徵。我們總結這些特徵,然後滿足這些特徵就買,不滿足寧願空倉或者觀望。首先,我們絕大多數都是普通股民,既沒有大資金的支持,又沒有內幕消息的實力,只能靠自己辛苦工作攢點閑錢投資,夢想著賺點錢補貼生活。在零和 游戲 的股市,我們別無選擇,只能靠自己擁有的條件賺錢。但是賺錢是不容易的,尤其是在故事裡賺錢更不容易,機構要賺錢,國家社保要賺錢,能力出眾的人要賺錢,甚至公司要集資發展需要錢,都從股市裡賺錢,錢從哪裡來?就是廣大的普通股民。很多普通股民其實是虧錢的,即使有賺錢的時候,但是虧的比賺的多,總體上是虧的。所以,我們要總結一些經驗。

第二,我們希望買到上圖的圖三,一路上揚。但是現實中,我們買到了圖二的次數多。漲一點,跌一點,很多人被嚇跑了,很多人耐不住時間走了。因為一般的股民害怕損失,然後又幻想短期內賺更多的錢,結果反而賠的多。這就是現實和心理層面的因素。在這里有兩個方法:一是用20日均線做止損,在20日均線上方的,一直持有。跌破20日均線的,堅決賣方。(現實中很多人做不到,所以虧的比賺的多,總體上賠錢了)。二是選擇一個熟悉的股票,一年內只買這一隻股票。不看其他的股票,不跟風。這樣你就會培養出熟悉的股感,再附加一些其他分析指標,收益比大多數股民好。以上兩個方法很多人做不到,太難了。

關於交易系統的建立,個人建議:第一,分析大盤的狀態,決定買股票的倉位。牛市就用8-10成倉位。熊市就用2成倉位,或者空倉。震盪市就用2-5成倉位。第二,買股票的三個問題。第三,設置止盈止損。第四,堅決執行第三點。第五,止盈後把賺到的錢分成兩份,一份存下暫時不動。一份投入股市繼續。記住,股市裡賺到的錢在自己手上才是賺到的,還放在股市裡的錢,指不定是誰的呢。

什麼是交易系統?曾經我非常的疑惑,為什麼同樣的動作,同樣的形態,一個漲了,另一個就拚命跌?於是我不斷改進自己的交易系統。我是學計算機和數學出生,又在物理行業混跡,我想用各種理論方法來計算出一個確定性的方法,買進去,就得到確定的機會,然而最終我發現,成功率最高的系統,高達80%的成功率,其結果是,從1990年到現在,全市場,發出的信號,只有寥寥的七次,失敗一次。其它的不是信號太多,就是盈利太少。

這個市場真的沒有一個確定的交易系統嗎?當我花了幾周的時間,將所有的數據一條一條的看完,我忽然發現,是!也不是!是的原因是,你根本無法把控這個市場未來的走勢,因為你也是影響市場的那個人。不是,是因為在不確定中,你只要抓住那某些時刻的確定性,就可以了。

我們在書上學過很多的方法,每種方法都有其簇擁者,為什麼有些人用的好,有些人用不好?是交易系統在這兩種人之間有區別嗎?不是!是因為他們的差別在於對市場的認識。

比如說均線,有的均線死叉就一定要逃命,而有的均線死叉,卻極有可能就是買點,怎麼會發生這樣的事情?有的人說,股票站上60天均線就要買入,可有的人買入了就完蛋,是均線的問題嗎?不是,是人對均線理解的差異。

因此在這個問題的各類回答中,有說交易系統很難的,也有說很簡單的,都對,真的!每個人的理解都不同,時間上也有差異。最笨的辦法,是對著書上的例子一點點的看,看看為什麼這些例子能成功,而自己挑出來的那些就失敗,一點點的驗證出自己的交易系統。

這個過程,有人叫做一萬小時法則,沒有辦法,眼光的提升,是需要時間的,當有一天你能夠一眼看出好與壞,那麼,所謂的交易系統,就形成了,問你為什麼?你也許只會說,不知道,感覺。

當風險發生的時候,你從容的離場,機會來臨的時候,淡定的入場,當機會和你預想的不一樣,不會追問為什麼,靜靜的離開,等待下一次機會。你不會因為沒有機會而焦慮不安,不會因為擔心錯過機會而煩躁不已,甚至不會因為錯誤的判斷提前離開而懊惱悔恨。你的交易系統就已經形成了。

這時候,你的交易系統,是你自己獨有的,沒人能理解為什麼,哪怕你都講出來,還是會有無法明說的東西。不是你不想說,是你根本無法說,這是你自己的交易之道。

所謂道可道非常道,大概就是如此!

如何才能建立一套適合自己的交易系統呢?這句話包含兩層含義:一是適合自己的,每個人的投資理念、性格特徵、風險承受能力等等都各有不同,別人成功的交易系統,在自己身上未必就能發揮作用;二是完善交易系統的交易系統應該包含的內容有哪幾個?選股邏輯、交易策略、交易系統、資金管理、心態情緒管理等5大板塊。那麼幾個板塊的功能劃分是怎樣的呢?

一、選股邏輯。選股邏輯解決的是選股層面的問題,要做好股票投資,選股是第一關鍵,要有好的短線收益,必須要跟對熱點板塊。選股邏輯包含兩個方向,一個是政策消息面的驅動要素,二是技術面的價量時空。短線交易側重點是對短線題材邏輯的分析,股票K線只是表象,影響K線形態的是資金,而推動資金的則是背後的市場邏輯,而市場邏輯的核心是題材的驅動力以及生命周期。題材的邏輯屬性以及板塊的運動規律是分析短線熱點持續性、節奏和結構的重點。

同時,題材驅動與技術面的共振才能夠造就短線的爆發力,有題材如果沒有技術面資金的推動也很難有好的表現;有技術面形態的做多走勢,如果沒有題材的支撐,也很難持續。

二、交易策略。股票市場永遠是處於波動下滾動運行的,波峰波谷之間就會形成上漲趨勢、下跌趨勢、橫盤震盪趨勢。大盤每一個階段的運行結構都是不一樣的,所以採用的交易策略也是不盡相同的。左側交易策略和右側交易策略的交叉使用是我們實盤交易當中必須要靈活運動的。選對股票,但是入場的交易策略沒有匹配當下的整體市場環境,那麼你就很難踏准節奏,造成買點與賣點的不盡人意。

三、交易系統。交易系統主要解決的是買點、賣點、止損位、止盈位。交易系統的一致性與執行力是非常關鍵的,同時完善的交易系統是需要對買賣點進行量化,模稜兩可的交易信號往往導致臨盤時的決策打架,互相矛盾,以及猶豫不決。交易系統的簡單化是達到知行合一的基礎。

四、資金管理。倉位管理是決定盈虧的核心,也是決定心態的關鍵。一套好的交易信號必須匹配合適的資金管理模型,否則很難達到穩定性的獲利。交易系統解決的是成功率的問題,資金管理決定的是盈率的問題。很多時候,資金管理遠比交易系統重要。通過資金管理來規避系統性的風險以及看錯個股出現的個股風險。

五、心態情緒管理。心態好壞首先取決於交易系統是否完善與資金管理是否匹配。除開這兩個談心態無任何意義,除非你的資金是買彩票中的。同時,心態好與壞還跟自己的資金性質、風險承受能力、預期收益率、個人價值觀、性格屬性等等有比較大的關系。把交易系統和資金管理模塊完善好,再通過個人哲學體系的修煉,通過「道」的層面去解決交易當中所出現的各種混沌與疑惑,「會當凌絕頂,一覽眾山小」,當你到達足夠的高度,你才能看得清曲曲而上的山路!

所謂盈利系統,其實,就是自己總結,並且得到實踐驗證,並且適合自己的一套成熟的交易體系。
對於散戶而言,建立適合自己的交易系統或體系非常難以建立,需要長時間的沉浸和研究,找出一條適合自己的路,才能逐步實踐和去完善所掌握的一些指標,逐漸形成適合自己的體系,這條路任重而道遠,舉步維艱;但是,我相信,只要堅持就會成功

一、基礎知識

二、技術指標定義及用法

這一方面,我們就簡單舉幾個最常見的指標來進行給大家解析:我全部用白話文來給大家解析:

1) BOLL(布林帶):由 三條移動平均線組成的,類似於兩條軌道,隨著時間變化而變化;分為三條線,一般稱之為:上軌道(壓力線、壓力帶、壓力位)、下軌道(支撐線、支撐位、支撐帶)、中軌道(多空轉化帶、突破口、突破地帶)

2) MACD(移動平均線): 是由兩條不同價格周期均線交叉形成的走勢指標,以零軸及快慢線交叉點,分為金叉、死叉來判斷短期走勢;金叉買漲,死叉買跌!

3) KDJ及RSI: KDJ指標又叫隨機指標,是一種相當新穎、實用的技術分析指標,它起先用於期貨市場的分析,後被廣泛用於股市的中短期趨勢分析,是期貨和股票市場上最常用的技術分析工具

RSI紙幣哦啊又叫做相對強弱指標,是根據一定時期內上漲點數和漲跌點數之和的比率製作出的一種技術曲線。能夠反映出市場在一定時期內的景氣程度。一般分為:超買區(最佳賣出位置)和超賣區(最佳買入位置)

4) 價格通道: 價格通道的形成,屬於在一張周期圖中(15分鍾、1小時、4小時等)在一個確認的趨勢周期內,尋找前面的支撐點平均連線和上方壓力位的平均連線,形成一條平行通道,可以短暫判斷趨勢走勢和尋找支撐位、壓力位、突破位等,分為震盪上行價格通道和震盪下行上行通道、平行價格通道。

5) 分批建倉法: 一般來說,無論是股市還是黃金等產品,均是存在波浪理論技巧,一般來說,買入或賣出有多次機會,可以去尋找最佳買點和賣點;我們可以利用波浪理論技巧在最重要的第三浪和第五浪去分批建倉布局,因為,這個時候的行情算是企穩或方向明確,只有這樣,我們才算是成功減倉

6) 趨勢為王: 趨勢是做單之前必須考察的一個重要技巧;任何行情必定有一個整體走勢,例如,天圖、周圖,月圖,整體走勢基本上可以看出;短期行情,我們可以藉助小時圖來看是反彈還是下探,結合中長線、短線去布局,這樣反而更有保障,趨勢去保障!

7) K線組合及形態: K線形態及組合,是指K線行情隨著時間的不斷發展,周期行情組合成一種數字模型或我們經常遇見的形態,這就是我們所能看到的:例如:
1)看漲:W底部形態、V型反轉、圓弧底形態、頭肩底形態等等
2)看跌:與之相反,M頭部形態、圓弧頂形態、頭肩頂形態等等

三、實踐去運用
實踐這一塊,當然會存在交學費這一現象,其實,我們可以利用好股票模擬去學習,去實踐你所掌握、研究出來的一套體系,去驗證是否正確,又或者對了多少,只有這樣我們才能逐步完善,適合自己的體系。

1)各種交易類理財

2)依照性格投資產品去理財,去實踐!

3)依據風險大小去理財

4)學會控制好倉位

四、善於總結和歸納
作為一名合格的散戶投資者,不要以為不斷地投入錢進去,一直扛著就行了;實際上,這是一根筋的做法;有些票或投資,不是一味的扛著或不斷加資金就是王道,這種做法其實是很愚蠢的技巧,也可以說是自殺式的投資;所以,我們只有在不斷的嘗試之後,善於總監和歸納一些我們適合的投資產品、投資技巧、投資方式,才能高瞻遠矚、穩中獲利!

以上論點皆有筆者獵鷹技術中心首席策略師林楓原創分享,更多詳情請參考《股市實戰錦囊》《黃金實戰口訣》,歡迎交流、關注、收藏、點贊、分享,如有不足,歡迎補充!

系統的特點就是穩定。

與穩定相反,沒有良好的交易系統的特點就是:

就是今日發揮得好,抓漲停;

明日發揮得不好,就跌停,

顯得毫無章法。

這樣的表現就是,拿著好股,心裡不踏實,整天提心吊膽,自己嚇唬自己。

有了穩定的交易系統,簡單地說,就是靠譜。

一個穩定交易系統,應該是

1、操作性強,有實戰價值,不是花拳綉腿,而是能扎扎實實地帶來收益;

2、能夠復盤,總結得與失。這樣的系統可以橫向、縱向進行比較。

3、能不斷改進系統的不足,不斷優化系統。

散戶受資金、信息、技術、時間等因素的影響,建立自己的操作系統很難。

股票數據貓量化系統,把所有的數據按照強度、資金、預期、轉強、妖精度進行分級(分為11級),進行量化考核,這樣任何一個股票的數據都可以橫向和縱向比較和總結。

通過幾千萬的海量數據,可以提取各類交易模式。比如追漲法、追跌法、五星戰法、智能選股法等等。再配合技術指標開發了藍柱子,白柱子、小蘋果等等操作模式。

各類操作模式有數據做支持,可以不斷地完善和提高。

相對來說,股票數據貓理論比較容易上手。更重要的是股票數據貓公布全部的量化數據,有了全部的數據,散戶朋友就可以很方便的發現 歷史 數據和現實數據的各類規律。

總之,股票數據貓供大家在這個平台,通過這個平台,散戶朋友可以找出自己的模式並實戰。

股票交易遠在八十年代中期我國就開始發行股票,記得當時我在上海進服裝,在外灘大街上一種名為"飛樂"的紙質股票發售,工作人員極其熱情地介紹,銷售。現在我都還有二張原始的紙質股票,票面值二千元,我留存紀念。因為我從不參與股票交易,無興趣,無動力,所以無法多說什麼,對不起。

H. 開發炒股軟體,從哪裡獲得股票數據

目前市場上有很多股票行情交易軟體,各種軟體提供了豐富的分析和展示功能,而且基本上是免費的。但這些數據都是在線的、無法統一地下載到本地進行分析,於是上網找了些資料,有的是將程序到新浪搜狐的財經頻道或其他財經類網站抓取並分析網頁,這種方法操作性不強而且准確率較低,遇到廣告或網頁變動時風險較大。於是找到了Sina股票數據介面,這個介面是通過在IE端輸入"http://hq.sinajs.cn/list="+相應股票代碼網站返回一個文件形式的數據,也可以通過JS獲取該文件中的變數得到想要的數據字元串。
以大秦鐵路(股票代碼:601006)為例,如果要獲取它的最新行情,只需訪問新浪的股票數據介面:http://hq.sinajs.cn/list=sh601006這個url會返回一串文本,例如:
var hq_str_sh601006="大秦鐵路, 27.55, 27.25, 26.91, 27.55, 26.20, 26.91, 26.92,
22114263, 589824680, 4695, 26.91, 57590, 26.90, 14700, 26.89, 14300,
26.88, 15100, 26.87, 3100, 26.92, 8900, 26.93, 14230, 26.94, 25150, 26.95, 15220, 26.96, 2008-01-11, 15:05:32";
這個字元串由許多數據拼接在一起,不同含義的數據用逗號隔開了,按照程序員的思路,順序號從0開始。
0:」大秦鐵路」,股票名字;
1:」27.55″,今日開盤價;
2:」27.25″,昨日收盤價;
3:」26.91″,當前價格;
4:」27.55″,今日最高價;
5:」26.20″,今日最低價;
6:」26.91″,競買價,即「買一」報價;
7:」26.92″,競賣價,即「賣一」報價;
8:」22114263″,成交的股票數,由於股票交易以一百股為基本單位,所以在使用時,通常把該值除以一百;
9:」589824680″,成交金額,單位為「元」,為了一目瞭然,通常以「萬元」為成交金額的單位,所以通常把該值除以一萬;
10:」4695″,「買一」申請4695股,即47手;
11:」26.91″,「買一」報價;
12:」57590″,「買二」
13:」26.90″,「買二」
14:」14700″,「買三」
15:」26.89″,「買三」
16:」14300″,「買四」
17:」26.88″,「買四」
18:」15100″,「買五」
19:」26.87″,「買五」
20:」3100″,「賣一」申報3100股,即31手;
21:」26.92″,「賣一」報價
(22, 23), (24, 25), (26,27), (28, 29)分別為「賣二」至「賣四的情況」
30:」2008-01-11″,日期;
31:」15:05:32″,時間;
相應地,也可以獲得深市相關股票信息,但是這種方法的弊病是只能獲得最新的或者是當天的股票數據,無法將歷史數據導入到資料庫,當然,你也可以以某一天為起始點自己重新創造歷史數據。所以繼續尋找其他網站介面,終於找到了雅虎財經網站,它提供的介面可以直接把股票歷史數據導成Excel,真實太方便了!直接在瀏覽器地址中數據網址即可http://table.finance.yahoo.com/table.csv?s=股票代碼,但是如果手動輸入再逐一下載保存簡直是太麻煩了,光上證股票就800多個,估計剛手動下載完就又開盤了還得重新下載。所以我的思路是,1、利用多線程方法下載股票文件。2、將這些文件統一導入資料庫。
1.1文件下載類:
import java.io.*;
import java.net.*;
import java.util.List;
import fatowen.stocksystem.sysconfig.data.DownLoadVO;
public class HttpDownFile {
private static int BUFFER_SIZE = 8096;
/**根據URL下載文件並保存
* @param destUrl String
* @param fileName String
* @throws Exception
*/
public void saveToFile(String destUrl, String fileName) throws IOException {

FileOutputStream fos = null;
BufferedInputStream bis = null;
HttpURLConnection httpUrl = null;
URL url = null;
byte[] buf = new byte[BUFFER_SIZE];
int size = 0;

url = new URL(destUrl);
httpUrl = (HttpURLConnection) url.openConnection();
httpUrl.connect();
bis = new BufferedInputStream(httpUrl.getInputStream());
fos = new FileOutputStream(fileName);
while ((size = bis.read(buf)) != -1)
fos.write(buf, 0, size);
fos.close();
bis.close();
httpUrl.disconnect();
}
}
1.2多線程實現下載類:
import java.util.ArrayList;
import java.util.List;
public class HisDataAddThread extends Thread {
boolean runFlag = true;
List myParamList = null;
String downLoadData ="";
String baseUrl = "http://table.finance.yahoo.com/table.csv?s=";
String result = "";
String savePath = "";

public HisDataAddThread(List paramList,String savePath){
this.myParamList = paramList;
this.savePath = savePath;
}

public void run() {

while(runFlag){
downLoadData = PublicDataUtil.getDownLoadData(myParamList);
if(!Lib.isEmpty(downLoadData)){
HttpDownFile oInstance = new HttpDownFile();
try {
oInstance.saveToFile(baseUrl + downLoadData, savePath + downLoadData + ".csv");
}catch (Exception err) {
System.out.println(err.toString());
}
}else{
runFlag = false;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public List getFailureList() {
return failureList;
}
public void setFailureList(List failureList) {
this.failureList = failureList;
}
public List getSuccessList() {
return successList;
}
public void setSuccessList(List successList) {
this.successList = successList;
}
}
2.將下載完的文件統一保存到資料庫工具類
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class CSVUtitl {
private BufferedReader bufferedreader = null;
private List list = new ArrayList();

public CSVUtitl(){
}
public CSVUtitl(String filename) throws IOException{
bufferedreader = new BufferedReader(new FileReader(filename));
String stemp;
while((stemp = bufferedreader.readLine()) != null){
list.add(stemp);
}
}
public List getList() throws IOException {
return list;
}
// 得到csv文件的行數
public int getRowNum(){
return list.size();
}
//得到csv文件的列數
public int getColNum(){
if(!list.toString().equals("[]")) {

//csv文件中,每列之間的是用','來分隔的
if(list.get(0).toString().contains(",")) {
return list.get(0).toString().split(",").length;
}else if(list.get(0).toString().trim().length() != 0) {
return 1;
}else{
return 0;
}
}else{
return 0;
}
}

//取得指定行的值
public String getRow(int index) {
if (this.list.size() != 0)
return (String) list.get(index);
else
return null;
}
//取得指定列的值
public String getCol(int index){
if (this.getColNum() == 0){
return null;
}

StringBuffer scol = new StringBuffer();
String temp = null;
int colnum = this.getColNum();

if (colnum > 1){
for (Iterator it = list.iterator(); it.hasNext();) {
temp = it.next().toString();
scol = scol.append(temp.split(",")[index] + ",");
}
}else{
for (Iterator it = list.iterator(); it.hasNext();) {
temp = it.next().toString();
scol = scol.append(temp + ",");
}
}
String str=new String(scol.toString());
str = str.substring(0, str.length() - 1);
return str;
}
//取得指定行,指定列的值
public String getString(int row, int col) {
String temp = null;
int colnum = this.getColNum();
if(colnum > 1){
temp = list.get(row).toString().split(",")[col];
}else if(colnum == 1) {
temp = list.get(row).toString();
}else{
temp = null;
}
return temp;
}

public void CsvClose() throws IOException {
this.bufferedreader.close();
}
public void run(String filename) throws IOException {

CSVUtitl cu = new CSVUtitl(filename);
for(int i=0;i<cu.getRowNum();i++){
String SSCCTag = formatData(cu.getString(i,1));//得到第i行.第一列的數據.
String SiteName = formatData(cu.getString(i,2));//得到第i行.第二列的數據.
String StationId= formatData(cu.getString(i,3));

//將數據保存到資料庫中
... ...
... ...
... ...
}
cu.CsvClose();
}
public String formatData(String baseData){

String result = null;
if(!"".equals(baseData) && baseData != null){
if(baseData.length() > 1){
result = baseData.substring(1,baseData.length());
result = result.substring(0, result.length()-1);
}else{
result = baseData;
}
}else{
result = "";
}
return result.trim();
}

public static void main(String[] args) throws IOException {
CSVUtitl test = new CSVUtitl();
try{
File path = new File("e:\\data");
File[] f = path.listFiles();
List l = new ArrayList();
for(int i=0;i<f.length;i++){
if(f[i].getName().endsWith(".csv"))
l.add(f[i]); www.2cto.com
}
Iterator it = l.iterator();
while(it.hasNext()){
File ff = (File)it.next();
test.run(path.toString()+File.separator+ff.getName());
}
}catch (Exception e){

}
}
}

I. 股票運行也有一定的程序,這個程序是如何編寫的

其實我們可以看出,在進入股市的一些過程也是有一定的程序的,那麼對於這樣的一個股票的運行來說,這些程序怎麼樣去編寫也會影響到這樣的一個股票,在市場上怎麼樣的流行。而且對於這樣一個問題來說,也會影響到我們自己在購買股票的時候的一些決斷,畢竟對於很多人來說,他們購買股票就是希望自己能夠得到一個巨大的盈利。而且對於這樣的盈利模式來說,也是的確能夠讓他們感覺到這樣的一個盈利模式會影響他們自己的下一步投資。

而且對於這樣的一個小程序代碼來說也是會產生後期的利益或者是虧損的一個關鍵之處。我們一旦再遇到這樣的一些問題之後,就需要充分的把握自己的一些行為。對於我們自身來說,如果我們不去看出這樣的一些小程序是如何編寫的,或者是對於這樣的一些程序,咱們這個代碼不了解的話,也會影響到我們自己在投資的時候的一些舉動。

J. 程序員演算法實現-買賣股票的最佳時機系列問題

主要思路:因為只有一股可以交易,所以我們可以枚舉 必須以i位置作為賣出時機的情況下,得到的最大收益是多少。如果我們得到每個i位置的最大收益,那麼最大收益必是所有位置的最大收益的最大值

使用兩個變數:

min變數:表示遍歷到的位置之前的最小值是什麼。

max變數:表示當前收集到必須以i位置賣出的最大收益是多少。

遍歷數組一遍,在遍歷到i位置的時候,min和max的更新邏輯如下:

遍歷完數組,返回max的值就是最終答案。完整代碼見:

主要思路:由於可以進行任意次的交易,但是任何時候最多隻能持有一股股票,所以我們可以把股票曲線的所有 上升段 都抓取到,累加收益就是最大收益。遍歷數組,遍歷到的位置減去前一個位置的值,如果是正數,就收集,如果是負數,就把本次收益置為0(就等於沒有做這次交易),這樣遍歷一遍數組,就不會錯過所有的收益。

設置一個變數max,初始為0,用於收集最大收益值,來到i位置,max更新邏輯如下:

完整代碼如下:

由本題可以簡單得出一個結論: 如果數組元素個數為N,則最多執行N/2次交易就可以抓取所有的上升段的值(極端情況下,當前時刻買,下一個時刻賣,保持這樣的交易一直到最後,執行的交易次數就是N/2)

主要思路:

在第2種情況下,我們定義

其中dp[i][j]表示[0...i]范圍內交易j次獲得的最大收益是多少。如果可以把dp這個二維表填好,那麼返回dp[N-1][k]的值就是題目要的答案。

dp這個二維矩陣中,

第一行的值表示數組[0..0]范圍內,交易若干次的最大收益,顯然,都是0。

第一列的值表示數組[0...i]范圍內,交易0次獲得的最大收益,顯然,也都是0。

針對任何一個普遍位置dp[i][j]的值,

我們可以枚舉i位置是否參與交易,如果i位置不參與交易,那麼dp[i][j] = dp[i-1][j],如果i位置參與交易,那麼i位置一定是最後一次的賣出時機。

那最後一次買入的時機,可以是如下情況:

最後一次買入的時機在i位置,那麼dp[i][j] = dp[i][j-1] - arr[i] + arr[i]

最後一次買入的時機在i-1位置,那麼dp[i][j] = dp[i-1][j-1] - arr[i-1] + arr[i]

最後一次買入的時機在i-2位置,那麼dp[i][j] = dp[i-2][j-1] - arr[i-2] + arr[i]

...

最後一次買入的時機在0位置,那麼dp[i][j] = dp[0][j-1] - arr[0] + arr[i]

完整代碼如下:

上述代碼中包含一個枚舉行為

增加了時間復雜度,我們可以優化這個枚舉。

我們可以舉一個具體的例子來說明如何優化,

比如,

當我們求dp[5][3]這個值,我們可以枚舉5位置是否參與交易,假設5位置不參與交易,那麼dp[5][3] = dp[4][3],假設5位置參與交易,那麼5位置一定是最後一次的賣出時機。那最後一次買入的時機,可以是如下情況:

最後一次買入的時機在5位置,那麼dp[5][3] = dp[5][2] - arr[5] + arr[5]

最後一次買入的時機在4位置,那麼dp[5][3] = dp[4][2] - arr[4] + arr[5]

最後一次買入的時機在3位置,那麼dp[5][3] = dp[3][2] - arr[3] + arr[5]

最後一次買入的時機在2位置,那麼dp[5][3] = dp[2][2] - arr[2] + arr[5]

最後一次買入的時機在1位置,那麼dp[5][3] = dp[1][2] - arr[1] + arr[5]

最後一次買入的時機在0位置,那麼dp[5][3] = dp[0][2] - arr[0] + arr[5]

我們求dp[4][3]這個值,我們可以枚舉4位置是否參與交易,假設4位置不參與交易,那麼dp[4][3] = dp[3][3],假設4位置參與交易,那麼4位置一定是最後一次的賣出時機。那最後一次買入的時機,可以是如下情況:

最後一次買入的時機在4位置,那麼dp[4][3] = dp[4][2] - arr[4] + arr[4]

最後一次買入的時機在3位置,那麼dp[4][3] = dp[3][2] - arr[3] + arr[4]

最後一次買入的時機在2位置,那麼dp[4][3] = dp[2][2] - arr[2] + arr[4]

最後一次買入的時機在1位置,那麼dp[4][3] = dp[1][2] - arr[1] + arr[4]

最後一次買入的時機在0位置,那麼dp[4][3] = dp[0][2] - arr[0] + arr[4]

比較dp[5][3]和dp[4][3]的依賴關系,可以得到如下結論:

假設在求dp[4][3]的過程中,以下遞推式的最大值我們可以得到

dp[4][2] - arr[4]

dp[3][2] - arr[3]

dp[2][2] - arr[2]

dp[1][2] - arr[1]

dp[0][2] - arr[0]

我們把以上式子的最大值定義為best,那麼

dp[5][3] = Math.max(dp[4][3],Math.max(dp[5][2] - arr[5] + arr[5], best + arr[5]))

所以dp[5][3]可以由dp[4][3]加速得到,

同理,

dp[4][3]可以通過dp[3][3]加速得到,

dp[3][3]可以通過dp[2][3]加速得到,

dp[2][3]可以通過dp[1][3]加速得到,

dp[1][3]可以很簡單得出,dp[1][3]有如下幾種可能性:

可能性1,1位置完全不參與,則

可能性2,1位置作為最後一次的賣出時機,買入時機是1位置

可能性3,1位置作為最後一次的賣出時機,買入時機是0位置

此時,best的值為

然後通過dp[1][3]加速dp[2][3],通過dp[2][3]加速dp[3][3]......,所以二維dp的填寫方式是按列填,

先填dp[1][0],dp[1][2]一直到dp[1][k],填好第一列;

然後填dp[2][0],dp[2][1]一直到dp[2][k],填好第二列;

...

依次填好每一列,直到填完第N-1列。

枚舉行為被優化,優化枚舉後的完整代碼如下:

主要思路:上一個問題中,令k=2就是本題的答案。

主要思路:因為有了冷凍期,所以每個位置的狀態有如下三種:

定義三個數組,分別表示i位置這三種情況下的最大值是多少

顯然有如下結論:

針對一個普遍位置i

最大收益就是如上三種方式的最大值。完整代碼見:

由於三個數組有遞推關系,所以可以用三個變數替換三個數組,做空間壓縮,優化後的代碼如下:

主要思路:由於沒有冷凍期,所以在i位置的時候,狀態只有兩種

針對0位置

針對普遍位置i

完整代碼如下:

同樣的,兩個數組都有遞推關系,可以做空間壓縮,簡化後的代碼如下:

原文鏈接:買賣股票的最佳時機系列問題 - Grey Zeng - 博客園

閱讀全文

與程序員這樣編寫股票數據相關的資料

熱點內容
傳奇源碼分析是什麼 瀏覽:267
解放壓縮機支架 瀏覽:255
程序員禿頂搞笑相遇 瀏覽:6
IBM手機app商店叫什麼名字 瀏覽:834
jpeg壓縮質量 瀏覽:774
雲伺服器評測對比 瀏覽:145
java日期轉string 瀏覽:221
openfire源碼編譯 瀏覽:897
在線小工具箱引流網站源碼 瀏覽:337
非科班程序員自學 瀏覽:799
壓縮泡沫鞋底底材 瀏覽:219
程序員職場第一課2正確的溝通 瀏覽:679
遇到不合法app應該怎麼辦 瀏覽:90
匯編程序編譯後的文件 瀏覽:79
大智慧均線源碼 瀏覽:373
單片機排阻的作用 瀏覽:215
滴滴金融app被下架如何還款 瀏覽:212
jpg轉換成pdf免費軟體 瀏覽:744
范里安pdf 瀏覽:447
偽造pdf 瀏覽:79