奇狐社區論壇
在這個頁面顯示本主題全部的 10 個文章

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- 循環的問題 (http://www.chiefox.com.tw/bbs/showthread.php?threadid=6256)


由 shuenyi 在 2006-10-17 06:57 發表:

循環的問題

請問在下列的公式,為什麼定位循環在位置之外(前後)還會有數據?這些位置外的數據是什麼? (即使最後停止位置是對的,其後仍有數據出來?)
如何把這個區間外的數據都消失成null呢?知道前面的可以用setlbound來控制,後面的有什麼辦法麼?

fc:=C;
m5:=C;
for i=1995 to 2045 do m5[i]:(fc[i-4]+fc[i-3]+fc[i-2]+fc[i-1]+fc[i])/5;
vertline(barpos=1995);
vertline(barpos=2045);
II:i,linethick0;


由 cgjj 在 2006-10-17 08:37 發表:

回覆: 循環的問題

[QUOTE]最初由 shuenyi 發表
[B]請問在下列的公式,為什麼定位循環在位置之外(前後)還會有數據?這些位置外的數據是什麼? (即使最後停止位置是對的,其後仍有數據出來?)
如何把這個區間外的數據都消失成null呢?知道前面的可以用setlbound來控制,後面的有什麼辦法麼?
QUOTE]

後面的的數據不可變為 null
但您可讓後面的不要顯示(可應用 PARTLINE 或其他類似函數來繪製)


由 shuenyi 在 2006-10-17 09:13 發表:

回覆: 回覆: 循環的問題

後面的的數據不可變為 null
但您可讓後面的不要顯示(可應用 PARTLINE 或其他類似函數來繪製) [/B][/QUOTE]

謝謝迅速回應,所以後面最多只能做到為"0",對嗎?
還有一個問題請總版主再教導一下,既然範圍限定由1995到2045,那麼在1995以前和2045以後出現的數據為什麼會變成收盤價,而不是到2045就終止?
用 aa:=setlbound(m5,1995);m5; 限制了下限,如果不用partline有辦法限制m5的圖形上限嗎?


由 cgjj 在 2006-10-17 09:21 發表:

回覆: 回覆: 回覆: 循環的問題

引用:
最初由 shuenyi 發表
謝謝迅速回應,所以後面最多只能做到為"0",對嗎?
還有一個問題請總版主再教導一下,既然範圍限定由1995到2045,那麼在1995以前和2045以後出現的數據是什麼?(顯然不是均線值)
用 aa:=setlbound(m5,1995);m5; 限制了下限,如果不用partline有辦法限制m5的圖形上限嗎?


1995以前和2045以後出現的數據是什麼?
結果是您自己決定的喔, 以下兩行
m5:=C;
for i=1995 to 2045 do m5[i]:(fc[i-4]+fc[i-3]+fc[i-2]+fc[i-1]+fc[i])/5;
您把 m5 初始值定義為收盤價
再將 m5 的第 1995 到 2045 根K棒數值定義為 (fc[i-4]+fc[i-3]+fc[i-2]+fc[i-1]+fc[i])/5
如此一來1995以前和2045以後均未被重新定義
當然就是原來您初始定義的收盤價呀

如果不用partline有辦法限制m5的圖形上限嗎?
請參考繪圖函數中的說明(找具有條件成立才畫線的函數)


由 shuenyi 在 2006-10-17 10:01 發表:

原來如此,沒人指點還真難懂,現在知道如果把m5的初始值定為
m5:=ma(c,0); 程式即可自行pick up i 的起始值 1995, 但是仍然不會在2045停止,線段會一直延伸到datacount,只是2045以後的數據變成了正常的m5值了
要怎樣設這個m5的初始值或重定義2045以後的m5初始值,才能使程式的線條終止於2045,而不要延伸到datacount去呢? (不考慮用條件劃線的方式,就用循環可以嗎?)


由 cgjj 在 2006-10-17 11:52 發表:

用循環是不行的
循環只處理計算不對繪製圖形有影響
您可用條件來篩選
條件成立才帶入計算或繪製線


由 shuenyi 在 2006-10-17 14:36 發表:

謝謝總版主不厭其煩的的指導!!
雖然仍然不能弄清楚為何循環的末端跑到2046就終止了,但是數據還是一直跑到end,不過想來也許這就是循環高深的地方,其可議處乃在於如果把m5初值定義為數值,是可以在xxx to yyy 的 yyy處終止,若定義為數列則不行,可是其開始值 xxx 又可以正確執行
我還是疑問仍在!! 真是學問雖淺,對無知者仍然深不知底


由 cgjj 在 2006-10-17 16:37 發表:

首先您要先了解
m5:=C;
是將收盤價導入給 m5 這個變數
其結果為收盤價之數列
假設該商品有3500根K棒
則 m5 這個數列中會有 3500 個收盤價

您的迴圈是改變其中第1995∼2045 根K棒 m5 的數值
其他未改變的均是原來設的收盤價的值

觀念要先弄清楚, 再寫程序會比較好
看看下列結果您應會比較有概念

fc:=C;
m5:=C*0;
for i=1995 to 2045 do m5[i]:(fc[i-4]+fc[i-3]+fc[i-2]+fc[i-1]+fc[i])/5;
vertline(barpos=1995);
vertline(barpos=2045);
II:i,linethick0;


由 cgjj 在 2006-10-17 16:37 發表:

再看看下列結果:(只繪製1995∼2045間的線)
fc:=C;
m5:C*0 LINETHICK0;
for i=1995 to 2045 do m5[i]:=(fc[i-4]+fc[i-3]+fc[i-2]+fc[i-1]+fc[i])/5;
vertline(barpos=1995);
vertline(barpos=2045);
II:i,linethick0;
PARTLINE(m5>0,m5);


由 shuenyi 在 2006-10-17 17:04 發表:

衷心感謝!!


全部時間均為台灣時間, 現在時間為17:51
在這個頁面顯示本主題全部的 10 個文章


Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.