hermesh99 發表於 11-10-18 13:52

請教: day open-hi-lo lines指標

這個指標是mc 自帶的, 會把當天的open, high, low 晝一條水平線出來, 看coding 時有些看不太懂, 有沒有高人可解釋一下呢?

問題1:
var1 = TL_New( Date, Time, var4, Date, Time, var4 ) ;
既然TL_New 已經定義了趨勢線的起點和終點, 那為什麼還有下面這3個呢{:4_144:} :
TL_SetEnd( var1, Date, Time, var4 ) ;
TL_SetExtLeft( var1, false ) ;
TL_SetExtRight( var1, true ) ;

問題2:if Time <> var7 then
   begin
   var8 = var7 ;
   var7 = Time ;
   end ;
這段看來是要把var7 keep 在"現在"(Time), 但有什麼用呢{:4_144:}

問題3:
   TL_SetEnd( var3, Date, Time, var6 ) ;
   TL_SetBegin( var3, Date, var8, var6 ) ;
End 的位置應該是今天吧? 那趨勢線不是會由昨天晝至今天嗎? 但為主又只會見到晝至昨天收市而沒有bug 呢{:4_144:}

不好意思有點煩, 但我自己看的懂也不會想煩人了, 請指教{:4_160:}
原始碼如下:
====================================================
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 and BarStatus( DataNum ) = 2 ;
if condition1 then                  
begin
                                             
if var0 then
   begin
   TL_SetEnd( var1, Date, Time, var4 ) ;//TL_SetEnd 設置指定趨勢線的終點
   TL_SetEnd( var2, Date, Time, var5 ) ;
   TL_SetEnd( var3, Date, Time, 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 ;
                                                            
var1 = TL_New( Date, Time, var4, Date, Time, var4 ) ;//TL_New (sDate, sTime, sPriceValue, eDate, eTime, ePriceValue)
var2 = TL_New( Date, Time, var5, Date, Time, var5 ) ;
var3 = TL_New( Date, Time, 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, var8, var5 ) ;
   end ;
if Low < var6 then
   begin
   var6 = Low ;
                                                                     
            
   TL_SetEnd( var3, Date, Time, var6 ) ;
   TL_SetBegin( var3, Date, var8, var6 ) ;
   end ;
end ;
end
else
RaiseRunTimeError( "Day Open-Hi-Lo Lines requires intraday bars." ) ;

stuart 發表於 11-10-18 15:14

問題1:
var1 = TL_New( Date, Time, var4, Date, Time, var4 ) ;
既然TL_New 已經定義了趨勢線的起點和終點, 那為什麼還有下面這3個呢 :
TL_SetEnd( var1, Date, Time, var4 ) ;
TL_SetExtLeft( var1, false ) ;
TL_SetExtRight( var1, true ) ;
<==簡單說,TL已經new了,但後面若要更改它的結束位置就是用TL_SetEnd;而TL_SetExtLeft及TL_SetExtRight就是設定
趨勢線是否向左右延伸出去..

問題2:if Time <> var7 then
   begin
   var8 = var7 ;
   var7 = Time ;
   end ;

<==這段看來是要把var7 keep 在"現在"(Time), 但有什麼用呢
用在後面有一段if Time <> var7 then是在比較現在時間是否不等於現在時間時,把現在時間給var7把前一個符合條件的時間給var8

問題3:
   TL_SetEnd( var3, Date, Time, var6 ) ;
   TL_SetBegin( var3, Date, var8, var6 ) ;
End 的位置應該是今天吧? 那趨勢線不是會由昨天晝至今天嗎? 但為主又只會見到晝至昨天收市而沒有bug 呢
<==在前面condition1 = Date <> Date這段裡就有重設相關變數的數值!
所以不會劃到昨天去喔...XD

hermesh99 發表於 11-10-18 15:28

{:4_93:} 大大, 謝謝你, 你太強了{:4_160:}
那如果不想改變tl_new, 就不用後面那些TL_SetEnd,TL_SetExtLeft,TL_SetExtRight 了?

唉, 看的懂也這麼困難, 何時才懂修改和寫指標呀{:4_155:}
頁: [1]
查看完整版本: 請教: day open-hi-lo lines指標