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

奇狐社區論壇 (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=14895)


由 kuolung 在 2010-12-29 13:26 發表:

[問題]在指標運算中,引用指標自己的值

請教我要計算指標時,要引用前一週期來計算這一週期的指標的方式

例如我的指標為 updwon

hight:=ref(high,1);
lowt:=ref(low,1);
for i = 2 to (datacount-3) do begin
if updown[i-1]>0 then begin
if hight[i] < hight[1+1] then begin
if hight[i+1] > hight[i+2] then begin
if lowt[i] < lowt[i+1] then begin
if lowt[i+1] > lowt[i+2] then begin
yest= -1;
end;
end;
end;
end;
end else begin
if hight[i] > hight[1+1] then begin
if hight[i+1] < hight[i+2] then begin
if lowt[i] > lowt[i+1] then begin
if lowt[i+1] < lowt[i+2] then begin
yest= 1;
end;
end;
end;
end;
end;
updwon[i]:=yest;
end;

這樣編譯不過

但我的問題不能用 ref( updown , 1 ) 來取得前一週期的結果,因為
updown 的值和前一週期結果有關


由 cgjj 在 2010-12-29 13:37 發表:

回覆: [問題]在指標運算中,引用指標自己的值

引用:
最初由 kuolung 發表
請教我要計算指標時,要引用前一週期來計算這一週期的指標的方式

例如我的指標為 updwon

hight:=ref(high,1);
lowt:=ref(low,1);
for i = 2 to (datacount-3) do begin
if updown[i-1]>0 then begin
if hight[i] < hight[1+1] then begin
if hight[i+1] > hight[i+2] then begin
if lowt[i] < lowt[i+1] then begin
if lowt[i+1] > lowt[i+2] then begin
yest= -1;
end;
end;
end;
end;
end else begin
if hight[i] > hight[1+1] then begin
if hight[i+1] < hight[i+2] then begin
if lowt[i] > lowt[i+1] then begin
if lowt[i+1] < lowt[i+2] then begin
yest= 1;
end;
end;
end;
end;
end;
updwon[i]:=yest;
end;

這樣編譯不過

但我的問題不能用 ref( updown , 1 ) 來取得前一週期的結果,因為
updown 的值和前一週期結果有關



先看一下這例子, 有相關的處理方式
http://www.chiefox.com.tw/bbs/showt...=&threadid=9836

試試吧


由 kuolung 在 2010-12-29 14:12 發表:

回覆: 回覆: [問題]在指標運算中,引用指標自己的值

引用:
最初由 cgjj 發表
先看一下這例子, 有相關的處理方式
http://www.chiefox.com.tw/bbs/showt...=&threadid=9836

試試吧



謝謝您,根據您提供的說明,我想改為以下方式,但還有一點不明白

updown -> 這個我自訂的指標,不知如何引用

XX:=updown;
StNo=lbound(XX);
hight:=ref(high,1);
lowt:=ref(low,1);
for i = Stno+1 to (datacount-3) do begin
if updown[i-1]>0 then begin
if hight[i] < hight[1+1] then begin
if hight[i+1] > hight[i+2] then begin
if lowt[i] < lowt[i+1] then begin
if lowt[i+1] > lowt[i+2] then begin
yest = -1 ;
end;
end;
end;
end;
end else begin
if hight[i] > hight[1+1] then begin
if hight[i+1] < hight[i+2] then begin
if lowt[i] > lowt[i+1] then begin
if lowt[i+1] < lowt[i+2] then begin
yest= 1;
end;
end;
end;
end;
end;
updwon[i]:=yest;
end;

但還是編繹不過


由 cgjj 在 2010-12-29 16:08 發表:

回覆: 回覆: 回覆: [問題]在指標運算中,引用指標自己的值

引用:
最初由 kuolung 發表
謝謝您,根據您提供的說明,我想改為以下方式,但還有一點不明白

updown -> 這個我自訂的指標,不知如何引用

XX:=updown;
StNo=lbound(XX);
hight:=ref(high,1);
lowt:=ref(low,1);
for i = Stno+1 to (datacount-3) do begin
if updown[i-1]>0 then begin
if hight[i] < hight[1+1] then begin
if hight[i+1] > hight[i+2] then begin
if lowt[i] < lowt[i+1] then begin
if lowt[i+1] > lowt[i+2] then begin
yest = -1 ;
end;
end;
end;
end;
end else begin
if hight[i] > hight[1+1] then begin
if hight[i+1] < hight[i+2] then begin
if lowt[i] > lowt[i+1] then begin
if lowt[i+1] < lowt[i+2] then begin
yest= 1;
end;
end;
end;
end;
end;
updwon[i]:=yest;
end;

但還是編繹不過



請描述一下您想算什麼, 這樣比較好協助您
程式不易看出您想算的最終結果


由 kuolung 在 2010-12-31 12:12 發表:

我的想法是,我要找出股票的轉折點,但是,又不用每一支K線都去計算,
所以,先訂在上升趨勢,只檢查向下反轉,
下降趨勢,只檢查向上反轉,
我的 updonw 指標,就是上升下降的指標,
中間的條件,就是其中一個上升下降的反轉的基本條件,當然如果程式可以正常時,我會再增加其他的反轉條件進去,讓它更趨進我的需求


由 kuolung 在 2010-12-31 12:20 發表:

程式可以改寫成這樣子,就比較容易看懂了

// updown = 1 為上升趨勢
// updown = -1 為下降趨勢

XX:=updown;
StNo=lbound(XX);
hight:=ref(high,1);
lowt:=ref(low,1);
for i = Stno+1 to (datacount-3) do begin
if (( updown[i-1] > 0 ) then begin
if (( hight[i] < hight[1+1] ) && ( hight[i+1] > hight[i+2] ) && ( lowt[i] < lowt[i+1] ) && ( lowt[i+1] > lowt[i+2] )) then begin
// 這是第一個簡易的反轉向下的條件
yest = -1 ;
end;
end else begin
if (( hight[i] > hight[1+1] ) && ( hight[i+1] < hight[i+2] ) && ( lowt[i] > lowt[i+1] ) && ( lowt[i+1] < lowt[i+2] )) then begin
// 這是第一個簡易的反轉向上的條件
yest= 1;
end;
end;
updwon[i]:=yest;
end;;


由 kuolung 在 2010-12-31 14:17 發表:

// updown = 1 為上升趨勢
// updown = -1 為下降趨勢

VARIABLE: i = 0 , yest = 0 ;

XX:=C;
YY:XX*0;
StNo:=lbound(XX);
hight:=ref(high,1);
lowt:=ref(low,1);
for i = StNo+5 to datacount do begin
if ( YY[i-1] > 0 ) then begin
// if (( hight[i] < hight[i-1] ) && ( hight[i-1] > hight[i-2] ) && ( lowt[i] < lowt[i-1] ) && ( lowt[i-1] > lowt[i-2] )) then begin
// 這是第一個簡易的反轉向下的條件
yest = -1 ;
// end else if (( hight[i] < hight[i-1] ) && ( hight[i-1] == hight[i-2] ) && ( hight[i-2] > hight[i-3] ) && ) then begin
// yest = -1 ;
// end else if ( ) then begin
// end else begin
// yest = 1 ;
// end;
end else begin
// if (( hight[i] > hight[i-1] ) && ( hight[i-1] < hight[i-2] ) && ( lowt[i] > lowt[i-1] ) && ( lowt[i-1] < lowt[i-2] )) then begin
// 這是第一個簡易的反轉向上的條件
// yest = i * -1 ;
// end else begin
// yest = -1 ;
// end;
yest = 1 ;
end;
YY[i]:=yest;
end;

updown:YY;


由 cgjj 在 2010-12-31 14:24 發表:

yest = -1 ;

yest = 1 ;


改為
yest:= -1 ;

yest:= 1 ;


由 kuolung 在 2011-01-01 21:45 發表:

謝謝問題已解決了,


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


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

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