有個關於交易時間的程式寫法想請教大家...
眾所皆知在交易國外商品的時候,會有冬令和夏令時間的分別。由於我目前的系統有的是包全部的時間去交易,有的是只交易人工盤(台北時間晚上時段)。
作法上是設二個不同的symbol,不同的交易時段去跑。
假設如果我想把交易時間的控制項寫在程式中,比方在每年的三月第二個星期日到十一月的第一個星期日為夏令時間,交易時間就從晚上的0900開始到0230結束(以輕原油人工盤時間為例);而其餘時間就為冬令時間,交易時間變成晚上1000到0330。
想了很久,不知道怎麼表達出來,有沒有板上高手可以幫忙的呢?
先謝過了...:)
PS. 冬夏令時間好像有改過,從2007年開始:
原夏令:四月的第一個星期日-->變為:三月的第二個星期日
原冬令:十月的第四個星期日-->變為:十一月的第一個星期日
本帖最後由 wicebing 於 14-4-21 00:36 編輯
//先編譯一組函數 _Season
Vars: Mn(0),Wk(0),Dy(0),now(0),_Season(0) ;
Now = date;
Mn = Month(Now);
Dy = dayofweek(Now);
If Mn <> Mn then Wk = 1;
//If Dy = 0 and Dy <> Dy then Wk = Wk + 1;
If Dayofmonth(Now)<>1 and Dy = 1 and Dy <> Dy then Wk = Wk + 1;
Condition1 = Mn > 3 and Mn < 11;
Condition2 = Mn = 3 and Wk > 2;
Condition3 = Mn = 11 and Wk <= 1;
If Condition1 or Condition2 or Condition3 then _Season = 1 else _Season = 0;
{
once cleardebug;
print(Date," ",Time," ",Mn," ",Dy," ",Wk," ",_Season );
}
//我是還沒接觸國外的期貨,不過應該星期日沒開盤,所以我用星期一來判斷是第幾個星期日 本帖最後由 wicebing 於 14-4-21 00:43 編輯
//再把函數套到你的策略
If _Season = 1 and time >= 0900 or time < 0230 then begin
//夏日策略
End
If _Season = 0 and time >= 1000 or time < 0330 then begin
//冬令策略
End
//因為還沒接觸海外期貨,還不知道這樣的跨日寫法會不會有問題
Vars: Mn(0),Wk(0),Dy(0),now(0) ;
Now = date;
Mn = Month(Now);
Dy = dayofweek(Now);
If Mn <> Mn then Wk = 1;
//If Dy = 0 and Dy <> Dy then Wk = Wk + 1;
If Dayofmonth(Now)<>1 and Dy = 1 and Dy <> Dy then Wk = Wk + 1;
Condition1 = Mn > 3 and Mn < 11;
Condition2 = Mn = 3 and Wk > 2;
Condition3 = Mn = 11 and Wk <= 1;
If Condition1 or Condition2 or Condition3 then _Season = 1 else _Season = 0;
{
once cleardebug;
print(Date," ",Time," ",Mn," ",Dy," ",Wk," ",_Season );
} sorry,回覆慢了些,這兩天不在,感謝兩位的回覆,我來試試看能不能work,再把結果告訴大家。 感謝無私分享{:4_82:} 本帖最後由 folkchen 於 14-5-8 11:33 編輯
{:4_90:}{:4_90:}{:4_90:} 感謝分享
感激不盡
感恩
頁:
[1]