2010年3月12日 星期五

Normal Distribution

Pic Ref: http://en.wikipedia.org/wiki/Normal_distribution

  1. 目標: 利用常態分部曲線,算出每日的支撐壓力 "價", "量".
  2. 假設 : 在每日的成交量跟價會呈現"常態式"的分部,以底下的紅K做例子.在實心的部分表是大家所願意購買的支撐價,相對的成交量也較集中於此,而在最高價.最低價的分部就會被忽略. 可以用積分的方式算出底下藍色的面積,佔今天成交量的幾成,就可以大概推算出買賣量的位置. PS: 積分可以用Discrete的方式做累加,只要取的區間越小就越像是Continuois的積分型態.
  3. 準備工具. Cygwin Environment (IDE) g++/Mingw32 (Compiler) Boost (Boost Lib) GnuPlot (Plot Result) 模擬環境 + compiler Cygwin + g++ install http://cygwin.com/ C++ Extend Library Boost install http://www.fischerlaender.net/development/using-boost-c-libraries-with-gcc-g-under-windows GnuPlot 繪圖工具 http://www.gnuplot.info/
  4. 常態分部算法, 我們就先用每日的 Open, High, Low, Close當作Sample. 先算出Mean = (Open + High + Low + Close)/4, 在算出 Deviation = sqrt( 1/N*(Xi -Xmean)^2 , 2 ). 之後再根據積分函數算出成支撐面積,這邊我們就用最簡單的方式,用線性的內差法,來取代積分函數,根據Normal Distribution定理下,指要落在一個正負標準差內,就佔全體的60%,正負兩個標準差內佔了90%,在用Approach的方式算出今日成交的支撐價跟量. Ref : http://en.wikipedia.org/wiki/Normal_distribution
  5. Test Case 1101.TW http://sites.google.com/site/funningboy/perl_code/1101.TW.csv?attredirects=0&d=1 結果下載 http://sites.google.com/site/funningboy/perl_code/normaldistribution.xlsx?attredirects=0&d=1 sample code http://sites.google.com/site/funningboy/perl_code/Nm4Stock.cpp?attredirects=0&d=1 command % g++ -c -I/usr/include/boost-1_33_1/ -o Nm4Stock.o Nm4Stock.cpp % g++ -o Nm4Stock.exe Nm4Stock.o % ./Nm4Stock.exe > xxx.csv

沒有留言:

張貼留言