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

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


由 seychen 在 2023-10-25 11:48 發表:

無法顯示區塊內個別股票的合計結果

我希望能顯示整個區塊內的總合計結果,可是現在好像僅顯示當下查看的股票,視 USESTK:=STKFROMBLK() 於無物,我的源碼如下,請指點,

//
// 中短期之價格變化及比較
//
//
//======================================================================
持有檔數:=0;
空手檔數:=0;
無效檔數:=0;
績效:=0;
合計績效:=0;
相對績效:=0;
合計相對績效:=0;
年績效:=0;

C100:="TW100$Close";

月比較MA:=((MA(C,5)-ref(MA(C,5),20))/REF(MA(C,5),20) - (MA(C100,5)-REF(MA(C100,5),20))/REF(MA(C100,5),20) )*100;
MCMM:=月比較MA;

季比較MA:=((MA(C,5)-ref(MA(C,5),60))/REF(MA(C,5),60) - (MA(C100,5)-REF(MA(C100,5),60))/REF(MA(C100,5),60) )*100;
MCMQ:=季比較MA;

半年比較MA:=( (MA(C,5)-ref(MA(c,5),120))/ref(MA(c,5),120) - (MA(C100,5)-REF(MA(C100,5),120))/REF(MA(c100,5),120) )*100;
MCMH:=半年比較MA;

半年大盤MA:=( (MA(C100,5)-ref(MA(c100,5),120) )/( REF(MA(C100,5),120)) )*100;


//==================================================================================================================
UseBlk:='自選-股魚';
for i=1 to STKCOUNT(UseBlk) do begin
//for i=1 to 1 do begin

UseStk:=STKFROMBLK(UseBlk,i);

持有0:= (MCMM > 0 AND MCMQ > 0 AND MCMH > 0 AND (MCMM < MCMQ AND MCMQ < MCMH) AND (MCMM + MCMQ + MCMH) < 30)*10,COLORRED;
空手0:= -(MCMM < 0 AND MCMQ < -0 AND MCMH < -0 AND (MCMM > MCMQ AND MCMQ > MCMH) AND (MCMM + MCMQ + MCMH)> -30)*10,COLORGREEN;
//持有空手: 持有0+空手0;

持有:=IF(持有0=10, 10, 0),LINETHICK0;
空手:=IF(空手0=-10,-10, 0),LINETHICK0;

持有F:= (持有=10 AND REF(持有,1)<>10)*20;
空手F:= -(空手=-10 AND REF(空手,1)<>-10)*20;

持有FF:= ((LBOUND(BARSLAST(空手F=-20))=0 AND BARSLAST(持有F=20) < BARSLAST(BARPOS=10)) OR (BARSLAST(持有F=20) < BARSLAST(空手F=-20)))*30,COLORRED,LINETHICK2;
空手FF:= -((BARSLAST(空手F=-20) < BARSLAST(持有F=20)) OR (LBOUND(BARSLAST(持有F=20))=0 AND BARSLAST(空手F=-20) < BARSLAST(BARPOS=10)))*30,COLORGREEN,LINETHICK2;

//持有空手:=Stkindi(UseStk, '汰弱擇強-持有空手子程式',0,6);

持有空手:= 持有FF+空手FF;

// 漲跌幅:=Stkindi(UseStk, '汰弱擇強-漲跌幅子程式',0,6);

漲跌幅:= (C-REF(C,1))/REF(C,1)*100;

持有檔數:= 持有檔數+IF(持有空手=30,1,0);
空手檔數:= 空手檔數+IF(持有空手=-30,1,0);
無效檔數:= 無效檔數+IF(持有空手=0,1,0);
績效:=持有空手/30*漲跌幅;
合計績效:=合計績效+績效;
相對績效:=持有空手/30*((C-REF(C,1))/REF(C,1)-(C100-REF(C100,1))/REF(C100,1))*100;
合計相對績效:=合計相對績效+相對績效;


end;
//================================================================================================================

持有檔數: 持有檔數;
空手檔數: 空手檔數;
無效檔數: 無效檔數;
合計績效: 合計績效,COLORWHITE;
年績效: SUM(績效,240),COLORWHITE;
年相對績效: SUM(合計相對績效,240),COLORWHITE;


由 cgjj 在 2023-10-25 13:28 發表:

回覆: 無法顯示區塊內個別股票的合計結果

引用:
最初由 seychen 發表
我希望能顯示整個區塊內的總合計結果,可是現在好像僅顯示當下查看的股票,視 USESTK:=STKFROMBLK() 於無物,我的源碼如下,請指點,

//
// 中短期之價格變化及比較
//
//
//======================================================================
持有檔數:=0;
空手檔數:=0;
無效檔數:=0;
績效:=0;
合計績效:=0;
相對績效:=0;
合計相對績效:=0;
年績效:=0;

C100:="TW100$Close";

月比較MA:=((MA(C,5)-ref(MA(C,5),20))/REF(MA(C,5),20) - (MA(C100,5)-REF(MA(C100,5),20))/REF(MA(C100,5),20) )*100;
MCMM:=月比較MA;

季比較MA:=((MA(C,5)-ref(MA(C,5),60))/REF(MA(C,5),60) - (MA(C100,5)-REF(MA(C100,5),60))/REF(MA(C100,5),60) )*100;
MCMQ:=季比較MA;

半年比較MA:=( (MA(C,5)-ref(MA(c,5),120))/ref(MA(c,5),120) - (MA(C100,5)-REF(MA(C100,5),120))/REF(MA(c100,5),120) )*100;
MCMH:=半年比較MA;

半年大盤MA:=( (MA(C100,5)-ref(MA(c100,5),120) )/( REF(MA(C100,5),120)) )*100;


//==================================================================================================================
UseBlk:='自選-股魚';
for i=1 to STKCOUNT(UseBlk) do begin
//for i=1 to 1 do begin

UseStk:=STKFROMBLK(UseBlk,i);

持有0:= (MCMM > 0 AND MCMQ > 0 AND MCMH > 0 AND (MCMM < MCMQ AND MCMQ < MCMH) AND (MCMM + MCMQ + MCMH) < 30)*10,COLORRED;
空手0:= -(MCMM < 0 AND MCMQ < -0 AND MCMH < -0 AND (MCMM > MCMQ AND MCMQ > MCMH) AND (MCMM + MCMQ + MCMH)> -30)*10,COLORGREEN;
//持有空手: 持有0+空手0;

持有:=IF(持有0=10, 10, 0),LINETHICK0;
空手:=IF(空手0=-10,-10, 0),LINETHICK0;

持有F:= (持有=10 AND REF(持有,1)<>10)*20;
空手F:= -(空手=-10 AND REF(空手,1)<>-10)*20;

持有FF:= ((LBOUND(BARSLAST(空手F=-20))=0 AND BARSLAST(持有F=20) < BARSLAST(BARPOS=10)) OR (BARSLAST(持有F=20) < BARSLAST(空手F=-20)))*30,COLORRED,LINETHICK2;
空手FF:= -((BARSLAST(空手F=-20) < BARSLAST(持有F=20)) OR (LBOUND(BARSLAST(持有F=20))=0 AND BARSLAST(空手F=-20) < BARSLAST(BARPOS=10)))*30,COLORGREEN,LINETHICK2;

//持有空手:=Stkindi(UseStk, '汰弱擇強-持有空手子程式',0,6);

持有空手:= 持有FF+空手FF;

// 漲跌幅:=Stkindi(UseStk, '汰弱擇強-漲跌幅子程式',0,6);

漲跌幅:= (C-REF(C,1))/REF(C,1)*100;

持有檔數:= 持有檔數+IF(持有空手=30,1,0);
空手檔數:= 空手檔數+IF(持有空手=-30,1,0);
無效檔數:= 無效檔數+IF(持有空手=0,1,0);
績效:=持有空手/30*漲跌幅;
合計績效:=合計績效+績效;
相對績效:=持有空手/30*((C-REF(C,1))/REF(C,1)-(C100-REF(C100,1))/REF(C100,1))*100;
合計相對績效:=合計相對績效+相對績效;


end;
//================================================================================================================

持有檔數: 持有檔數;
空手檔數: 空手檔數;
無效檔數: 無效檔數;
合計績效: 合計績效,COLORWHITE;
年績效: SUM(績效,240),COLORWHITE;
年相對績效: SUM(合計相對績效,240),COLORWHITE;



按您貼出來的公式,其中這一行
UseStk:=STKFROMBLK(UseBlk,i);

它所計算出來的 UseStk 沒有被應用在程式中的任何一個地方,當然形同廢物!

您應該搭配 Stkindi 把各個股票算出來的值引用傳回,然後予以加總,才能得到您想要的!


由 seychen 在 2023-10-26 06:24 發表:

回覆: 回覆: 無法顯示區塊內個別股票的合計結果

引用:
最初由 cgjj 發表
按您貼出來的公式,其中這一行
UseStk:=STKFROMBLK(UseBlk,i);

它所計算出來的 UseStk 沒有被應用在程式中的任何一個地方,當然形同廢物!

您應該搭配 Stkindi 把各個股票算出來的值引用傳回,然後予以加總,才能得到您想要的!



搞出這種烏龍,真是再耍寶

-Money hunter


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


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

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