Yahoo奇摩知識+ 將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+ 網站將會轉為唯讀模式。其他 Yahoo奇摩產品與服務或您的 Yahoo奇摩帳號都不會受影響。如需關於 Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

如何用matlab做基本的股票分析--贈20點

輸入層:28個輸入變數(看註解)

隱藏層:15個神經元處理的訊號的交互影響

輸出層:輸入3個變數(買.賣.持有)

註解:28個變數

1.當日RSI買訊

2.當日KD買訊

3.當日MACD買訊

4.當日MTM買訊

5.當日TAPI買訊

6.當日AR&BR買訊

7.當日W%R買訊

8.前一日RSI買訊

9.前一日KD買訊

10.前一日MACD買訊

11.前一日MTM買訊

12.前一日TAPI買訊

13.前一日AR&BR買訊

14.前一日W%R買訊

15.當日RSI賣訊

16.當日KD賣訊

17.當日MACD賣訊

18.當日MTM賣訊

19.當日TAPI賣訊

20.當日AR&BR賣訊

21.當日W%R賣訊

22.前一日RSI賣訊

23.前一日KD賣訊

24.前一日MACD賣訊

25.前一日MTM賣訊

26.前一日TAPI賣訊

27.前一日AR&BR前

28.前一日W%R賣訊

2007-05-13 15:28:41 補充

ps~這是期末專題報告 所以想請大家多多幫忙^^謝謝

1 個解答

評分
  • ?
    Lv 5
    1 0 年前
    最佳解答

    倒傳遞類神經,批次學習,準備好輸入的訓練資料為traindata.mat。

    %--------------------

    clear all;clc;format long;

    a=28;%a is the no of input neuron of ANN

    h1=15;%h1 is the no of hidden layer1 neurons of ANN

    o=3;%o is the no of output layer neurons of ANN

    learning_epoch=5000;

    no_learning=50;

    learning_rate=0.1;alpha=0.05;

    %--------------------------------------------------------------

    %read the training data

    load traindata.mat

    [m n]=size(M);

    if (m < no_learning)

    disp('error learning');

    break;

    end

    %-------------------------

    Wih=1-2*rand(a,h1);

    Who=1-2*rand(h1,o);

    Bh=1-2*rand(1,h1);

    Bo=1-2*rand(1,o);

    %--------------

    lastdWho=zeros(h1,o);

    lastdBo=zeros(1,o);

    lastdWih=zeros(a,h1);

    lastdBh=zeros(1,h1);

    %open file for record

    fmse=fopen('learning_mse.dat','w');

    k=1;

    lastmse=0;

    count=0;count1=0;

    %---------------------------------------------------------------

    %ANN training

    tic

    while (k<= learning_epoch) %& (count<20) & (count1<10)%+++++++++++++++++++++++++++

    %Training ANN

    %-------------------

    tempWih=zeros(a,h1);

    tempBh=zeros(1,h1);

    tempWho=zeros(h1,o);

    tempBo=zeros(1,o);

    2007-05-19 04:30:51 補充:

    for no=1:no_learning%

    %**************************

    A(1:a)=M(no,1:a);

    Target(1:o)=M(no,a+1:n);

    %calculate

    Hout=logsig(A*Wih+Bh);

    Out=Hout*Who+Bo;

    error=Target-Out;

    s2=-2*1*error;

    s1 = (1-Hout).*Hout.*(s2*Who');

    2007-05-19 04:31:57 補充:

    %Batch learning

    tempWho=tempWho+Hout'*s2;

    tempBo=tempBo+s2;

    tempWih=tempWih+A'*s1;

    tempBh=tempBh+s1;

    %-----------------

    end

    2007-05-19 04:32:48 補充:

    %-----------------

    dWho=alpha*lastdWho+learning_rate*tempWho/no_learning;

    dBo=alpha*lastdBo+learning_rate*tempBo/no_learning;

    dWih=alpha*lastdWih+learning_rate*tempWih/no_learning;;

    dBh=alpha*lastdBh+learning_rate*tempBh/no_learning;

    2007-05-19 04:33:04 補充:

    %--------------------------

    %Update parameters-------------

    Who=Who-dWho;

    Bo=Bo-dBo;

    Wih=Wih-dWih;

    Bh=Bh-dBh;

    2007-05-19 04:35:04 補充:

    %calculaue learning MSE

    sum_error=0;

    for no=1:no_learning

    A(1:a)=M(no,1:a);

    Target(1:o)=M(no,(a+1):n);

    Hout=logsig(A*Wih+Bh);

    Out=Hout*Who+Bo;

    error=Target-Out;

    sum_error=sum_error+sum(error*error');

    end

    2007-05-19 04:35:12 補充:

    MSE(k)=sum_error/o/no_learning;

    lastdWho=dWho;

    lastdBo=dBo;

    lastdWih=dWih;

    lastdBh=dBh;

    lastmse=MSE(k)

    fprintf(fmse,'%2.1f %8.5f \n',k,MSE(k));

    k=k+1;

    end

    fclose(fmse);

    toc

    執行過程有問題請補充發問或來信。

    參考資料: 自己
還有問題?馬上發問,尋求解答。