本帖最後由 王子 於 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 由上往下穿過時賣出
簡單的程式就這樣!! 總之 我們就是需要不斷的計算是條件有沒有符合 ...
有符合就動作!! |