VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

請問各位 先進 ∼ 如何 抓 上 下 點,並存檔∼詳如 說明

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
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 樓

發表發表於: 星期二 八月 19, 2014 7:27 am    文章主題: 引言回覆

謝謝 大大 回應,不過我是想 達到這樣 的結果
(目前好像有找出答案 了∼

http://blog.yam.com/wj2008/article/65757964
回頂端
檢視會員個人資料 發送私人訊息
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
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作