到奇狐勝券首頁 奇狐社區論壇 購買奇狐勝券 試用奇狐勝券
 
論壇首頁 你可以在這裡編輯你的資料,查看短訊,訂閱主題和論壇參數等等 免費會員註冊 會員列表 論壇幫助 論壇日曆 論壇搜索 加入我的最愛 登出論壇  
奇狐社區論壇 : Powered by vBulletin version 2.3.0 奇狐社區論壇 > 指標公式 > 問題交流 > 請問: 多空=0 跟 多空[i]=0 有什麼不一樣?
  上一主題   下一主題
作者
主題 發表新主題    回覆主題
P2372
中級會員

註冊日期: Mar 2012
來  自: 台北
文章數量: 35

請問: 多空=0 跟 多空[i]=0 有什麼不一樣?

P:EMA(C,5);
A:=C>P;
X:=C>P+20;
S:=C<P;
Z:=C<P-20;
多進:A or barpos=0,COLORRED;
平多:X or barpos=0,COLORGREEN;
空進:S or barpos=0,COLORGREEN;
平空:Z or barpos=0,COLOR5500AA;
// 平多:=賺50點 or barpos=0;//H-多進>=50多先出一口=做多平倉
// 平多:=賠50點 or barpos=0;//多進-L>=50多先出一口=多單停損
// 平空:=賺50點 or barpos=0;//空進-L>=50多先出一口=做空平倉
// 平空:=賠50點 or barpos=0;//H-空進>=50多先出一口=空單停損
進出:c*0;
TEST:0;//檢查是否進入判斷式的旗標
//[進出] 這變數值代表進出的點數.
// 1.多進, -1.空進 0.空手
多空:c*0,COLOR999900; //1.多 -1.空 0.無,是狀態旗標
for i = 1 to datacount do
begin
if 多空[i]=0 then
begin
多空[i]:=多進[i]-空進[i];test:=0;
end
else if 多空[i]=1 then
begin
if 平多[i]=1 then
begin
多空[i]:=0;test:=1;
end
else if 空進[i]=1 then
begin
多空[i]:=-1;test:=2;
end
else break
end
else if 多空[i]=-1 then
begin
if 平空[i]=1 then
begin
多空[i]:=0;test:=3;
end
else if 多進[i]=1 then
begin
多空[i]:=1;test:=4;
end
else break
end
else break
end;

__________________
win365

向版主報告此篇 | 查IP位址
Old Post 2013-01-14 09:07
P2372 現在離線 點選這裡查看 P2372 的個人資料 點選這裡給 P2372 傳送一條短訊 進入 P2372 的首頁! 查找更多關於 P2372 的文章 增加 P2372 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18251

回覆: 請問: 多空=0 跟 多空[i]=0 有什麼不一樣?

引用:
最初由 P2372 發表

請問: 多空=0 跟 多空[i]=0 有什麼不一樣?



兩者差很多

多[i]:=0;
是將 "多" 這個數列, 其中的第 i 個元素, 設定為零

多:=0;
是將 "多" 這個變數(非數列), 設定為零

向版主報告此篇 | 查IP位址
Old Post 2013-01-14 10:03
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
P2372
中級會員

註冊日期: Mar 2012
來  自: 台北
文章數量: 35

問題 我成功的完成我要的" 方向" 功能, 但是拿來繼續寫後面的應用卻出現"數組下標越界"

版主您好,
再次感謝您的耐心指導,
基本上我已經完成我要的方向的變數的使用,
但是, 當我繼續使用這個變數來做判斷, 繼續完成我的想法時, 卻出現:"數組下標越界或超出有效數據區間???
請問要如何解決?
附上原碼:
IF DATATYPE=2 THEN BEGIN
TW:=TIME>084501 AND TIME<134401;
P:EMA(c,5),colorwhite,linethick3;
PH:EMA(H+5,5);
PL:EMA(L-5,5);
A:=C>P;//多單進場條件
X:=C>P+30;//多單獲利出場條件
S:=C<P;//空單控損進場條件
Z:=C<P-30;//多單獲利出場條件
AZ:=IF(P>REF(P,1)+3 ,C<PL,C<PL-20);//多單控損出場條件
SZ:=IF(REF(P,1)>P+3 ,C>PH,C>PH+20);//空單控損出場條件
多進:A or barpos=0,COLORRED;//drawicon(多進,L-2,'b0');就是這個畫圖, 我把它搬到迴圈的後面, 經過判斷後再出買訊訊號
多出:X or barpos=0,COLOR000000;
空進:S or barpos=0,COLORGREEN;//drawicon(空進,H+2,'s0');就是這個畫圖, 我把它搬到迴圈的後面, 經過判斷後再出賣訊訊號
空出:Z or barpos=0,COLOR000000;
多控損:TW AND AZ and s=0 or barpos=0,COLOR00aa00;
空控損:TW AND SZ and a=0 or barpos=0,COLOR0000aa;

TEST:C*0,COLOR000000;//程式DEBUG的FLAG
多空:=0,COLOR000000; //1.多 -1.空 0.無(計算用, 無法隨K棒做輸出)
方向:C*0,COLOR000000;//0=空手 1=做多 -1=做空 (是數列, 可以隨K棒輸出)
進出:C*0,COLOR000000; //[進出] 這變數值代表意義如下是數列, 可以隨K棒輸出)
// 1.多單進場, 2.多單出場, 3.多控利出, 4.多控損出,
//-1.空單進場,-2.空單出場,-3.空控利出, -4.空控損出,

for i = 1 to datacount do begin
多空:=多進[i]-空進[i];
if 多空=0 then begin
進出[i]:=多空;方向[i]:=0;end
else begin {多空<>0}
if 多空=1 then begin
if 多出[i]=1 then begin 進出[i]:=2;方向[i]:=0;TEST[i]:=1;end;
else if 多出[i]=0 and 空進[i]=1 then begin 進出[i]:=-1;方向[i]:=-1;TEST[i]:=2;end;
else if 多控損[i]=1 then begin 進出[i]:=4;方向[i]:=0;TEST[i]:=3;end;
else begin 進出[i]:=1;方向[i]:=1;TEST[i]:=4;end;end;
else if 多空=-1 then begin
if 空出[i]=1 then begin 進出[i]:=-2;方向[i]:=0;TEST[i]:=5;end;
else if 空出[i]=0 and 多進[i]=1 then begin 進出[i]:=1;方向[i]:=1;TEST[i]:=6;end;
else if 空控損[i]=1 then begin 進出[i]:=-4;方向[i]:=0;TEST[i]:=7;end;
else begin 進出[i]:=-1;方向[i]:=-1;TEST[i]:=8;end;end;end;end;

買訊:=IF(方向[i]=1,1,0);drawicon(多進,L-2,'b0');
賣訊:=IF(方向[i]=-1,1,0);drawicon(空進,H+2,'s0');

end;//這是5分鐘的end

P2372 附帶上了此圖片:

__________________
win365

向版主報告此篇 | 查IP位址
Old Post 2013-01-17 13:57
P2372 現在離線 點選這裡查看 P2372 的個人資料 點選這裡給 P2372 傳送一條短訊 進入 P2372 的首頁! 查找更多關於 P2372 的文章 增加 P2372 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18251

回覆: 我成功的完成我要的" 方向" 功能, 但是拿來繼續寫後面的應用卻出現"數組下標越界&quo

引用:
最初由 P2372 發表
版主您好,
再次感謝您的耐心指導,
基本上我已經完成我要的方向的變數的使用,
但是, 當我繼續使用這個變數來做判斷, 繼續完成我的想法時, 卻出現:"數組下標越界或超出有效數據區間???
請問要如何解決?
附上原碼:
.........................................



for i = 1 to datacount do begin
...............................
end;
此迴圈正常跑完時(中途未跳離)
i 值為 datacount+1, 並非是 datacount

您於迴圈結束後用以下兩式子去存取
買訊:=IF(方向[i]=1,1,0);drawicon(多進,L-2,'b0');
賣訊:=IF(方向[i]=-1,1,0);drawicon(空進,H+2,'s0');

其中的 方向[i], 是存取到 方向[datacount+1]

"方向" 這數列的有效範圍是 1 to datacount
去取用 datacount+1 的位置, 已經超越該數列的有效範圍了

向版主報告此篇 | 查IP位址
Old Post 2013-01-17 14:17
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
P2372
中級會員

註冊日期: Mar 2012
來  自: 台北
文章數量: 35

非常感謝, 問題已經解決

版主老大:
我把datacount-1後問題已經解決
非常謝謝

__________________
win365

向版主報告此篇 | 查IP位址
Old Post 2013-01-17 16:29
P2372 現在離線 點選這裡查看 P2372 的個人資料 點選這裡給 P2372 傳送一條短訊 進入 P2372 的首頁! 查找更多關於 P2372 的文章 增加 P2372 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18251

回覆: 非常感謝, 問題已經解決

引用:
最初由 P2372 發表
版主老大:
我把datacount-1後問題已經解決
非常謝謝



不能用
方向[datacount-1]

因為, 當K棒僅有1根時
datacount-1=0 , 一樣會超越該數列的有效範圍
而且, 得到的並非是最後一根的值

以此例來說, 要改用
方向[i-1]

方向[datacount]

向版主報告此篇 | 查IP位址
Old Post 2013-01-17 16:38
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
P2372
中級會員

註冊日期: Mar 2012
來  自: 台北
文章數量: 35

好的, 非常感謝

DEAR 版主,
我使用 方向[datacount], 效果非常滿意

謝謝指導

__________________
win365

向版主報告此篇 | 查IP位址
Old Post 2013-01-17 18:11
P2372 現在離線 點選這裡查看 P2372 的個人資料 點選這裡給 P2372 傳送一條短訊 進入 P2372 的首頁! 查找更多關於 P2372 的文章 增加 P2372 至你的好友列表 編輯/刪除訊息 引用回覆
P2372
中級會員

註冊日期: Mar 2012
來  自: 台北
文章數量: 35

問題 無法紀錄進場的點數, 我需要紀錄這個進場點數計算盈虧

DEAR 版大,
感謝您的指導,我的公式快完成了,
但是遇到困難,已經自己搞了3天了,向您求救指導下:

1..無法正確記錄進場的點數, 我需要紀錄這個進場點數計算盈虧
2..如何在上面出現文字數字, 但是不要在畫面上出現畫線跟主圖疊加?

附上程式原碼, 請版大指導下:
dt:=datacount;
P:EMA(C,5);
PH:EMA(hhv(P,5),5);
PL:EMA(LLV(P,5),5);
A:=c>PL+5;//多單進場條件
X:=C>P+50;//多單獲利出場條件
S:=c<pH-5 AND COUNT(H>PH-5,5)>2;//空單控損進場條件
Z:=C<P-50;//多單獲利出場條件
AZ:=IF(P>REF(P,1)+3 ,C<PL-15,C<PL-30);//多單控損出場條件
SZ:=IF(REF(P,1)>P+3 ,C>PH+15,C>PH+30);//空單控損出場條件
多進:A or barpos=0,COLOR000000;
多出:X or barpos=0,COLOR000000;
空進:S or barpos=0,COLOR000000;
空出:Z or barpos=0,COLOR000000;
多控損:AZ and s=0 or barpos=0,COLOR00aa00;
空控損:SZ and a=0 or barpos=0,COLOR0000aa;
進場點數:=c*0;
TEST:C*0,COLOR000000;//程式DEBUG的FLAG
多空:0,COLOR000000; //1.多 -1.空 0.無(計算用, 無法隨K棒做輸出)
方向:C*0,COLOR000000;//0=空手 1=做多 -1=做空 (是數列, 可以隨K棒輸出)
進出:C*0,COLOR000000; //[進出] 這變數值代表意義如下是數列, 可以隨K棒輸出)
// 1.多單進場, 2.多單出場, 3.多控利出, 4.多控損出,
//-1.空單進場,-2.空單出場,-3.空控利出, -4.空控損出,

for i = 1 to datacount do begin
多空:=多進[i]-空進[i];
if 多空=0 then begin
進出[i]:=多空;方向[i]:=0;end
else begin {多空<>0}
if 多空=1 then begin
if 多出[i]=1 then begin 進出[i]:=2;方向[i]:=1;TEST[i]:=1;end;
else if 多出[i]=0 and 空進[i]=1 then begin 進出[i]:=-1;方向[i]:=-1;TEST[i]:=2;end;
else if 多控損[i]=1 then begin 進出[i]:=4;方向[i]:=0;TEST[i]:=3;end;
else begin 進出[i]:=1;方向[i]:=1;TEST[i]:=4;end;end;
else if 多空=-1 then begin
if 空出[i]=1 then begin 進出[i]:=-2;方向[i]:=-1;TEST[i]:=5;end;
else if 空出[i]=0 and 多進[i]=1 then begin 進出[i]:=1;方向[i]:=1;TEST[i]:=6;end;
else if 空控損[i]=1 then begin 進出[i]:=-4;方向[i]:=0;TEST[i]:=7;end;
else begin 進出[i]:=-1;方向[i]:=-1;TEST[i]:=8;end;end;end;end;
方向:=ref(方向,barslast(方向<>0));//若當根無買賣訊, 則延續最近之前的買賣訊
//方向:=if(方向<>ref(方向,1) or barpos=lbound(方向),方向,0);//若當根方向不等於前根方向, 則保存新方向, 否則濾除
PARTLINE(方向=1,P),COLOR0000FF,LINETHICK6;//-6
PARTLINE(方向=-1,P),COLOR00FF00,LINETHICK6;//-6
drawicon(方向=1 AND REF(方向<>1,1),L-2,4);//買訊
drawicon(方向=-1 AND REF(方向<>-1,1),H+2,5);//賣訊
BS_CT:barslast((方向=1 and ref(方向<>1,1))OR (方向=-1 and ref(方向<>-1,1))),color000000;
進場點數:IF(BS_CT=0,P[dt],REF(P,BS_CT)),colorRED;//就是這裡, 老是沒辦法正確紀錄進場的點( 買訊出現,賣訊出現的點)

P2372 附帶上了此圖片:

__________________
win365

向版主報告此篇 | 查IP位址
Old Post 2013-01-22 08:58
P2372 現在離線 點選這裡查看 P2372 的個人資料 點選這裡給 P2372 傳送一條短訊 進入 P2372 的首頁! 查找更多關於 P2372 的文章 增加 P2372 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18251

回覆: 無法紀錄進場的點數, 我需要紀錄這個進場點數計算盈虧

引用:
最初由 P2372 發表
DEAR 版大,
感謝您的指導,我的公式快完成了,
但是遇到困難,已經自己搞了3天了,向您求救指導下:

1..無法正確記錄進場的點數, 我需要紀錄這個進場點數計算盈虧
2..如何在上面出現文字數字, 但是不要在畫面上出現畫線跟主圖疊加?

附上程式原碼, 請版大指導下:
dt:=datacount;
P:EMA(C,5);
PH:EMA(hhv(P,5),5);
PL:EMA(LLV(P,5),5);
A:=c>PL+5;//多單進場條件
X:=C>P+50;//多單獲利出場條件
S:=c<pH-5 AND COUNT(H>PH-5,5)>2;//空單控損進場條件
Z:=C<P-50;//多單獲利出場條件
AZ:=IF(P>REF(P,1)+3 ,C<PL-15,C<PL-30);//多單控損出場條件
SZ:=IF(REF(P,1)>P+3 ,C>PH+15,C>PH+30);//空單控損出場條件
多進:A or barpos=0,COLOR000000;
多出:X or barpos=0,COLOR000000;
空進:S or barpos=0,COLOR000000;
空出:Z or barpos=0,COLOR000000;
多控損:AZ and s=0 or barpos=0,COLOR00aa00;
空控損:SZ and a=0 or barpos=0,COLOR0000aa;
進場點數:=c*0;
TEST:C*0,COLOR000000;//程式DEBUG的FLAG
多空:0,COLOR000000; //1.多 -1.空 0.無(計算用, 無法隨K棒做輸出)
方向:C*0,COLOR000000;//0=空手 1=做多 -1=做空 (是數列, 可以隨K棒輸出)
進出:C*0,COLOR000000; //[進出] 這變數值代表意義如下是數列, 可以隨K棒輸出)
// 1.多單進場, 2.多單出場, 3.多控利出, 4.多控損出,
//-1.空單進場,-2.空單出場,-3.空控利出, -4.空控損出,

for i = 1 to datacount do begin
多空:=多進[i]-空進[i];
if 多空=0 then begin
進出[i]:=多空;方向[i]:=0;end
else begin {多空<>0}
if 多空=1 then begin
if 多出[i]=1 then begin 進出[i]:=2;方向[i]:=1;TEST[i]:=1;end;
else if 多出[i]=0 and 空進[i]=1 then begin 進出[i]:=-1;方向[i]:=-1;TEST[i]:=2;end;
else if 多控損[i]=1 then begin 進出[i]:=4;方向[i]:=0;TEST[i]:=3;end;
else begin 進出[i]:=1;方向[i]:=1;TEST[i]:=4;end;end;
else if 多空=-1 then begin
if 空出[i]=1 then begin 進出[i]:=-2;方向[i]:=-1;TEST[i]:=5;end;
else if 空出[i]=0 and 多進[i]=1 then begin 進出[i]:=1;方向[i]:=1;TEST[i]:=6;end;
else if 空控損[i]=1 then begin 進出[i]:=-4;方向[i]:=0;TEST[i]:=7;end;
else begin 進出[i]:=-1;方向[i]:=-1;TEST[i]:=8;end;end;end;end;
方向:=ref(方向,barslast(方向<>0));//若當根無買賣訊, 則延續最近之前的買賣訊
//方向:=if(方向<>ref(方向,1) or barpos=lbound(方向),方向,0);//若當根方向不等於前根方向, 則保存新方向, 否則濾除
PARTLINE(方向=1,P),COLOR0000FF,LINETHICK6;//-6
PARTLINE(方向=-1,P),COLOR00FF00,LINETHICK6;//-6
drawicon(方向=1 AND REF(方向<>1,1),L-2,4);//買訊
drawicon(方向=-1 AND REF(方向<>-1,1),H+2,5);//賣訊
BS_CT:barslast((方向=1 and ref(方向<>1,1))OR (方向=-1 and ref(方向<>-1,1))),color000000;
進場點數:IF(BS_CT=0,P[dt],REF(P,BS_CT)),colorRED;//就是這裡, 老是沒辦法正確紀錄進場的點( 買訊出現,賣訊出現的點)



把這行
進場點數:IF(BS_CT=0,P[dt],REF(P,BS_CT)),colorRED;

改為這樣試試, 看是否為您要的結果
進場點數:REF(P,BS_CT),colorRED;

以 P:EMA(C,5); 為例

改為這樣就可不畫線
P:EMA(C,5) linethick0;

向版主報告此篇 | 查IP位址
Old Post 2013-01-22 17:11
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
P2372
中級會員

註冊日期: Mar 2012
來  自: 台北
文章數量: 35

問題已經解決

感謝版大協助, 問題解決了.

__________________
win365

向版主報告此篇 | 查IP位址
Old Post 2013-01-22 19:29
P2372 現在離線 點選這裡查看 P2372 的個人資料 點選這裡給 P2372 傳送一條短訊 進入 P2372 的首頁! 查找更多關於 P2372 的文章 增加 P2372 至你的好友列表 編輯/刪除訊息 引用回覆
全部時間均為台灣時間, 現在時間為14:08 發表新主題    回覆主題
  上一主題   下一主題
顯示可列印版本 | 訂閱此主題

論壇跳轉:
主題評分:

論壇規定:
你不可以發表新主題
你不可以回覆文章
你不可以上傳附件
你不可以編輯自己的文章
HTML語法禁止
vB 語法核准
表情符號核准
貼圖語法[IMG]核准
 

本站所有內容未經作者授權禁止轉貼節錄, 發表言論僅供參考勿作為投資決策依據。瀏覽本站請使用 IE 5.5 以上版本, 最佳瀏覽解析度 1024 x 768 全彩。

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

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.  聯絡我們