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

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


由 hamson 在 2011-01-25 09:06 發表:

[求救]"指標數組下標越界或超出有效數據區間"

原交易範例
多進:=A>B or barpos=0;
空進:=A<B or barpos=0;
進出:C*0;
多空:=0; //1.多 -1.空 0.無
控利:=50; 進價:=0; CC:=C;
進向:=多進-空進;
盈虧:c*0 linethick;

for i= 1 to datacount do begin
  if 多空=0 then begin
    多空:=進向[i]; 進出[i]:=多空;
    if 多空<>0 then 進價:=CC[i];
  end else if 多空<>0 then begin
    盈虧[i]:=(CC[i]-進價)*多空;
    if 多空<>進向[i] and 進向[i]<>0 then begin
      進出[i]:=-多空*3; 多空:=-多空; 進價:=CC[i];
    end else if  盈虧[i]>=控利 then begin
      進出[i]:=多空*2; 多空:=0;
    end;
  end;
end;

自行加入下列條件
VAR1:=VOL/((HIGH-LOW)*2-ABS(CLOSE-OPEN));
成交:=VOL,ColorCD52FF,linethick0;
主買盤:=IF(CLOSE>OPEN,VAR1*(HIGH-LOW),IF(CLOSE<OPEN,VAR1*((HIGH-OPEN)+(CLOSE-LOW)),VOL/2)),Color0000FF;
主賣盤:=IF(CLOSE>OPEN,VAR1*((HIGH-CLOSE)+(OPEN-LOW)),IF(CLOSE<OPEN,VAR1*(HIGH-LOW),VOL/2)),Color00E521;
正比:主買盤/主賣盤,linethick0;
買進1:=A>B or barpos=0;
買進2:= ref(正比,1)>2 or barpos=0;
多進:=買進1 or 買進2;

會出現"指標數組下標越界或超出有效數據區間"
請問哪裡出錯,應如何修正 謝謝!


由 cgjj 在 2011-01-25 09:21 發表:

回覆: [求救]"指標數組下標越界或超出有效數據區間"

引用:
最初由 hamson 發表
原交易範例
多進:=A>B or barpos=0;
空進:=A<B or barpos=0;
進出:C*0;
多空:=0; //1.多 -1.空 0.無
控利:=50; 進價:=0; CC:=C;
進向:=多進-空進;
盈虧:c*0 linethick;

for i= 1 to datacount do begin
  if 多空=0 then begin
    多空:=進向[i]; 進出[i]:=多空;
    if 多空<>0 then 進價:=CC[i];
  end else if 多空<>0 then begin
    盈虧[i]:=(CC[i]-進價)*多空;
    if 多空<>進向[i] and 進向[i]<>0 then begin
      進出[i]:=-多空*3; 多空:=-多空; 進價:=CC[i];
    end else if  盈虧[i]>=控利 then begin
      進出[i]:=多空*2; 多空:=0;
    end;
  end;
end;

自行加入下列條件
VAR1:=VOL/((HIGH-LOW)*2-ABS(CLOSE-OPEN));
成交:=VOL,ColorCD52FF,linethick0;
主買盤:=IF(CLOSE>OPEN,VAR1*(HIGH-LOW),IF(CLOSE<OPEN,VAR1*((HIGH-OPEN)+(CLOSE-LOW)),VOL/2)),Color0000FF;
主賣盤:=IF(CLOSE>OPEN,VAR1*((HIGH-CLOSE)+(OPEN-LOW)),IF(CLOSE<OPEN,VAR1*(HIGH-LOW),VOL/2)),Color00E521;
正比:主買盤/主賣盤,linethick0;
買進1:=A>B or barpos=0;
買進2:= ref(正比,1)>2 or barpos=0;
多進:=買進1 or 買進2;

會出現"指標數組下標越界或超出有效數據區間"
請問哪裡出錯,應如何修正 謝謝!




買進1:=A>B or barpos=0;
買進2:= ref(正比,1)>2 or barpos=0;
多進:=買進1 or 買進2

改為
買進1:=A>B;
買進2:= ref(正比,1)>2;
多進:=買進1 or 買進2 or barpos=0;

註:若有其他地方有相同狀況也要改


由 hamson 在 2011-01-25 09:47 發表:

回覆: 回覆: [求救]"指標數組下標越界或超出有效數據區間"

引用:
最初由 cgjj 發表

買進1:=A>B or barpos=0;
買進2:= ref(正比,1)>2 or barpos=0;
多進:=買進1 or 買進2

改為
買進1:=A>B;
買進2:= ref(正比,1)>2;
多進:=買進1 or 買進2 or barpos=0;

註:若有其他地方有相同狀況也要改



依照版主改法仍然出現指標數組下標越界或超出有效數據區間
我只要不加此條件程式是正常的,加入後就不行,因此我懷疑
VAR1:=VOL/((HIGH-LOW)*2-ABS(CLOSE-OPEN));
成交:=VOL,ColorCD52FF,linethick0;
主買盤:=IF(CLOSE>OPEN,VAR1*(HIGH-LOW),IF(CLOSE<OPEN,VAR1*((HIGH-OPEN)+(CLOSE-LOW)),VOL/2)),Color0000FF;
主賣盤:=IF(CLOSE>OPEN,VAR1*((HIGH-CLOSE)+(OPEN-LOW)),IF(CLOSE<OPEN,VAR1*(HIGH-LOW),VOL/2)),Color00E521;
正比:主買盤/主賣盤,linethick0;這段有問題,但又不知哪裡有問題


由 cgjj 在 2011-01-25 10:23 發表:

回覆: 回覆: 回覆: [求救]"指標數組下標越界或超出有效數據區間"

引用:
最初由 hamson 發表
依照版主改法仍然出現指標數組下標越界或超出有效數據區間
我只要不加此條件程式是正常的,加入後就不行,因此我懷疑
VAR1:=VOL/((HIGH-LOW)*2-ABS(CLOSE-OPEN));
成交:=VOL,ColorCD52FF,linethick0;
主買盤:=IF(CLOSE>OPEN,VAR1*(HIGH-LOW),IF(CLOSE<OPEN,VAR1*((HIGH-OPEN)+(CLOSE-LOW)),VOL/2)),Color0000FF;
主賣盤:=IF(CLOSE>OPEN,VAR1*((HIGH-CLOSE)+(OPEN-LOW)),IF(CLOSE<OPEN,VAR1*(HIGH-LOW),VOL/2)),Color00E521;
正比:主買盤/主賣盤,linethick0;這段有問題,但又不知哪裡有問題



麻煩把完整的程式貼出來, 這樣比較容易協助您


由 hamson 在 2011-01-25 13:18 發表:

回覆: 回覆: 回覆: 回覆: [求救]"指標數組下標越界或超出有效數據區間"

引用:
最初由 cgjj 發表
麻煩把完整的程式貼出來, 這樣比較容易協助您


註:若有其他地方有相同狀況也要改
原來是連其他停損停利等條件都要一同修正才能正常運作
感謝版主指導!


由 kuolung 在 2011-01-26 21:46 發表:

其實我在寫指標公式時也常出現這樣的訊息,請問老師,有沒有什麼比較好的除錯工具可以用,尤其我現在出現的問題是在大部份的股票可以正常出現我要的數值,但是某一些特定的股票,就會出現這樣的訊息


由 cgjj 在 2011-01-27 08:55 發表:

引用:
最初由 kuolung 發表
其實我在寫指標公式時也常出現這樣的訊息,請問老師,有沒有什麼比較好的除錯工具可以用,尤其我現在出現的問題是在大部份的股票可以正常出現我要的數值,但是某一些特定的股票,就會出現這樣的訊息


就算有除錯工具, 對這問題也是幫助不大的
因為每個商品都有自己的趨勢變化和資料特性

要去常常問自己, 現用的變數
1.是否有可能會成為無效變數
2.迴圈的起始點是否有可能超過變數下界
3.K線不足時運算是否會越界出錯
.................等等
加入相對的因應錯施, 來處理特別狀況

檢驗除錯方法:
1.寫好後跑一輪所有股票選股看看
2.用訓練模式模擬K棒不足的狀況
3.找有符合邏輯的位置檢驗結果
................等等


由 kuolung 在 2011-01-27 20:22 發表:

我想我的問題就是第2項 :

2.迴圈的起始點是否有可能超過變數下界

修改一下,起始點就可以了,

如果有 step by step 的除錯工具,我想應更能了解問題點,找出更好修正公式的方法


由 cgjj 在 2011-01-31 08:57 發表:

引用:
最初由 kuolung 發表
我想我的問題就是第2項 :

2.迴圈的起始點是否有可能超過變數下界

修改一下,起始點就可以了,

如果有 step by step 的除錯工具,我想應更能了解問題點,找出更好修正公式的方法



在適當的位置下達 exit 命令, 搭配變數之顯示
也是一種可行的除錯方式唷


由 kuolung 在 2011-02-01 18:40 發表:

我目前的想法是把程式移轉到 visual c++ 環境中,再把奇狐的資料轉進去,就可以用 step by step 的方式 debug 了


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


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

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