2020年6月12日 星期五
結算日語法如何寫 --- 小道瓊、那斯達克、小SP
2020年6月8日 星期一
結算日語法如何寫 --- 台指期
台指期的結算日在每月的第三個禮拜三,到這日波段單便要出場。因此,我們需要在語法中判斷出結算日。
每月的第三個禮拜三由15號至21 號都有可能。上圖是2020年月曆。如果當月的 1 號是禮拜三,第三個禮拜三會是15 號,例如今年的一月。如果當月的 1 號是禮拜四,第三個禮拜三會是21 號,例如今年的十月。
vars: Settlement(false);
If Date <> Date [1] then Settlement = false;
If DayOfMonth(Date)>=15 and DayOfMonth(Date)<=21 and DayOfWeek(Date)=3 then Settlement = True;
If marketposition <> 0 and Settlement
= true then setexitonclose;
在語法中,先定義出一個變數Settlement,初始值為false,如符合條件Settlement 會 = True 。如果結算日當天有部位,則收盤時出場。
這好像很簡單喔! 可是,現實中會出現延後結算,如果第三個禮拜三當天遇上了假期,像遇上了颱風,便會出現延後結算的問題。關於這個問題,解決方法是寫一個能判斷延後結算的函數。寫法可以參考曾永政老師的版本,以下符上連結
http://www.yctseng.net/2012/03/blog-post_13.html
在Powerlanguage Editor 裡新增一個函數CheckDay,函數回傳類型為True/False,儲存類型為時序。
var:mark(0);
if D>D[1] then CheckDay=false;
if Month(D)<>Month(D)[1] then mark=0;
if (DayOfMonth(D)>=15 and DayOfMonth(D)<=21 and DayOfWeek(D)=3) then begin
CheckDay=True;
mark=1;
end
else
if mark=0 and
(
(DayOfMonth(D)>=16 and DayOfMonth(D)<=22 and DayOfWeek(D)=4) or
(DayOfMonth(D)>=17 and DayOfMonth(D)<=23 and DayOfWeek(D)=5) or
(DayOfMonth(D)>=18 and DayOfMonth(D)<=24 and DayOfWeek(D)=6) or
(DayOfMonth(D)>=20 and DayOfMonth(D)<=26 and DayOfWeek(D)=1) or
(DayOfMonth(D)>=21 and DayOfMonth(D)<=27 and DayOfWeek(D)=2) or
(DayOfMonth(D)>=22)
) then begin
CheckDay=True;
mark=1;
end;
有了這個函數後,結算日出場便可寫成:
If marketposition <> 0 and CheckDay
= true then setexitonclose;
經典當沖交易系統 --- ORB
ORB 即是 Opening Range Breakout ,意思是開盤區間突破,先定義出一個區 間 ,突破此區間進場,收盤前平倉。定義區 間 的做 法 會以當天開盤價或開盤時段的高低點作參考。例如以開盤後 30 分鐘內的最高價和最低價作為區間,突破開盤後 30 分鐘內的最高價進...
-
邏輯判斷 運算符 含義 < 小 於 > 大 於 <= 小 於...
-
海龜交易法則 --- 海龜原文(中文版) 導言 海龜實驗 理查德 . 丹尼斯想弄清楚偉大的交易員是天生造就的還是後天培養的。 一個老生常談:天性還是培養? 1983 年年中,著名的商品投機家理查德 . 丹尼斯與他的老友比爾 . 埃克哈特進行了一場辯論,這...
-
台指期的結算日在每月的第三個禮拜三,到這日波段單便要出場。因 此 ,我們需要在語法中判斷出結算日。 每月的第三個禮拜三由 15 號至 21 號都有可能。上圖是 2020 年月曆。如果當月的 1 號是禮拜三,第三個禮拜三會是 15 號,例如今年的一月。如果...