COCO研究院

 找回密碼
 註冊
搜索
查看: 8070|回復: 8

[教學] [教學]AB 的自動交易樂章 -- 三部曲 (AFL基本邏輯)

[複製鏈接]
發表於 10-1-15 20:59 | 顯示全部樓層 |閱讀模式
本帖最後由 王子 於 10-1-15 09:10 PM 編輯

呃~ 王子!   我邏輯很差  很差~~  怎麼辦呢?

恩 以正常人來說都有一定基本的邏輯的...  不用太擔心!!   

在程式交易裡我們只要會 1*1 =1    1*0=0 就好了!  夠簡單吧!

就只有「成立」或「不成立」而已...  所以  別想太多!


在 AB 之中有下列的基本邏輯,重點也是想辦法來判斷當下的值成不成立

一、 IF 判斷

  1. if (判斷式)
  2. {
  3.     程式碼
  4. }
  5. else
  6. {
  7.    程式碼
  8. }
複製代碼


這個是最常用的 就是判斷!  沒有什麼好說...


二、switch


  1. switch ( 參數)
  2. {
  3. case  判斷1: statement;
  4.                   break;
  5. case  判斷2 : statement;
  6. ...
  7.                    break;
  8. case  判斷N : statement;
  9.                    break;
  10. default :
  11. statement;
  12. break;
  13. }
複製代碼


這一個呢? 就是判斷的進階版,如果我們喜歡寫又臭又長的義式判式的也是可以啦!  只是用上面這種方法比較好
直接輸入判斷的參數,然後根據不同的判斷撰寫相關的情況..



三、for 迴圈

  1. val[ 0 ] = Close[ 0 ];

  2. for( i =
  3. 1; i < BarCount; i++ )
  4. {
  5.    val [ i ] = 0.1 * Close[ i ] + 0.9 * val[ i - 1 ];
  6. }
複製代碼


這個就是跑一個迴圈,不斷的計算出相關的值!

以上面例子來說,定義一個陣列 在每一個根 K棒結束的時候累加   0.1的收值 + 0.9上根Val的值
一直到所有 K棒結束 (BarCount)


迴圈 除了上述這個之外,還有另外二個 do while 與 while ,大家別學這麼多! 懂一個夠用就好  XD~


▲▲_____________________ 以上就是邏輯!!


現在用一個小小例子來說明如何寫一個 EMA Function


  1. function EMA0(A, p)
  2. {
  3.       r[0] = a[0];
  4.       ep = 2/(p+1);
  5.       for(i = 1; i < BarCount; i++)
  6.       {
  7.             r[i] = r[i-1] + (a[i] - r[i-1]) * ep;
  8.       }
  9.       return r;
  10. }
複製代碼


上面就是一個 EMA 它接受二個參數,我們取二絛快慢 EMA (周期分別是 8 和 21 )


fast = EMA0(C, 8));
slow = EMA0(C, 21);
當程式呼叫該 EMAO 程式,並傳這二個參數時  它就依上述我們所寫的迴圈分別跑數一個數值回來


OK... 接下來... 我們買進和賣出的絛件就是  


  1. Buy = Cross(fast, slow);
  2. Sell = Cross(slow, fast);
複製代碼


快的那絛EMA 由下往上穿過時買進
快的那絛EMA 由上往下穿過時賣出



簡單的程式就這樣!!    總之  我們就是需要不斷的計算是條件有沒有符合 ...

有符合就動作!!
發表於 10-1-15 21:03 | 顯示全部樓層
好清楚!謝謝。
請問,afl的程式裡,switch裡的case敘述後面要不要加上break;呢?
 樓主| 發表於 10-1-15 21:10 | 顯示全部樓層
要要!!  不然它不會跳出去哦~
發表於 10-1-15 21:14 | 顯示全部樓層
還有一個問題。
從上面看來,a[0]的0是指今天,那昨天呢?是1或是-1?
我愛紅茶 該用戶已被刪除
發表於 10-1-15 21:35 | 顯示全部樓層
我下個月在試
現在我在忙其他東西中
SO都在替別人準備東西中~我有新客戶要設新場

辛苦你了王子,我到時一定會逐一跟著做的!!
發表於 10-1-16 01:47 | 顯示全部樓層
很像C語言...........
發表於 10-2-26 14:34 | 顯示全部樓層
回復 4# 綠茶妹

可以用Ref function. Ref(Array,Shift). 譬如 Ref(C,-1) 就會提供 昨天收盤的價錢.
發表於 10-2-26 14:38 | 顯示全部樓層
回復  綠茶妹

可以用Ref function. Ref(Array,Shift). 譬如 Ref(C,-1) 就會提供 昨天收盤的價錢. ...
flamshun 發表於 10-2-26 02:34 PM



    謝謝。記下來。
發表於 13-11-16 13:22 | 顯示全部樓層
感謝分享...................
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-12-22 19:00

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |