如何指出指定時間內的高低收位置? [MC]
-
MC用户求助:
您可以看一下帖子http://forums.touchance.cn/forum ... &extra=page%3D1,里面说的比较详细。
一、由于HighS和LowS函数中使用了关键字sessionlastbar来区分交易所时段,不同的交易所对于时间的划分可能不一样,同一个交易所不同的商品合约对于交易时段的划分也可能不一样,关于某个商品合约的交易所时段您可以在报价管理器中查看。
二、恒指期货的交易所时段是从9:15到23:45,所以通过highD和HighS函数求得的交易日的最高价是一样的,对于LowD和LowS、closeD和closeS、OpenD和OpenS求得的值都是一样的。
三、如果您只是想求得日市,也就是恒指的9:15到16:30时间段内的最高价、最低价、开盘价和收盘价,那么您需要自己写一个特定的函数(对HighD、LowD、closeD、openD进行修改就可以了),MC中没有针对特殊时段的求日内最高价、最低价、开盘价和收盘价的函数。 -
MC回复讨论一:
您可以看一下帖子http://forums.touchance.cn/forum ... &extra=page%3D1,里面说的比较详细。
一、由于HighS和LowS函数中使用了关键字sessionlastbar来区分交易所时段,不同的交易所对于时间的划分可能不一样,同一个交易所不同的商品合约对于交易时段的划分也可能不一样,关于某个商品合约的交易所时段您可以在报价管理器中查看。
二、恒指期货的交易所时段是从9:15到23:45,所以通过highD和HighS函数求得的交易日的最高价是一样的,对于LowD和LowS、closeD和closeS、OpenD和OpenS求得的值都是一样的。
三、如果您只是想求得日市,也就是恒指的9:15到16:30时间段内的最高价、最低价、开盘价和收盘价,那么您需要自己写一个特定的函数(对HighD、LowD、closeD、openD进行修改就可以了),MC中没有针对特殊时段的求日内最高价、最低价、开盘价和收盘价的函数。 -
MC回复讨论二:
(對HighD、LowD、closeD、openD進行修改就可以了)<<這個我可以如何入手?
是否先開一個$OHLCPeriodsAgo ,
修改內容
然後新增名為 $HighD 的函數
inputs: PeriodsAgo( numericsimple ) ;
variables: var1(0), var2(0), var3(0), var4(0) ;
Value1 = $OHLCPeriodsAgo( PeriodsAgo, var1, var2, var3, var4 ) ;
$HighD = var2 ; -
MC回复讨论三:
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 ;
test_OHLCPeriodsAgo = -1 ;
end
else
begin
if PeriodType = 0 then
Condition1 = sess_last_bar[1] and time[1]<=1600 and time[1]>=1130
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 if PeriodType = 1 and time<=1630 then
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
else if periodtype<>1 then
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 ) ] ;
test_OHLCPeriodsAgo = 1 ;
end ;
if false then
Value1 = test_OHLCPeriodsAgo[1] ;
这个是您需要的代码,新建一个函数脚本,名称命名为test_ohlcperiodsago即可,然后再新建test_highd函数,在内部调用test_ohlcperiodsago函数即可。 -
MC回复讨论四:
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 ;
test_OHLCPeriodsAgo = -1 ;
end
else
begin
if PeriodType = 0 then
Condition1 = sess_last_bar[1] and time[1]<=1600 and time[1]>=1130
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 if PeriodType = 1 and time<=1630 then
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
else if periodtype<>1 then
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 ) ] ;
test_OHLCPeriodsAgo = 1 ;
end ;
if false then
Value1 = test_OHLCPeriodsAgo[1] ;
这个是您需要的代码,新建一个函数脚本,名称命名为test_ohlcperiodsago即可,然后再新建test_highd函数,在内部调用test_ohlcperiodsago函数即可。
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 511411198 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容