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

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


由 P2372 在 2013-01-04 08:11 發表:

問題 [求救]我看過版主的舉例說明, 有幾個地方不懂,請板主說明下

多進:=A or barpos=0; //Q1為何要BARPOS=0 ?
多出:=X or barpos=0;
空進:=S or barpos=0;
空出:=Z or barpos=0;
強出:=TIME=134000;
//Q2請問是134000的時間點到了, 無條件平倉嗎?//
進出:C*0;
//Q3為何要*C ? 目的是轉換成數組嗎?
CC:=C;
多空:=0; //1.多 -1.空 0.無--> OK
盈虧:c*0 ,linethick;
//Q4為何要*C ? 目的是轉換成數組嗎?//
for i = 1 to datacount do begin
if 多空=0 and 強出[i]=0 then begin
//Q5 強出[i]=0 在這裡的用途?強出不是強制出場的時間嗎? 應該是常量, 如果判斷是0, 那不是永遠不會執行了???//

多空:=多進[i]-空進[i];
//Q6為何多空是"多進[i]-空進[i]"? 我覺得應該是(多進-多出)+(空進-空出)不是嗎?//

進出[i]:=多空;
if 多空<>0 then 進價:=CC[i];
end else if 多空<>0 then begin
盈虧[i]:=(CC[i]-進價)*多空;
if 強出[i] then begin
進出[i]:=多空*4;
多空:=0;
//Q7 為何多空要*4?


end else begin
if 多空=多出[i] or 多空=-空出[i] then begin
進出[i]:=多空*2; 多空:=0;

//Q8 為何多空要*2?

end else if 多空=空進[i] or 多空=-多進[i] then begin
進出[i]:=多空*3; 多空:=-多空;
end;
end;
end;
end;

我看了很多次, 還是不懂, 麻煩板主協助下說明,謝謝

__________________
win365


由 P2372 在 2013-01-04 08:33 發表:

問題 補充說明 : AXSZ這4個英文字是我的公式的運算結果

補充說明:
我的城市原碼:
//BUY
A1:=IF(CROSS(C,P),1,0);DRAWTEXT(A1,H+5,'1');
A:=IF(A1,1,0);DRAWICON(A,L-1,'B0');//在L-1劃出買訊符號
//SALE

S1:=IF(CROSS(P,C),1,0);DRAWTEXT(S1,L-5,'1');
S:=IF(S1,1,0);DRAWICON(S,H+5,'S0');//在H+5劃出賣訊符號
//平多

X1:=IF(多單平倉條件,1,0);DRAWTEXT(X1,L-7,'1');
X:=IF(X1,1,0);DRAWICON(X,H+3,'S1');//在H+3劃出多單平倉的符號

//BS補空
Z1:=IF(空單平倉條件,1,0);DRAWTEXT(Z1,H+5,'1');
Z:=IF(Z1,1,0);DRAWICON(Z,L,'B1');//在L處劃出空單平倉的符號

多進:=A or barpos=0;
//如果買多條件沒有成立, 多進=0, 有買訊時,多進=1//
多出:=X or barpos=0;
空進:=S or barpos=0;
空出:=Z or barpos=0;
強出:=TIME=134000;
進出:C*0; CC:=C;
多空:=0; //1.多 -1.空 0.無
盈虧:c*0 ,linethick;

__________________
win365


由 cgjj 在 2013-01-04 10:10 發表:

回覆: [求救]我看過版主的舉例說明, 有幾個地方不懂,請板主說明下

引用:
最初由 P2372 發表
多進:=A or barpos=0; //Q1為何要BARPOS=0 ?
多出:=X or barpos=0;
空進:=S or barpos=0;
空出:=Z or barpos=0;
強出:=TIME=134000;
//Q2請問是134000的時間點到了, 無條件平倉嗎?//
進出:C*0;
//Q3為何要*C ? 目的是轉換成數組嗎?
CC:=C;
多空:=0; //1.多 -1.空 0.無--> OK
盈虧:c*0 ,linethick;
//Q4為何要*C ? 目的是轉換成數組嗎?//
for i = 1 to datacount do begin
if 多空=0 and 強出[i]=0 then begin
//Q5 強出[i]=0 在這裡的用途?強出不是強制出場的時間嗎? 應該是常量, 如果判斷是0, 那不是永遠不會執行了???//

多空:=多進[i]-空進[i];
//Q6為何多空是"多進[i]-空進[i]"? 我覺得應該是(多進-多出)+(空進-空出)不是嗎?//

進出[i]:=多空;
if 多空<>0 then 進價:=CC[i];
end else if 多空<>0 then begin
盈虧[i]:=(CC[i]-進價)*多空;
if 強出[i] then begin
進出[i]:=多空*4;
多空:=0;
//Q7 為何多空要*4?


end else begin
if 多空=多出[i] or 多空=-空出[i] then begin
進出[i]:=多空*2; 多空:=0;

//Q8 為何多空要*2?

end else if 多空=空進[i] or 多空=-多進[i] then begin
進出[i]:=多空*3; 多空:=-多空;
end;
end;
end;
end;

我看了很多次, 還是不懂, 麻煩板主協助下說明,謝謝



Q1. 為何要BARPOS=0 ?
or BARPOS=0 是一種取巧的寫法, 詳見這邊的解說:
http://www.chiefox.com.tw/bbs/showt...60805#post60805

Q2. 請問是134000的時間點到了, 無條件平倉嗎?
Yes, 但正確一點的說法是 "134000這根K棒" 到達時強制出場(134000是K棒時間,並非當前時間)

Q3.Q4. 為何要*C ? 目的是轉換成數組嗎?
進出:C*0;
C*0 為 Close*0 , 其結果為 "與K棒同範圍的零值數列"
您可把它視為做宣告數列(預設值為零,數列起止範圍等同K棒起止範圍)

Q5.強出[i]=0 在這裡的用途?強出不是強制出場的時間嗎? 應該是常量, 如果判斷是0, 那不是永遠不會執行了???
強出並非是 "強制出場的時間" 唷, 它是存放條件式 "TIME=134000" 的結果
若當前K棒的時間值為 134000, 那麼該根K棒的 "強出" 值為 1 (代表成立), 否則 "強出" 值為 0 (代表不成立)
強出[i]=0 是用來判斷 第 i 根K棒的 "強出" 值是否為零

Q6.為何多空是"多進[i]-空進[i]"? 我覺得應該是(多進-多出)+(空進-空出)不是嗎?//
多空這變數在程式當中是用來代表當前進行方向 多為1 空為-1 無為0
故不會是 (多進-多出)+(空進-空出)

Q7. Q8. 為何多空要*4? 為何多空要*2?
"進出" 這變數是用來記錄當根做了什麼動作, *4 或 *2 是為了產生對應的動作編號

看程式有時要觀前並觀後, 您才會知道它中間為何要如此做?


由 P2372 在 2013-01-05 08:39 發表:

請問,為何這4個說明我沒法直接點選查看?

於 奇狐社區論壇 > 指標公式 > [進階教學] 中的這四項務必看完
01. 條件語句(判斷敘述)
02. 終止公式執行 EXIT
03. 循環語句(迴圈敘述) FOR
04. 數列運算(陣列運算)

__________________
win365


由 P2372 在 2013-01-05 13:49 發表:

請問: 有沒有加OR BARPOR=0 沒有發現異狀或是不同點?

M10:EMA(C,10);
M5:EMA(C,5);
BB:=CROSS(M5,M10);
DRAWICON(BB,L-5,'B0');
BS:BARPOS;

請問, 有沒有加OR BARPOS=0會有什麼不同?

M10:EMA(C,10);
M5:EMA(C,5);
BB:=CROSS(M5,M10) OR BARPOS=0;
DRAWICON(BB,L-5,'B0');
BS:BARPOS;

我回到BARPOS=1的點去看了, 沒有看到不同點, 請版主指點下...不好意思哈!

__________________
win365


由 cgjj 在 2013-01-06 19:00 發表:

回覆: 請問: 有沒有加OR BARPOR=0 沒有發現異狀或是不同點?

引用:
最初由 P2372 發表
M10:EMA(C,10);
M5:EMA(C,5);
BB:=CROSS(M5,M10);
DRAWICON(BB,L-5,'B0');
BS:BARPOS;

請問, 有沒有加OR BARPOS=0會有什麼不同?

M10:EMA(C,10);
M5:EMA(C,5);
BB:=CROSS(M5,M10) OR BARPOS=0;
DRAWICON(BB,L-5,'B0');
BS:BARPOS;

我回到BARPOS=1的點去看了, 沒有看到不同點, 請版主指點下...不好意思哈!



您把 EMA 換為 MA, 並輸出 BB 值
去猜觀察頭幾根對 BB 造成的變化, 就可了解了


由 P2372 在 2013-01-06 23:18 發表:

了解了, 原來BB值得起效點不同

感謝版主指點, 附上我的求證圖

__________________
win365


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


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

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