|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
amd
註冊時間: 2003-07-20 文章: 54
第 1 樓
|
發表於: 星期六 八月 16, 2014 11:19 pm 文章主題: 請問各位 先進 ∼ 如何 抓 上 下 點,並存檔∼詳如 說明 |
|
|
例:
60 , 66 , 120 , 240 , 200 , 180 , 190 , 210 , 170 , 150 ....
要有轉變趨勢才再記錄
例
第一筆 記錄 是 60 (決定它上的是 66 ),記在 "下" 的欄位
接下來一直到 240 才要再記錄(決定它下的是 200),記在 "上" 的欄位
接下來一直到 190 才要再記錄(決定它上的是 210),記在 "下" 的欄位
接下來一直到 210 才要再記錄(決定它下的是 170),記在 "上" 的欄位
每筆 中間 不一定是上一筆、下一筆,有可能是經過好多數字之後∼
大概如下示意圖
240
200 200 210
180 190
120 180 170
66 170
60 160 150
我是設 下、 上、 變化 3欄位
60 66
240 200
.
如果用 上 下 來決定要不要記錄,這樣會 把中間不要記的也記下來,會造成錯誤數據
.
但條件設完之後總有卡住,所以 請問各位先進 大大 要如何 才能達到我要的結果∼謝謝! |
|
回頂端 |
|
|
asd89839032
註冊時間: 2012-10-15 文章: 49
第 2 樓
|
發表於: 星期一 八月 18, 2014 9:44 am 文章主題: |
|
|
問:
1.要記錄的是否為 240 , 180 , 210 三筆? (240上,180下,210上)
2.開頭與結尾值應該要怎麼判斷才是你要的?還是無條件成立?
3.條件的話應該是..... 1 2 3 4 5 , 1 > 2 and 3 > 2 , 2 填入上;1<2 and 3 < 2 ,2 填入下 _________________ 菜鳥路過... |
|
回頂端 |
|
|
perry
註冊時間: 2014-07-20 文章: 203
第 3 樓
|
發表於: 星期一 八月 18, 2014 12:10 pm 文章主題: |
|
|
crea dbf table1 (f_1 n(5),f_2 n(5),f_k c(2))
每次讀2筆資料
a1,a2,mk
====
*test1.mount -> 60,66,120,240...
60,66 ( 60<66 )產生下的記號並新增一筆 60,66,mk='下'
66,120 ( 66<120 )也是下不記錄
120,240 ( 120<240 )也是下不記錄
240,200 ( 240>200 )產生上的記號新增一筆 240,200,'上'
下一次要新增記錄的 a1<a2 的資料即 '下'
代碼: |
sele 0
use table1
sele 0
use test1 alia aa agai
sele 0
use test1 alia bb agai
go top
sum 1 to j
i=1
do whil i<j
go i
a1=mount
sele aa
go (i+1)
a2=mount
if i=1
mk=iif(a1>a2,'上',iif(a1<a2,'下','無'))
if a1#a2
inse into table1 valu (a1,a2,mk)
endi
else
if (a1#a2 and mk='無') or (a1>a2 and mk='下') or (a1<a2 and mk='上')
mk=iif(a1>a2,'上','下')
inse into table1 valu (a1,a2,mk)
endi
endi
sele bb
i=i+1
enddo
|
若樓主是這個意思,用 sql 語法應能做到 = =''' |
|
回頂端 |
|
|
amd
註冊時間: 2003-07-20 文章: 54
第 4 樓
|
|
回頂端 |
|
|
perry
註冊時間: 2014-07-20 文章: 203
第 5 樓
|
發表於: 星期二 八月 19, 2014 10:04 am 文章主題: |
|
|
代碼: |
sele 0
crea dbf table1 (f_1 n(5),f_2 n(5),f_k c(2))
sele 0
use test1 alia aa agai
go top
i=0
a3=6 && Range
scan
i=i+1
a1=mount
if i=1
sele table1
appe blank
repl f_1 with a1
else
sele table1
if empt(table1.f_k)
do case
case a1-table1.f_1>a3 &&上漲超過 Range
*f_1 為下檔價位,f_2 為下次判斷上檔價位用
repl f_2 with a1,f_k with '下'
case table1.f_1-a1>a3 &&下跌超過 Range
*f_1 為上檔價位,f_2 為下次判斷下檔價位用
repl f_2 with a1,f_k with '上'
endc
else
do case
case table1.f_k='上' and a1-table1.f_2>a3 &&上漲超過 Range
a0=table1.f_2
appe blank
repl f_1 with a0,f_2 with a1,f_k with '下'
case table1.f_k='下' and table1.f_2-a1>a3 &&下跌超過 Range
a0=table1.f_2
appe blank
repl f_1 with a0,f_2 with a1,f_k with '上'
endc
endi
endi
sele aa
ends
|
|
|
回頂端 |
|
|
amd
註冊時間: 2003-07-20 文章: 54
第 6 樓
|
發表於: 星期二 八月 19, 2014 7:04 pm 文章主題: |
|
|
謝謝上面大大的回應∼
以下僅以一種 來表示小弟的寫法:
Do case
Case 漲跌幅 < 0 and 最低價 > 100 and 最低價 <= ( 昨成交高 -6 ) and 高 = 0
Replace 高 With 昨成交高
Case 漲跌幅 < 0 and 最低價 > 100 and 最低價 <= ( 昨成交高-6 ) and ( 昨成交高 < 高 * 1.03 ) and 高 > 0
Replace 高 With 昨成交高
Endcase |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|