MCpro版本有HighS和LowS函數,沒有OpenS和CloseS函數,MC8.8和MC8s都沒有。下面是OHLCPeriodsAgo的代碼。
inputs:?
? ? ? ? PeriodType( numericsimple ),? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? PeriodsAgo( numericsimple ),?
? ? ? ? oPeriodOpen( numericref ),?
? ? ? ? oPeriodHigh( numericref ),?
? ? ? ? oPeriodLow( numericref ),?
? ? ? ? oPeriodClose( numericref ) ;
variables:
? ? ? ? var0( 0 ), sess_last_bar(false) ;
arrays:
? ? ? ? arr0[ 4, 50 ]( -1 ) ;
sess_last_bar = sessionlastbar;
condition1 = PeriodsAgo > 50 or BarType > IFF(PeriodType<>0, PeriodType + 1, PeriodType + 2) or BarType > 4 ;
if condition1 then
? ? ? ? begin
? ? ? ? oPeriodOpen = -1 ;
? ? ? ? oPeriodHigh = -1 ;
? ? ? ? oPeriodLow = -1 ;
? ? ? ? oPeriodClose = -1 ;
? ? ? ? OHLCPeriodsAgo = -1 ;
? ? ? ? end
else
? ? ? ? begin? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? if PeriodType = 0 then
? ? ? ? ? ? ? ? Condition1 = sess_last_bar[1]
? ? ? ? else if PeriodType = 1 then
? ? ? ? ? ? ? ? Condition1 = Date <> Date[1]
? ? ? ? else if PeriodType = 2 then
? ? ? ? ? ? ? ? Condition1 = DayOfWeek( Date ) < DayOfWeek( Date[1] )
? ? ? ? else if PeriodType = 3 then
? ? ? ? ? ? ? ? Condition1 = Month( Date ) <> Month( Date[1] )?
? ? ? ? else if PeriodType = 4 then
? ? ? ? ? ? ? ? Condition1 = Year( Date ) <> Year( Date[1] ) ;
? ? ? ? condition1 = CurrentBar = 1 or Condition1 ;
? ? ? ? if condition1 then? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? begin
? ? ? ? ? ? ? ? var0 = var0 - 1 ;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? if var0 = -1?
? ? ? ? ? ? ? ? ? ? ? ? then var0 = 50 ;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? arr0[ 1, var0 ] = O ;
? ? ? ? ? ? ? ? arr0[ 2, var0 ] = H ;
? ? ? ? ? ? ? ? arr0[ 3, var0 ] = L ;
? ? ? ? ? ? ? ? arr0[ 4, var0 ] = C ;
? ? ? ? ? ? ? ? end?
? ? ? ? else? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? begin
? ? ? ? ? ? ? ? condition1 = H > arr0[ 2, var0 ] ;
? ? ? ? ? ? ? ? if condition1 then arr0[ 2, var0 ] = H ;
? ? ? ? ? ? ? ? condition1 = L < arr0[ 3, var0 ] ;
? ? ? ? ? ? ? ? if condition1 then arr0[ 3, var0 ] = L ;
? ? ? ? ? ? ? ? arr0[ 4, var0 ] = C ;
? ? ? ? ? ? ? ? end ;
? ? ? ? oPeriodOpen = arr0[ 1, Mod( var0 + PeriodsAgo, 51 ) ] ;
? ? ? ? oPeriodHigh = arr0[ 2, Mod( var0 + PeriodsAgo, 51 ) ] ;
? ? ? ? oPeriodLow = arr0[ 3, Mod( var0 + PeriodsAgo, 51 ) ] ;
? ? ? ? oPeriodClose = arr0[ 4, Mod( var0 + PeriodsAgo, 51 ) ] ;
? ? ? ? OHLCPeriodsAgo = 1 ;
? ? ? ? end ;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
if false then
? ? ? ? Value1 = OHLCPeriodsAgo[1] ;
?
MCpro版本有HighS和LowS函數,沒有OpenS和CloseS函數,MC8.8和MC8s都沒有。下面是OHLCPeriodsAgo的代碼。
inputs:?
? ? ? ? PeriodType( numericsimple ),? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? PeriodsAgo( numericsimple ),?
? ? ? ? oPeriodOpen( numericref ),?
? ? ? ? oPeriodHigh( numericref ),?
? ? ? ? oPeriodLow( numericref ),?
? ? ? ? oPeriodClose( numericref ) ;
variables:
? ? ? ? var0( 0 ), sess_last_bar(false) ;
arrays:
? ? ? ? arr0[ 4, 50 ]( -1 ) ;
sess_last_bar = sessionlastbar;
condition1 = PeriodsAgo > 50 or BarType > IFF(PeriodType<>0, PeriodType + 1, PeriodType + 2) or BarType > 4 ;
if condition1 then
? ? ? ? begin
? ? ? ? oPeriodOpen = -1 ;
? ? ? ? oPeriodHigh = -1 ;
? ? ? ? oPeriodLow = -1 ;
? ? ? ? oPeriodClose = -1 ;
? ? ? ? OHLCPeriodsAgo = -1 ;
? ? ? ? end
else
? ? ? ? begin? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? if PeriodType = 0 then
? ? ? ? ? ? ? ? Condition1 = sess_last_bar[1]
? ? ? ? else if PeriodType = 1 then
? ? ? ? ? ? ? ? Condition1 = Date <> Date[1]
? ? ? ? else if PeriodType = 2 then
? ? ? ? ? ? ? ? Condition1 = DayOfWeek( Date ) < DayOfWeek( Date[1] )
? ? ? ? else if PeriodType = 3 then
? ? ? ? ? ? ? ? Condition1 = Month( Date ) <> Month( Date[1] )?
? ? ? ? else if PeriodType = 4 then
? ? ? ? ? ? ? ? Condition1 = Year( Date ) <> Year( Date[1] ) ;
? ? ? ? condition1 = CurrentBar = 1 or Condition1 ;
? ? ? ? if condition1 then? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? begin
? ? ? ? ? ? ? ? var0 = var0 - 1 ;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? if var0 = -1?
? ? ? ? ? ? ? ? ? ? ? ? then var0 = 50 ;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? arr0[ 1, var0 ] = O ;
? ? ? ? ? ? ? ? arr0[ 2, var0 ] = H ;
? ? ? ? ? ? ? ? arr0[ 3, var0 ] = L ;
? ? ? ? ? ? ? ? arr0[ 4, var0 ] = C ;
? ? ? ? ? ? ? ? end?
? ? ? ? else? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? begin
? ? ? ? ? ? ? ? condition1 = H > arr0[ 2, var0 ] ;
? ? ? ? ? ? ? ? if condition1 then arr0[ 2, var0 ] = H ;
? ? ? ? ? ? ? ? condition1 = L < arr0[ 3, var0 ] ;
? ? ? ? ? ? ? ? if condition1 then arr0[ 3, var0 ] = L ;
? ? ? ? ? ? ? ? arr0[ 4, var0 ] = C ;
? ? ? ? ? ? ? ? end ;
? ? ? ? oPeriodOpen = arr0[ 1, Mod( var0 + PeriodsAgo, 51 ) ] ;
? ? ? ? oPeriodHigh = arr0[ 2, Mod( var0 + PeriodsAgo, 51 ) ] ;
? ? ? ? oPeriodLow = arr0[ 3, Mod( var0 + PeriodsAgo, 51 ) ] ;
? ? ? ? oPeriodClose = arr0[ 4, Mod( var0 + PeriodsAgo, 51 ) ] ;
? ? ? ? OHLCPeriodsAgo = 1 ;
? ? ? ? end ;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
if false then
? ? ? ? Value1 = OHLCPeriodsAgo[1] ;
?
再請教下老師:
之前的問題算是明白了。但關于這個Session的定義與計算,我發現周五夜盤與周一早盤,系統會當成是兩個Session(如圖),這樣會導致我的策略計算有誤,請問有何辦法解決這個問題?
?
我將原始的OHLCPeriodsAgo函數的代碼做了調整,使該代碼可以完全用于國內期貨交易所的時間段,不會出現周五夜盤與周一早盤分成兩個交易時段的問題。詳細見代碼附件,順便寫了調整后的HighS和lowS代碼
代碼見鏈接:
http://dl.icetech.com.cn/download/forums/test_OHLCPeriodsAgo.rar
?
我將原始的OHLCPeriodsAgo函數的代碼做了調整,使該代碼可以完全用于國內期貨交易所的時間段,不會出現周五夜盤與周一早盤分成兩個交易時段的問題。詳細見代碼附件,順便寫了調整后的HighS和lowS代碼
代碼見鏈接:
http://dl.icetech.com.cn/download/forums/test_OHLCPeriodsAgo.rar