![]() |
在這個頁面顯示本主題全部的 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)
[問題]在指標運算中,引用指標自己的值
請教我要計算指標時,要引用前一週期來計算這一週期的指標的方式
例如我的指標為 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 的值和前一週期結果有關
回覆: [問題]在指標運算中,引用指標自己的值
引用:
最初由 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 的值和前一週期結果有關
回覆: 回覆: [問題]在指標運算中,引用指標自己的值
引用:
最初由 cgjj 發表
先看一下這例子, 有相關的處理方式
http://www.chiefox.com.tw/bbs/showt...=&threadid=9836
試試吧![]()
回覆: 回覆: 回覆: [問題]在指標運算中,引用指標自己的值
引用:
最初由 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;
但還是編繹不過
我的想法是,我要找出股票的轉折點,但是,又不用每一支K線都去計算,
所以,先訂在上升趨勢,只檢查向下反轉,
下降趨勢,只檢查向上反轉,
我的 updonw 指標,就是上升下降的指標,
中間的條件,就是其中一個上升下降的反轉的基本條件,當然如果程式可以正常時,我會再增加其他的反轉條件進去,讓它更趨進我的需求
程式可以改寫成這樣子,就比較容易看懂了
// 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;;
// 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;
yest = -1 ;
和
yest = 1 ;
改為
yest:= -1 ;
和
yest:= 1 ;
謝謝問題已解決了,
| 全部時間均為台灣時間, 現在時間為14:56 | 在這個頁面顯示本主題全部的 9 個文章 |
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved.