2016年12月10日 星期六

股市各項指標及其計算方式

1. K 線: 分為陽線、陰線、中立線三種,以日K為例,當該日收盤價大於開盤價,則為陽線,反之則為陰線,若開盤價等於收盤價,就是中立線。陽線和陰線分為實體和影線,實體是開盤和收盤價的價差,上影線則是最高價和實體上緣的價差,下影線是最低價和實體下緣的價差。另外,常見的K線5分K,10分K,30分K,週K,月K等,道理一樣,皆是取該時段 "開始","結束","最高"和"最低" 繪製而成。



2. 移動平均線 MA(Moving Average, MA,又稱"均線"):
 
     a) 簡單移動平均線(Simple Moving Average): n日均線即表示是最近n日價格的算術平均值:
         SMAn = (P(1)+P(2)+...+P(n))/n
         假使某日的n日SMA 為 SMA(t0, n) 則次日的n日SMA為
         SMA(t1,n) = SMA(t0,n)- P(1)/n + P(n+1)/n
   
      b) 指數移動平均值(exponential Moving Average, EMA o EWMA)
          a=2/(N+1),  若N=19, a=0.1
          S(t)= a*Y(t) + (1-a)*S(t-1)
         
 
3. 隨機指標(Stochastic Oscillator, KD指標):
     RSV (Raw Stochastic Value: 未成熟隨機值)
     RSV = (Cn-Ln)/(Hn-Ln) * 100%
     (n 為交易期間,一般定為9日,Cn為第n日之收盤價,Ln為n日內最低價,Hn為n日內最高價)
 
      K(n) = a*RSV + (1-a)*K(n-1)
      D(n) = a*Kn    + (1-a)*D(n-1)
      (a 一般定為 1/3, 若無前一日K,D值,則以50%代替)

      K值為靈敏平均值,D值為遲鈍平均值,若K>D則表示處於漲勢,否則就是跌勢,K、D值介於0%~100%之間,80%以上為買超區(多頭趨勢),20%以下為賣超區(空頭趨勢)。

4.乖離率(Bias Ration, BIAS):
   nBias = (Close -MAn)/MAn * 100%

   nBias: n日乖離率
  Close: 當日收盤價
  MAn: n日移動平均價,n 一般定為3日和6日

 5.威廉指標(Williams %R):
    W%R = (Hn-Cn)/(Hn-Ln)

    n: 交易期間,一般定為14日
    Cn: 最新收盤價
    Hn: n日內最高價
    Ln: n日內最低價






2016年7月25日 星期一

畢氏定理證明(幾何數學)~~~

        相信大家對畢氏定理都不陌生,也都知道任意直角三角形中:"斜邊平方=其餘兩邊的平方和",但是你知道為什麼會這樣嗎?
         
         這個定理對我來說是再熟悉不過了,但是有一天我女兒問我如何證明時,我也花了一些時間才找出答案,如果你也有興趣,那就先不要看答案,自己先試試看。

        我常跟我女兒說,解數學題目的樂趣在於"解不出來",如果一下子就看出答案的話,那就一點意思都沒有了~~~呵呵。

        如果你已經試過一段時間了˙(不管是否找出答案),那就來看看我的方法,當然啦,方法不只一種,"不管是黑貓還是白貓,只要抓得到老鼠的貓就是好貓",可以解出問題的解法,就是好方法。


ABC為直角三角形,想當然爾,c^2=a^2+b^2,但是如何證明呢?

以AC為一邊長,做一個正方形AEDC,再以BC和BA延長線為兩邊做一個正方形BFHG(使GH通過D,HF通過E),OK,此時你可以看出三角形BAC=三角形AEF=三角形HDE=三角形GCD(因為其斜邊都相等,而且三個角也相等)。那麼
                             
正方形AEDC(紅框)的面積=正方形BFHG(綠框)-4個三角形面積

所以,c^2 = (a+b)^2 - 4*(a*b/2)
化簡    c^2 = a^2+b^2+2ab - 2ab 
 最後   c^2 = a^2+b^2
證明完畢! 夠簡單吧~~~~~

曾經聽過一首打油詩: "人生幾何又幾何,學了幾何又幾何? 幾何學了幾何用? 不學幾何奈我何?"  哈哈哈~蠻好玩的,其實數學沒想像中困難啦,只要肯花點時間了解,其實也可以找出其中樂趣的。

2016年7月20日 星期三

漫談數學動動腦

漫談數學動動腦
最近通訊軟體line流行貼出數學題目,讓大家動動腦筋:

動腦時間
 1  1  1 = 6
 2  2  2 = 6
 3  3  3 = 6
 4  4  4 = 6
 5  5  5 = 6
 6  6  6 = 6
 7  7  7 = 6
 8  8  8 = 6
 9  9  9 = 6
請加入運算符號,但不能加任何數字,以使等號成立。

然後有人解出一組答案如下:


當然,也有其他的答案,
例如4 4+4-√4=6 
例如6 6-6+6=6 
例如9√9×√9-√9=6 

其中應該是8最難,使用到立方根,但這是不合規則的。
這種遊戲題目只能加符號,不能加數字。立方根有用到3就不行。

是,有一位對數學很有興趣的高手想到了8的另一解法,用對數、對數哦!!!

(log8/log(log8/log√8))!

看得懂嗎 ? 解給你看:


然後,加上階層後  3!=3*2*1= 6

神解答呀! Orz......

2016年6月28日 星期二

LabVIEW: 聲音頻率分析

這個練習輸入一個聲音檔案,並做頻率分析。


執行結果
Block diagram



2016年6月21日 星期二

LabVIEW: 簡易秀圖程式(JPG)

這個程式可以選取系統中的JPG 檔案,並且秀在螢幕上:只要簡單幾個元件就可以達成,非常簡單。


執行結果


Block Diagram



LabVIEW: 用 Event Structure 畫出滑鼠軌跡(加強版)

延續 "LabVIEW: 用 Event Structure 畫出滑鼠軌跡"練習,
改成 "按下滑鼠左鍵拖曳,才畫出軌跡,按右鍵清除軌跡"。


執行結果

Block Diagram






2016年6月20日 星期一

LabVIEW: 用 Event Structure 畫出滑鼠軌跡

這個練習使用Event structure偵測並擷取滑鼠位置的座標,並且即時畫到XY Graph上。

Block Diagram


記得Timeout裡面,以要把資料連接起來


人機介面

LabVIEW: XY Graph + Formula Node 製作 愛心圖形

這個練習用XY Graph 和 Formula Node繪製愛心圖形。本程式使用兩段函式繪成:

y=sqrt(1-pow((abs(x)-1), 2));

y=acos(1-abs(x))-3.1415926;

我在[-2,2]區間取用401個點(頭尾都要),先畫上半部,再畫下半部。




執行結果


Block Diagram



2016年5月30日 星期一

LabVIEW: 聲音擷取+頻譜分析

   這個練習非常簡單: 從麥克風讀取一秒鐘的資料,然後輸出至圖表,並作頻譜分析。




人機介面&執行結果



Block digram



Acquire Sound的設定




Spectral Measurements的設定

2016年5月29日 星期日

Arduino + Labview: LM35溫度感測器,即時溫度監控

    利用Arduino開發板上的類比輸入,讀取溫度感測IC上的值,轉成實際溫度然後透過Serial port傳輸至電腦,而電腦這端則是利用LabView來接收,並做適當轉換後以圖表作為監控介面。

實驗結果:




     Arduino這邊的程式很簡單,先初始化serial port,然後再經由A0讀入LM35的感測值,要注意這個感測值是10位元(bits),根據LM35的datasheet得之,正確溫度的計算方式是每10mV(0.01V)增加一度C,也就是說0V代表0度C,0.1 V(10*0.01V)代表10度C,以此類推。因為每次讀回10bit的資料 n,我們要將n換成電壓值: (5V/1024)*n ,又每10mv 增加一度,所以實際溫度=(5V/1024)*n/10mV = (500/1024)*n

     算出實際溫度之後,利用Serial.print()函數將資料輸出至Serial port傳輸至電腦(我的系統是COM6),此時的資料是字串型式(每筆資料都是整數兩位數,小數兩位數,加上小數點共五個字元, EX:  28.93)。

void setup() 
{
  Serial.begin(9600); 
}

void loop()
{
  float x;
  int n;
  n = analogRead(0);
  x = 500.0 * n /1024.0;
  Serial.print(x, 2); 
  delay(500);
}

再來是電腦這邊的Labview程式,

Labview的Block diagram

Labview的人機介面


2016年5月3日 星期二

LabVIEW: 用手機透過網路,監控電腦的 Labview 程式

          如何用手機透過網路來監控遠端的Labview程式呢? 首先你必須先在電腦上寫一個Labview程式,然後宣告一個 shared variable並公開出來,然後在手機裝上data dashboard的app,再用這個app的indicator連上電腦的shared variable就可以了,概念其實很簡單,以下就是詳細步驟:


開一個專案,並且在專案中New一個 Variable


我New一個Variable,並命名為v1


記得要先存檔

存完檔之後再用滑鼠拖曳至你的程式中

我想把這個shared variable(v1)當成輸出,所以記得在v1上按滑鼠右鍵,再選擇Access Mode中的Write屬性


最後將程式執行起來,這個程式很簡單,就是用亂數產生數值再乘以10之後,再送往v1


手機端需要一個app,請先用google play搜尋 "data dashboard for labview",沒錯,就是最上面那一個,安裝她吧!


安裝完之後,執行這個app,會進入這個畫面,按中間那個"+Add"


再點選"Connect to shared variable..."


輸入Labview程式所在的電腦 ip address之後,按"Connect..."


Connect完成,手機螢幕會秀出可以連結的share variables,點選v1


系統顯示出V1為數值變數


接下來選擇indicator,我選右上角那個指針式的顯示器


數值範圍設定為0.0~10.0


顯示器出現後,點選右上角的"Run",進行動態連結~~~



執行結果!!!! ~~~~~~~是不是很酷呢?


LabVIEW: 神兵利器 Formula Node

        在LabView中,有一個Structure叫做Formula Node,這個結構可以讓你用C 語言定義變數和寫一段程式,相當於C的副程式,非常好用,對於熟悉C語言的人來說,簡直就是一項神兵利器,應該善加利用~~~~





Formula Node隱身在Structure項目中



Formula Node可以定義多個輸入和輸出,中間放置用C 語言寫的程式碼,非常直覺,也非常方便。



數學計算: "連加"(1加到10)和"階層(5!)",一下子就搞定了,是不是很容易呢?


LabVIEW: 透過網路遙控程式

        這個練習主要是透過網路連線來控制遠端的labview的程式,labview可以利用client-server的架構,啟動webserver的服務,接受來自遠端的請求,利用這樣的服務,我們就可以透過網頁來控制遠方的系統了,很方便。


程式執行結果


一個簡單程式


人機介面



選擇 Tools->Web Publishing Tool


選擇你的程式並勾選 "Request control when connection is established" 


這一頁,可以不修改


記住URL名稱,等一下開網頁連進來


設定完畢


開啟一個網頁,把剛剛的網址敲入,連線成功,並且可以即時控制這個labview程式。