init()完成設定後, 如何畫指標就靠 start()來完成.
在start 初段會見到一個Bars的"變數" , 但細心的讀者會發現這個"變數"並沒有設定過, 其實這個變數是由MT4自動設定的, 數值就是這個圖上的Bar數,
if(Bars<=Tenkan || Bars<=Kijun || Bars<=Senkou) return(0);
如果Bar數少於這些參數值, 當然也就沒東西可畫了
int counted_bars=IndicatorCounted();
這個差不多是固定的起手式, counted_bars 被賦予上次計算後指標值不變的Bar數 , 這減少需重新計算的數目
for(i=1;i<=Tenkan;i++) Tenkan_Buffer[Bars-i]=0;
剛載入時, 初始短觀線的陣列的值. 注意最左方的index為Bars - 1
i=Bars-Tenkan;
針對短觀線而言, 設定 i 為要計算的Bars 數, 此為最壞情況
但若指標不變數比短觀周期長, 就只需從上一次計算完的部分開始
if(counted_bars>Tenkan) i=Bars-counted_bars-1;
while(i>=0)
{
high=High[i]; low=Low[i]; k=i-1+Tenkan;
while(k>=i)
{
price=High[k];
if(high<price) high=price;
price=Low[k];
if(low>price) low=price;
k--;
}
Tenkan_Buffer[i]=(high+low)/2;
i--;
}
從 最新Bar (i=0) 至上次算完的部分, k則是要計算值的Bar當日短觀日數前的index. 整個計算過程就有如滾動視窗.
沒有留言:
張貼留言