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

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- 條件成立則執行A,否則執行B (http://www.chiefox.com.tw/bbs/showthread.php?threadid=17267)


由 Markchu7 在 2012-11-16 15:12 發表:

條件成立則執行A,否則執行B

A:
XC:=(O+H+L+C*3)/6,LINETHICK;
XO:=O,LINETHICK;
CC:=C;
for i=2 to datacount do begin
XO[i]:=(XO[i-1]+CC[i-1])/2;
end;

B:
CK:=DATE<>REF(DATE,1);
XC:=(O+H+L+C*3)/6,LINETHICK;
XO:=O,LINETHICK;
CC:=C;
for i=2 to datacount do begin
if CK[i]=0 then XO[i]:=(XO[i-1]+CC[i-1])/2;
end;

以上A,B為指標中之一部份.
請問總版主:
如果條件成立則執行A,否則執行B要如何處理?感恩!


由 cgjj 在 2012-11-16 18:10 發表:

回覆: 條件成立則執行A,否則執行B

引用:
最初由 Markchu7 發表
A:
XC:=(O+H+L+C*3)/6,LINETHICK;
XO:=O,LINETHICK;
CC:=C;
for i=2 to datacount do begin
XO[i]:=(XO[i-1]+CC[i-1])/2;
end;

B:
CK:=DATE<>REF(DATE,1);
XC:=(O+H+L+C*3)/6,LINETHICK;
XO:=O,LINETHICK;
CC:=C;
for i=2 to datacount do begin
if CK[i]=0 then XO[i]:=(XO[i-1]+CC[i-1])/2;
end;

以上A,B為指標中之一部份.
請問總版主:
如果條件成立則執行A,否則執行B要如何處理?感恩!



您的條件是否會隨K棒而改變成立狀態
還是, 自K棒頭到尾都是一個狀態呢?


由 Markchu7 在 2012-11-16 18:16 發表:

不會!條件很簡單,今天開盤與昨天收盤出現跳空50點(台當月)以上的差距就採用當日開盤起算的方法否則就採用連續日的算法!
請指導!感恩!


由 cgjj 在 2012-11-16 18:38 發表:

引用:
最初由 Markchu7 發表
不會!條件很簡單,今天開盤與昨天收盤出現跳空50點(台當月)以上的差距就採用當日開盤起算的方法否則就採用連續日的算法!
請指導!感恩!



如此會隨K棒變
且 A 的算法有跨日取 XO

故兩者都要算, 再依據條件取用誰的結果

例如:
SS:if(條件,A的結果,B的結果);


由 Markchu7 在 2012-11-16 22:45 發表:

經整合如下,請指導是否正確?
CK:=DATE<>REF(DATE,1);
跳空條件:=REF(ABS(C-O)>50,BARSLAST(CK));
XC:=(O+H+L+C*3)/6,LINETHICK;
CC:=C;

AXO:=O,LINETHICK;
for i=2 to datacount do begin
AXO[i]:=A(XO[i-1]+CC[i-1])/2;
end;

BXO:=O,LINETHICK;
for i=2 to datacount do begin
if CK[i]=0 then BXO[i]:=B(XO[i-1]+CC[i-1])/2;
end;
XO:=IF(跳空條件,BXO,AXO);


由 cgjj 在 2012-11-19 12:08 發表:

引用:
最初由 Markchu7 發表
經整合如下,請指導是否正確?
CK:=DATE<>REF(DATE,1);
跳空條件:=REF(ABS(C-O)>50,BARSLAST(CK));
XC:=(O+H+L+C*3)/6,LINETHICK;
CC:=C;

AXO:=O,LINETHICK;
for i=2 to datacount do begin
AXO[i]:=A(XO[i-1]+CC[i-1])/2;
end;

BXO:=O,LINETHICK;
for i=2 to datacount do begin
if CK[i]=0 then BXO[i]:=B(XO[i-1]+CC[i-1])/2;
end;
XO:=IF(跳空條件,BXO,AXO);



簡化如下:
原碼:

跳空CK
:=DATE<>REF(DATE,1) and ABS(C-O)>50;
XC:=(O+H+L+C*3)/6,LINETHICK;
CC:=C;
XO:O
for 
i=2 to datacount do begin
  
if 跳空CK[i]=0 then begin
    XO
[i]:=(XO[i-1]+CC[i-1])/2;
  
end;
end;

注意:
XC:=(O+H+L+C*3)/6,LINETHICK;
這行是多餘的, 看您之後算的東西並未將其帶入
是否留存您自己決定


由 Markchu7 在 2012-11-19 13:10 發表:

感謝總版主指導!XC是後面公式要用到的,感謝提醒!謝謝!


由 Markchu7 在 2013-03-14 16:04 發表:

跳空CK:=DATE<>REF(DATE,1) and ABS(C-O)>50;
XC:=(O+H+L+C*3)/6,LINETHICK;
CC:=C;
XO:O;
for i=2 to datacount do begin
if 跳空CK[i]=0 then begin
XO[i]:=(XO[i-1]+CC[i-1])/2;
end;
end;
將條件更改為以下會有錯誤訊息!
跳空CK:=DATATYPE>5;
請總版主指導解惑!感謝!


由 cgjj 在 2013-03-15 17:35 發表:

引用:
最初由 Markchu7 發表
跳空CK:=DATE<>REF(DATE,1) and ABS(C-O)>50;
XC:=(O+H+L+C*3)/6,LINETHICK;
CC:=C;
XO:O;
for i=2 to datacount do begin
if 跳空CK[i]=0 then begin
XO[i]:=(XO[i-1]+CC[i-1])/2;
end;
end;
將條件更改為以下會有錯誤訊息!
跳空CK:=DATATYPE>5;
請總版主指導解惑!感謝!



跳空CK:=DATATYPE>5;

這行的結果不是數列, 故無法用 [i] 的方式存取


由 Markchu7 在 2013-03-15 20:19 發表:

了解!以此條件而言,如何寫成數列?有勞再次指導!
每次拜讀總版主的大作,總是會創造一個C*0的數列(是數列沒錯吧?真的是沒有這方面的概念!),此例也可以如此處理嗎?以及放的位置在哪裡?
感恩!


由 cgjj 在 2013-03-18 12:33 發表:

引用:
最初由 Markchu7 發表
了解!以此條件而言,如何寫成數列?有勞再次指導!
每次拜讀總版主的大作,總是會創造一個C*0的數列(是數列沒錯吧?真的是沒有這方面的概念!),此例也可以如此處理嗎?以及放的位置在哪裡?
感恩!



DATATYPE>5
這式子變成數列沒什麼意義
成立時它自頭到尾永遠都成立
不成立時它自頭到尾永遠都不成立

Datatype 是取得目前在那一種數據週期
跳空CK:=DATATYPE>5; // <=== 正常來說, 跳空CK條件不可能僅給如此

故問題在於條件本質就有問題


由 Markchu7 在 2013-03-18 12:47 發表:

了解!
只是想在日線以下周期,採用當日起算的XO而已!變數名叫跳空是因為偷懶不想再去改而已!
我就用IF來達到效果亦可!感謝協助!


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


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

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