|
這個指標是mc 自帶的, 會把當天的open, high, low 晝一條水平線出來, 看coding 時有些看不太懂, 有沒有高人可解釋一下呢?
問題1:
var1 = TL_New( Date[1], Time[1], var4, Date, Time, var4 ) ;
既然TL_New 已經定義了趨勢線的起點和終點, 那為什麼還有下面這3個呢 :
TL_SetEnd( var1, Date[1], Time[1], var4 ) ;
TL_SetExtLeft( var1, false ) ;
TL_SetExtRight( var1, true ) ;
問題2: if Time <> var7 then
begin
var8 = var7 ;
var7 = Time ;
end ;
這段看來是要把var7 keep 在"現在"(Time), 但有什麼用呢
問題3:
TL_SetEnd( var3, Date, Time, var6 ) ;
TL_SetBegin( var3, Date[1], var8, var6 ) ;
End 的位置應該是今天吧? 那趨勢線不是會由昨天晝至今天嗎? 但為主又只會見到晝至昨天收市而沒有bug 呢
不好意思有點煩, 但我自己看的懂也不會想煩人了, 請指教
原始碼如下:
====================================================
inputs:
OpenColor( Red ),
HighColor( Yellow ),
LowColor( Cyan ),
DataNum( 1 ) ;
variables:
var0( false ),
var1( 0 ),
var2( 0 ),
var3( 0 ),
var4( 0 ),
var5( 0 ),
var6( 0 ),
intrabarpersist var7( 0 ),
intrabarpersist var8( 0 ) ;
if BarType <= 1 then //confirm intraday bar
begin
condition1 = Date <> Date[1] and BarStatus( DataNum ) = 2 ;
if condition1 then
begin
if var0 then
begin
TL_SetEnd( var1, Date[1], Time[1], var4 ) ; //TL_SetEnd 設置指定趨勢線的終點
TL_SetEnd( var2, Date[1], Time[1], var5 ) ;
TL_SetEnd( var3, Date[1], Time[1], var6 ) ;
TL_SetExtRight( var1, false ) ; //TL_SetExtRight 設置指定趨勢線是否向右延伸
TL_SetExtRight( var2, false ) ;
TL_SetExtRight( var3, false ) ;
end ;
var4 = Open ;
var5 = High ;
var6 = Low ;
var7 = Time ;
var8 = Time[1] ;
var1 = TL_New( Date[1], Time[1], var4, Date, Time, var4 ) ; //TL_New (sDate, sTime, sPriceValue, eDate, eTime, ePriceValue)
var2 = TL_New( Date[1], Time[1], var5, Date, Time, var5 ) ;
var3 = TL_New( Date[1], Time[1], var6, Date, Time, var6 ) ;
TL_SetColor( var1, OpenColor ) ;
TL_SetColor( var2, HighColor ) ;
TL_SetColor( var3, LowColor ) ;
TL_SetExtLeft( var1, false ) ;
TL_SetExtLeft( var2, false ) ;
TL_SetExtLeft( var3,false ) ;
TL_SetExtRight( var1, true ) ;
TL_SetExtRight( var2, true ) ;
TL_SetExtRight( var3, true ) ;
if var0 = false then
var0 = true ;
end
else if var0 = true then
begin
if Time <> var7 then
begin
var8 = var7 ;
var7 = Time ;
end ;
if High > var5 then
begin
var5 = High ;
TL_SetEnd( var2, Date, Time, var5 ) ;
TL_SetBegin( var2, Date[1], var8, var5 ) ;
end ;
if Low < var6 then
begin
var6 = Low ;
TL_SetEnd( var3, Date, Time, var6 ) ;
TL_SetBegin( var3, Date[1], var8, var6 ) ;
end ;
end ;
end
else
RaiseRunTimeError( "Day Open-Hi-Lo Lines requires intraday bars." ) ; |
|