googleandy 發表於 13-11-2 21:06

請教一個 Multicharts 的問題

我正在開發一策略,只有兩個變數,一個是起始時間 STARTTIME, 和一個普通數值變數MH.


問題來了, 我給它 3D最佳化時,發現時間變數出了問題9:50之後,不是 10:00, 而是9:60,9:70……. 請問, 要如何處理才正確?Thanks.




googleandy 發表於 13-11-2 21:37

補充說明: 回測時間 間隔是 10分.

comewish 發表於 13-11-2 21:57

要用時間函數去轉換,程式有點麻煩,不過是可以做到的

googleandy 發表於 13-11-2 22:05

comewish 發表於 13-11-2 21:57 static/image/common/back.gif
要用時間函數去轉換,程式有點麻煩,不過是可以做到的

有道理, 我花點時間去轉換看看. thanks.

sangi 發表於 13-11-2 22:16

本帖最後由 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 ;


googleandy 發表於 13-11-2 22:19

sangi 發表於 13-11-2 22:16 static/image/common/back.gif
C 大已經點出重點了...

我的作法如下:


謝謝 Snagi大花時間寫那麼長的程式碼.
我慢慢消化看看.

googleandy 發表於 13-11-2 22:23


如果懶惰的話,

我們是否可以這麼說---
電腦幫我們算 9:60, 9:70, 9:80, 9:90....是多餘的.

不要理會多餘的部份,
我們只看我們想要的範圍就好.
反正3D也只是看看參考而已.


sangi 發表於 13-11-2 22:25

EL 處理時間的形式有分 DateTime 與ELTime...

一般845 這種ELTime的形式是沒辦法做運算的,要轉成DateTime...

所以我才需要上面那個自訂函數來轉換時間做運算..

sangi 發表於 13-11-2 22:32

googleandy 發表於 13-11-2 22:23 static/image/common/back.gif
如果懶惰的話,

我們是否可以這麼說---


這樣的表示在圖形上會有一塊不符定義的區間佔住,

自然也就會影響判讀圖形...

wldtw2008 發表於 13-11-2 22:38

A大是要測試 哪個時間進場或出場的效果比較吧?

很簡單
var : dbarcnt(0);
if d>d then dbarcnt=0;
dbarcnt=dbarcnt+1;

dbarcnt就是當天的第幾根。用當天的第幾根來測,就沒有問題了。

googleandy 發表於 13-11-2 22:44

wldtw2008 發表於 13-11-2 22:38 static/image/common/back.gif
A大是要測試 哪個時間進場或出場的效果比較吧?

很簡單


吔, 這是好主意,
反正時間軸也想當於第幾根K棒,
而且省事很大.
我試試看. thanks.
頁: [1]
查看完整版本: 請教一個 Multicharts 的問題