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

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


由 Markchu7 在 2023-01-20 10:36 發表:

[問題]出現指標數組下標越界...的警語!

分鐘首K:=ISREGULARFBAR;
換日首K:=TRADEDATE<>REF(TRADEDATE,1);
歷史首K:=BARPOS=1;
當沖週期:=DATATYPE=11 OR DATATYPE=1 OR DATATYPE=2;
DBCK:=IF(當沖週期,分鐘首K OR 換日首K,歷史首K),LINETHICK;
CKSP:=BARSLAST(DBCK)+1,LINETHICK;
CKMM8:=IF(DATATYPE=12 OR DATATYPE=11 OR DATATYPE=1 OR DATATYPE=2,IF(CKSP<=8,CKSP,8),8),LINETHICK;
CKMM13:=IF(DATATYPE=12 OR DATATYPE=11 OR DATATYPE=1 OR DATATYPE=2,IF(CKSP<=13,CKSP,13),13),LINETHICK;
CKMM25:=IF(DATATYPE=12 OR DATATYPE=11 OR DATATYPE=1 OR DATATYPE=2,IF(CKSP<=25,CKSP,25),25),LINETHICK;
RG:=HHV(H,CKSP)-LLV(L,CKSP);
CKMM13RG:=MA(H-L,CKMM13),LINETHICK;
////////////////////////////////////////////////////
U0HH:=STKINDI('','X引用每日起算HEMA.YY(5)',0,-1);
U0LL:=STKINDI('','X引用每日起算LEMA.YY(5)',0,-1);
U0AH:=HHV(U0HH,CKMM25);
U0AL:=LLV(U0LL,CKMM25);
ARG:U0AH-U0AL,LINETHICK,NOAXIS;
U0小壓S:=STKINDI('','X引用每日起算HEMA.YY(13)',0,-1),COLORBLUE,LINETHICK1;
U0天:HHV(U0小壓S,CKMM13),COLORBLUE,LINETHICK;
U0上:U0小壓S,COLORBLUE,LINETHICK;
U0下:STKINDI('','X引用每日起算LEMA.YY(13)',0,-1),COLORRED,LINETHICK;
U0地:LLV(U0下,CKMM13),COLORRED,LINETHICK;

多進:=NOT(DBCK) AND RG>=30 AND REF(U0天>REF(U0天,1),1)=0 AND U0天>REF(U0天,1);
空進:=NOT(DBCK) AND RG>=30 AND REF(U0地<REF(U0地,1),1)=0 AND U0地<REF(U0地,1);
多出:=CROSS(U0地,C);
空出:=CROSS(C,U0天);
////////////////////////////////////////////////////
強出:=TIME=134000;
進出:C*0; CC:=C;
多空:=0; //1.多 -1.空 0.無
盈虧:c*0 linethick;
for i = 1 to datacount do begin
if 多空=0 and 強出[i]=0 then begin
多空:=多進[i]-空進[i]; 進出[i]:=多空;
if 多空<>0 then 進價:=CC[i];
end else if 多空<>0 then begin
盈虧[i]:=(CC[i]-進價)*多空;
if 強出[i] then begin
進出[i]:=多空*4; 多空:=0;
end else begin
if 多空=多出[i] or 多空=-空出[i] then begin
進出[i]:=多空*2; 多空:=0;
end else if 多空=空進[i] or 多空=-多進[i] then begin
進出[i]:=多空*3; 多空:=-多空; 進價:=CC[i];
end;
end;
end;
end;
////////////////////////////////////////////////////
出現指標數組下標越界...的警語!請協助!謝謝!


由 Markchu7 在 2023-01-20 11:19 發表:

子公式源碼==
X引用每日起算HEMA-->
分鐘首K:=ISREGULARFBAR;
換日首K:=TRADEDATE<>REF(TRADEDATE,1);
歷史首K:=BARPOS=1;
DBCK:=IF(DATATYPE=1 OR DATATYPE=11 OR DATATYPE=2,分鐘首K OR 換日首K,歷史首K),LINETHICK;

XX:=H;
StNo:=lbound(XX);
YY:XX*0; YY[StNo]:=XX[StNo];
FK:=DBCK;
for i=StNo+1 to datacount do begin
if FK[i]=1 then begin
YY[i]:=XX[i];
end else begin
YY[i]:=(2*XX[i]+(N-1)*YY[i-1])/(N+1);
end;
end;
X引用每日起算LEMA-->省略


由 cgjj 在 2023-01-21 23:06 發表:

回覆: [問題]出現指標數組下標越界...的警語!

引用:
最初由 Markchu7 發表
分鐘首K:=ISREGULARFBAR;
換日首K:=TRADEDATE<>REF(TRADEDATE,1);
歷史首K:=BARPOS=1;
當沖週期:=DATATYPE=11 OR DATATYPE=1 OR DATATYPE=2;
DBCK:=IF(當沖週期,分鐘首K OR 換日首K,歷史首K),LINETHICK;
CKSP:=BARSLAST(DBCK)+1,LINETHICK;
CKMM8:=IF(DATATYPE=12 OR DATATYPE=11 OR DATATYPE=1 OR DATATYPE=2,IF(CKSP<=8,CKSP,8),8),LINETHICK;
CKMM13:=IF(DATATYPE=12 OR DATATYPE=11 OR DATATYPE=1 OR DATATYPE=2,IF(CKSP<=13,CKSP,13),13),LINETHICK;
CKMM25:=IF(DATATYPE=12 OR DATATYPE=11 OR DATATYPE=1 OR DATATYPE=2,IF(CKSP<=25,CKSP,25),25),LINETHICK;
RG:=HHV(H,CKSP)-LLV(L,CKSP);
CKMM13RG:=MA(H-L,CKMM13),LINETHICK;
////////////////////////////////////////////////////
U0HH:=STKINDI('','X引用每日起算HEMA.YY(5)',0,-1);
U0LL:=STKINDI('','X引用每日起算LEMA.YY(5)',0,-1);
U0AH:=HHV(U0HH,CKMM25);
U0AL:=LLV(U0LL,CKMM25);
ARG:U0AH-U0AL,LINETHICK,NOAXIS;
U0小壓S:=STKINDI('','X引用每日起算HEMA.YY(13)',0,-1),COLORBLUE,LINETHICK1;
U0天:HHV(U0小壓S,CKMM13),COLORBLUE,LINETHICK;
U0上:U0小壓S,COLORBLUE,LINETHICK;
U0下:STKINDI('','X引用每日起算LEMA.YY(13)',0,-1),COLORRED,LINETHICK;
U0地:LLV(U0下,CKMM13),COLORRED,LINETHICK;

多進:=NOT(DBCK) AND RG>=30 AND REF(U0天>REF(U0天,1),1)=0 AND U0天>REF(U0天,1);
空進:=NOT(DBCK) AND RG>=30 AND REF(U0地<REF(U0地,1),1)=0 AND U0地<REF(U0地,1);
多出:=CROSS(U0地,C);
空出:=CROSS(C,U0天);
////////////////////////////////////////////////////
強出:=TIME=134000;
進出:C*0; CC:=C;
多空:=0; //1.多 -1.空 0.無
盈虧:c*0 linethick;
for i = 1 to datacount do begin
if 多空=0 and 強出[i]=0 then begin
多空:=多進[i]-空進[i]; 進出[i]:=多空;
if 多空<>0 then 進價:=CC[i];
end else if 多空<>0 then begin
盈虧[i]:=(CC[i]-進價)*多空;
if 強出[i] then begin
進出[i]:=多空*4; 多空:=0;
end else begin
if 多空=多出[i] or 多空=-空出[i] then begin
進出[i]:=多空*2; 多空:=0;
end else if 多空=空進[i] or 多空=-多進[i] then begin
進出[i]:=多空*3; 多空:=-多空; 進價:=CC[i];
end;
end;
end;
end;
////////////////////////////////////////////////////
出現指標數組下標越界...的警語!請協助!謝謝!




多進:=NOT(DBCK) AND RG>=30 AND REF(U0天>REF(U0天,1),1)=0 AND U0天>REF(U0天,1);
空進:=NOT(DBCK) AND RG>=30 AND REF(U0地<REF(U0地,1),1)=0 AND U0地<REF(U0地,1);
多出:=CROSS(U0地,C);
空出:=CROSS(C,U0天);

改為
多進:=NOT(DBCK) AND RG>=30 AND REF(U0天>REF(U0天,1),1)=0 AND U0天>REF(U0天,1) or barpos=0;
空進:=NOT(DBCK) AND RG>=30 AND REF(U0地<REF(U0地,1),1)=0 AND U0地<REF(U0地,1) or barpos=0;
多出:=CROSS(U0地,C) or barpos=0;
空出:=CROSS(C,U0天) or barpos=0;


由 Markchu7 在 2023-01-22 18:51 發表:

謝謝指導!


由 Markchu7 在 2023-02-04 18:31 發表:

1.請問這個迴圈公式是否排除了DBCK(當天第一根K棒)產生的訊號?(不了解迴圈寫作,請見諒)
2.若是如此,請問可以修改成也納入嗎?
3.我的例子!空進的其中一種狀況為
DBCK AND CROSS(C-50.5,L) 以1/30的開盤是符合條件的!
請解惑與指導!謝謝!


由 cgjj 在 2023-02-04 23:06 發表:

引用:
最初由 Markchu7 發表
1.請問這個迴圈公式是否排除了DBCK(當天第一根K棒)產生的訊號?(不了解迴圈寫作,請見諒)
2.若是如此,請問可以修改成也納入嗎?
3.我的例子!空進的其中一種狀況為
DBCK AND CROSS(C-50.5,L) 以1/30的開盤是符合條件的!
請解惑與指導!謝謝!



跟迴圈無關係!!!
您自己寫的進場條件,自己要清楚呀~~
您進場條件,本身就將 NOT(DBCK) 加入了


由 Markchu7 在 2023-02-05 20:34 發表:

引起誤會!補充說明一下:
我是單純用這個架構來試著測試每個進場訊號的優劣,條件會隨每次的測試不同而更改!
以此例而言,就單純 空進BCK AND CROSS(C-50.5,L); 如此而已!
所以有此疑問!


由 cgjj 在 2023-02-05 21:30 發表:

引用:
最初由 Markchu7 發表
引起誤會!補充說明一下:
我是單純用這個架構來試著測試每個進場訊號的優劣,條件會隨每次的測試不同而更改!
以此例而言,就單純 空進:DBCK AND CROSS(C-50.5,L); 如此而已!
所以有此疑問!



前面已說跟迴圈無關係!

請確認該位置 空進 是否有成立(空進=1)

若 空進 成立同時 多進 也成立,兩者會互相抵消
你的條件應該避免此種情況發生


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


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

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