本帖最後由 王子 於 10-1-15 09:10 PM 編輯  
 
呃~ 王子!   我邏輯很差  很差~~  怎麼辦呢? 
 
恩 以正常人來說都有一定基本的邏輯的...  不用太擔心!!    
 
在程式交易裡我們只要會  1*1 =1    1*0=0 就好了!  夠簡單吧! 
 
就只有「成立」或「不成立」而已...  所以  別想太多! 
 
 
在 AB 之中有下列的基本邏輯,重點也是想辦法來判斷當下的值成不成立 
 
一、 IF 判斷 
 
- if (判斷式)
 
 - {
 
 -     程式碼
 
 - }
 
 - else
 
 - {
 
 -    程式碼
 
 -  }
 
  複製代碼 
 
這個是最常用的 就是判斷!  沒有什麼好說... 
 
 
二、switch  
 
 
- switch ( 參數) 
 
 - { 
 
 - case  判斷1: statement;
 
 -                   break;
 
 - case  判斷2 : statement;
 
 - ...
 
 -                    break;
 
 - case  判斷N : statement;
 
 -                    break;
 
 - default : 
 
 - statement;
 
 -  break;
 
 - } 
 
  複製代碼 
 
這一個呢? 就是判斷的進階版,如果我們喜歡寫又臭又長的義式判式的也是可以啦!  只是用上面這種方法比較好 
直接輸入判斷的參數,然後根據不同的判斷撰寫相關的情況.. 
 
 
 
三、for 迴圈 
 
- val[ 0 ] = Close[ 0 ]; 
 
  
- for( i = 
 
 - 1; i < BarCount; i++ ) 
 
 - { 
 
 -    val [ i ] = 0.1 * Close[ i ] + 0.9 * val[ i - 1 ]; 
 
 - } 
 
  複製代碼 
 
這個就是跑一個迴圈,不斷的計算出相關的值! 
 
以上面例子來說,定義一個陣列 在每一個根 K棒結束的時候累加   0.1的收值 + 0.9上根Val的值 
一直到所有 K棒結束 (BarCount) 
 
 
迴圈 除了上述這個之外,還有另外二個 do while 與 while ,大家別學這麼多! 懂一個夠用就好  XD~ 
 
 
▲▲_____________________ 以上就是邏輯!! 
 
 
現在用一個小小例子來說明如何寫一個 EMA Function 
 
 
- function EMA0(A, p)
 
 - {
 
 -       r[0] = a[0];
 
 -       ep = 2/(p+1);
 
 -       for(i = 1; i < BarCount; i++)
 
 -       {
 
 -             r[i] = r[i-1] + (a[i] - r[i-1]) * ep;
 
 -       }
 
 -       return r;
 
 - } 
 
  複製代碼 
 
上面就是一個 EMA 它接受二個參數,我們取二絛快慢 EMA (周期分別是 8 和 21 )  
 
 
fast = EMA0(C, 8)); 
slow = EMA0(C, 21); 
當程式呼叫該 EMAO 程式,並傳這二個參數時  它就依上述我們所寫的迴圈分別跑數一個數值回來 
 
 
OK... 接下來... 我們買進和賣出的絛件就是   
 
 
- Buy = Cross(fast, slow);
 
 - Sell = Cross(slow, fast);
 
  複製代碼 
 
快的那絛EMA 由下往上穿過時買進  
快的那絛EMA 由上往下穿過時賣出  
 
 
 
簡單的程式就這樣!!    總之  我們就是需要不斷的計算是條件有沒有符合 ... 
 
有符合就動作!! |