請教一個 Multicharts 的問題
我正在開發一策略,只有兩個變數,一個是起始時間 STARTTIME, 和一個普通數值變數MH.問題來了, 我給它 3D最佳化時,發現時間變數出了問題9:50之後,不是 10:00, 而是9:60,9:70……. 請問, 要如何處理才正確?Thanks.
補充說明: 回測時間 間隔是 10分.
要用時間函數去轉換,程式有點麻煩,不過是可以做到的 comewish 發表於 13-11-2 21:57 static/image/common/back.gif
要用時間函數去轉換,程式有點麻煩,不過是可以做到的
有道理, 我花點時間去轉換看看. thanks.
本帖最後由 sangi 於 13-11-2 22:19 編輯
C 大已經點出重點了...
我的作法如下:
訊號:
Inputs: BeginOffset(0), EndOffset(30) ;
Vars: FirstBarTime(845),EODTime(1345),BeginTime(0),EndTime(0) ;
BeginTime = ELTimeAdd(FirstBarTime,BeginOffset,"MM") ;
EndTime = ELTimeAdd(BeginTime,EndOffset,"MM") ;
Condition1 =(EndTime > BeginTime) AND (EndTime < EODTime) ;
Condition2 = (Time >= BeginTime) AND (Time < EndTime) ;
If (Condition1 AND Condition2) Then
Begin
{交易訊號}
End ;
我的想法是,先由當天第一根Bar的時間Offset 一段時間當作開始交易時間,
再由開始交易時間Offset 一段時間當作停止交易時間,要來最佳化就方便多了..
-----------------------
函數: ELTimeAdd
Inputs: ELTime(NumericSimple) , NumberAdd(NumericSimple) , Interval(StringSimple) ;
Switch (Interval)
Begin
Case "HH" :
Begin
Value1 = 60 * IntPortion(ELTime * 0.01) + 100 * FracPortion(ELTime * 0.01) + NumberAdd * 60 ;
ELTimeAdd = 100* Mod(IntPortion(Value1 * 1/60) ,24) + (Value1 - 60 * IntPortion(Value1 * 1/60)) ;
End ;
Case "MM" :
Begin
Value1 = 60 * IntPortion(ELTime * 0.01) + 100 * FracPortion(ELTime * 0.01) + NumberAdd ;
ELTimeAdd = 100 * Mod(IntPortion(Value1 * 1/60) ,24) + (Value1 - 60 * IntPortion(Value1 * 1/60));
End ;
Case "SS" :
Begin
Value1 = IntPortion(ELTime / 10000) ;
Value2 = IntPortion((ELTime - Value1 * 10000) / 100) ;
Value3 = 60 * 60 * Value1 + 60 * Value2 + IntPortion(FracPortion(ELTime / 100) * 100) + NumberAdd;
Value4 = IntPortion(Value3 /(60*60)) ;
Value5 = IntPortion((Value3 - 60 * 60 * Value4 )/60) ;
ELTimeAdd = 10000 * Mod(Value4,24) + 100 * Value5 + Value3 - (60 * 60 * Value4 + 60 * Value5);
End ;
End ;
sangi 發表於 13-11-2 22:16 static/image/common/back.gif
C 大已經點出重點了...
我的作法如下:
謝謝 Snagi大花時間寫那麼長的程式碼.
我慢慢消化看看.
如果懶惰的話,
我們是否可以這麼說---
電腦幫我們算 9:60, 9:70, 9:80, 9:90....是多餘的.
不要理會多餘的部份,
我們只看我們想要的範圍就好.
反正3D也只是看看參考而已.
EL 處理時間的形式有分 DateTime 與ELTime...
一般845 這種ELTime的形式是沒辦法做運算的,要轉成DateTime...
所以我才需要上面那個自訂函數來轉換時間做運算.. googleandy 發表於 13-11-2 22:23 static/image/common/back.gif
如果懶惰的話,
我們是否可以這麼說---
這樣的表示在圖形上會有一塊不符定義的區間佔住,
自然也就會影響判讀圖形...
A大是要測試 哪個時間進場或出場的效果比較吧?
很簡單
var : dbarcnt(0);
if d>d then dbarcnt=0;
dbarcnt=dbarcnt+1;
dbarcnt就是當天的第幾根。用當天的第幾根來測,就沒有問題了。 wldtw2008 發表於 13-11-2 22:38 static/image/common/back.gif
A大是要測試 哪個時間進場或出場的效果比較吧?
很簡單
吔, 這是好主意,
反正時間軸也想當於第幾根K棒,
而且省事很大.
我試試看. thanks.
頁:
[1]