到奇狐勝券首頁 奇狐社區論壇 購買奇狐勝券 試用奇狐勝券
 
論壇首頁 你可以在這裡編輯你的資料,查看短訊,訂閱主題和論壇參數等等 免費會員註冊 會員列表 論壇幫助 論壇日曆 論壇搜索 加入我的最愛 登出論壇  
奇狐社區論壇 : Powered by vBulletin version 2.3.0 奇狐社區論壇 > 指標公式 > 問題交流 > 修改公式
  上一主題   下一主題
作者
主題 發表新主題    回覆主題
mead
資深會員

註冊日期: Nov 2004
來  自: 台北
文章數量: 409

修改公式

請問版主:
下面公式要如何改成只算最近900根K棒就好?

{以均價為基準的K線}
FO:=OPEN;
FH:=HIGH;
FL:=LOW;
FC:=CLOSE;
FC[1]:=(2*FC[1]+FH[1]+FL[1])/4;
FOR I=2 TO DATACOUNT DO BEGIN
FO[I]:=(FO[I-1]+FC[I-1])/2;
FH[I]:=IF(FO[I]>FH[I],FO[I],FH[I]);
FL[I]:=IF(FO[I]<FL[I],FO[I],FL[I]);
FC[I]:=(2*FC[I]+FH[I]+FL[I])/4;
END;
KK:=IF(FC>=FO AND (FC>=REF(FC,1) OR REF(FC,1)>=REF(FO,1)),1,IF(FC<FO AND (FC<REF(FO,1) OR REF(FC,1)<REF(FO,1)),-1,0));
明日轉折:ROUND((FO + FC) / 2*10)/10,SHIFT1,LINETHICK0,COLORFFFF;
今日轉折:=IF(KK=1,MIN(FC,FO),IF(KK=-1,MAX(FC,FO),IF(REF(KK,1)=1,MIN(FC,FO),IF(REF(KK,1)=-1,MAX(FC,FO),(FC+FO)/2))));
DRAWNUMBER(ISLASTBAR,明日轉折,ROUND(今日轉折*100)/100,2),SHIFT3;
STICKLINE(FC>FO,FH,FL,0.4,0),COLORFF;
STICKLINE(FO>FC,FH,FL,0.4,0),COLORFFFF00;
STICKLINE(KK=1 AND FC>=FO,FO,FC,8,0),COLORFF;
STICKLINE(KK=1 AND FC<FO,FO,FC,8,0),COLORFF;
STICKLINE(KK=-1 AND FC>=FO,FO,FC,8,0),COLORFF0000;
STICKLINE(KK=-1 AND FC<FO,FO,FC,8,0),COLORFF0000;
STICKLINE(KK=0 AND FC>=FO,FO,FC,8,0),COLORFF;
STICKLINE(KK=0 AND FC<FO,FO,FC,8,0),COLORFF;

謝謝幫忙
感恩

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

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

回覆: 修改公式

引用:
最初由 mead 發表
請問版主:
下面公式要如何改成只算最近900根K棒就好?

{以均價為基準的K線}
FO:=OPEN;
FH:=HIGH;
FL:=LOW;
FC:=CLOSE;
FC[1]:=(2*FC[1]+FH[1]+FL[1])/4;
FOR I=2 TO DATACOUNT DO BEGIN
FO[I]:=(FO[I-1]+FC[I-1])/2;
FH[I]:=IF(FO[I]>FH[I],FO[I],FH[I]);
FL[I]:=IF(FO[I]<FL[I],FO[I],FL[I]);
FC[I]:=(2*FC[I]+FH[I]+FL[I])/4;
END;
KK:=IF(FC>=FO AND (FC>=REF(FC,1) OR REF(FC,1)>=REF(FO,1)),1,IF(FC<FO AND (FC<REF(FO,1) OR REF(FC,1)<REF(FO,1)),-1,0));
明日轉折:ROUND((FO + FC) / 2*10)/10,SHIFT1,LINETHICK0,COLORFFFF;
今日轉折:=IF(KK=1,MIN(FC,FO),IF(KK=-1,MAX(FC,FO),IF(REF(KK,1)=1,MIN(FC,FO),IF(REF(KK,1)=-1,MAX(FC,FO),(FC+FO)/2))));
DRAWNUMBER(ISLASTBAR,明日轉折,ROUND(今日轉折*100)/100,2),SHIFT3;
STICKLINE(FC>FO,FH,FL,0.4,0),COLORFF;
STICKLINE(FO>FC,FH,FL,0.4,0),COLORFFFF00;
STICKLINE(KK=1 AND FC>=FO,FO,FC,8,0),COLORFF;
STICKLINE(KK=1 AND FC<FO,FO,FC,8,0),COLORFF;
STICKLINE(KK=-1 AND FC>=FO,FO,FC,8,0),COLORFF0000;
STICKLINE(KK=-1 AND FC<FO,FO,FC,8,0),COLORFF0000;
STICKLINE(KK=0 AND FC>=FO,FO,FC,8,0),COLORFF;
STICKLINE(KK=0 AND FC<FO,FO,FC,8,0),COLORFF;

謝謝幫忙
感恩



原碼:
MaxKBar:=1000; //僅算近期N根K棒, 零則算全部 StNo:=datacount-MaxKBar+1; if StNo<1 or MaxKBar=0 then StNo:=1; FO:=OPEN; x:=SETLBOUND(FO,StNo); FH:=HIGH; x:=SETLBOUND(FH,StNo); FL:=LOW; x:=SETLBOUND(FL,StNo); FC:=CLOSE; x:=SETLBOUND(FC,StNo); FC[StNo]:=(2*FC[StNo]+FH[StNo]+FL[StNo])/4; FOR I=StNo+1 TO DATACOUNT DO BEGIN FO[I]:=(FO[I-1]+FC[I-1])/2; FH[I]:=IF(FO[I]>FH[I],FO[I],FH[I]); FL[I]:=IF(FO[I]<FL[I],FO[I],FL[I]); FC[I]:=(2*FC[I]+FH[I]+FL[I])/4; END; KK:=IF(FC>=FO AND (FC>=REF(FC,1) OR REF(FC,1)>=REF(FO,1)),1,IF(FC<FO AND (FC<REF(FO,1) OR REF(FC,1)<REF(FO,1)),-1,0)); 明日轉折:ROUND((FO + FC) / 2*10)/10,SHIFT1,LINETHICK0,COLORFFFF; 今日轉折:=IF(KK=1,MIN(FC,FO),IF(KK=-1,MAX(FC,FO),IF(REF(KK,1)=1,MIN(FC,FO),IF(REF(KK,1)=-1,MAX(FC,FO),(FC+FO)/2)))); DRAWNUMBER(ISLASTBAR,明日轉折,ROUND(今日轉折*100)/100,2),SHIFT3; STICKLINE(FC>FO,FH,FL,0.4,0),COLORFF; STICKLINE(FO>FC,FH,FL,0.4,0),COLORFFFF00; STICKLINE(KK=1 AND FC>=FO,FO,FC,8,0),COLORFF; STICKLINE(KK=1 AND FC<FO,FO,FC,8,0),COLORFF; STICKLINE(KK=-1 AND FC>=FO,FO,FC,8,0),COLORFF0000; STICKLINE(KK=-1 AND FC<FO,FO,FC,8,0),COLORFF0000; STICKLINE(KK=0 AND FC>=FO,FO,FC,8,0),COLORFF; STICKLINE(KK=0 AND FC<FO,FO,FC,8,0),COLORFF;

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

註冊日期: Nov 2004
來  自: 台北
文章數量: 409

謝謝站長的迅速幫忙

感恩

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

註冊日期: Nov 2004
來  自: 台北
文章數量: 409

回覆: 回覆: 修改公式

引用:
最初由 cgjj 發表
原碼:
MaxKBar:=1000; //僅算近期N根K棒, 零則算全部 StNo:=datacount-MaxKBar+1; if StNo<1 or MaxKBar=0 then StNo:=1; FO:=OPEN; x:=SETLBOUND(FO,StNo); FH:=HIGH; x:=SETLBOUND(FH,StNo); FL:=LOW; x:=SETLBOUND(FL,StNo); FC:=CLOSE; x:=SETLBOUND(FC,StNo); FC[StNo]:=(2*FC[StNo]+FH[StNo]+FL[StNo])/4; FOR I=StNo+1 TO DATACOUNT DO BEGIN FO[I]:=(FO[I-1]+FC[I-1])/2; FH[I]:=IF(FO[I]>FH[I],FO[I],FH[I]); FL[I]:=IF(FO[I]<FL[I],FO[I],FL[I]); FC[I]:=(2*FC[I]+FH[I]+FL[I])/4; END; KK:=IF(FC>=FO AND (FC>=REF(FC,1) OR REF(FC,1)>=REF(FO,1)),1,IF(FC<FO AND (FC<REF(FO,1) OR REF(FC,1)<REF(FO,1)),-1,0)); 明日轉折:ROUND((FO + FC) / 2*10)/10,SHIFT1,LINETHICK0,COLORFFFF; 今日轉折:=IF(KK=1,MIN(FC,FO),IF(KK=-1,MAX(FC,FO),IF(REF(KK,1)=1,MIN(FC,FO),IF(REF(KK,1)=-1,MAX(FC,FO),(FC+FO)/2)))); DRAWNUMBER(ISLASTBAR,明日轉折,ROUND(今日轉折*100)/100,2),SHIFT3; STICKLINE(FC>FO,FH,FL,0.4,0),COLORFF; STICKLINE(FO>FC,FH,FL,0.4,0),COLORFFFF00; STICKLINE(KK=1 AND FC>=FO,FO,FC,8,0),COLORFF; STICKLINE(KK=1 AND FC<FO,FO,FC,8,0),COLORFF; STICKLINE(KK=-1 AND FC>=FO,FO,FC,8,0),COLORFF0000; STICKLINE(KK=-1 AND FC<FO,FO,FC,8,0),COLORFF0000; STICKLINE(KK=0 AND FC>=FO,FO,FC,8,0),COLORFF; STICKLINE(KK=0 AND FC<FO,FO,FC,8,0),COLORFF;



請問總版主
可以用在設定其他公式也能用嗎?只要取出哪裡?
我想用於當沖的其它公式 以期指1分鐘為例 最多只要算900根K棒(三天)就好 以減少CPU的負擔!

可行嗎?

謝謝幫忙
感恩

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

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

回覆: 回覆: 回覆: 修改公式

引用:
最初由 mead 發表
請問總版主
可以用在設定其他公式也能用嗎?只要取出哪裡?
我想用於當沖的其它公式 以期指1分鐘為例 最多只要算900根K棒(三天)就好 以減少CPU的負擔!

可行嗎?

謝謝幫忙
感恩



舉例來說
若您的公式僅有用到收盤價,方法如下:

//前置處理
MaxKBar:=1000; //僅算近期N根K棒, 零則算全部
StNo:=datacount-MaxKBar+1;
if StNo<1 or MaxKBar=0 then StNo:=1;
CC:=CLOSE; x:=SETLBOUND(CC,StNo);

//接續您原本的公式
把原本的公式中的收盤價,都用前面的 CC 取代

-------------------------------------------------------
簡單的說
就是只需處理運算所需要的基本元素
(一般頂多只有 開高低收量額 需要被處理)

例如:
您前面提問的那公式
運算上有用到 OHLC 其餘未用到
所以僅需處理 OHLC

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

註冊日期: Nov 2004
來  自: 台北
文章數量: 409

回覆: 回覆: 回覆: 回覆: 修改公式

引用:
最初由 cgjj 發表
舉例來說
若您的公式僅有用到收盤價,方法如下:

//前置處理
MaxKBar:=1000; //僅算近期N根K棒, 零則算全部
StNo:=datacount-MaxKBar+1;
if StNo<1 or MaxKBar=0 then StNo:=1;
CC:=CLOSE; x:=SETLBOUND(CC,StNo);

//接續您原本的公式
把原本的公式中的收盤價,都用前面的 CC 取代

-------------------------------------------------------
簡單的說
就是只需處理運算所需要的基本元素
(一般頂多只有 開高低收量額 需要被處理)

例如:
您前面提問的那公式
運算上有用到 OHLC 其餘未用到
所以僅需處理 OHLC



了解 謝謝總版主
來改改看

感恩

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

論壇跳轉:
主題評分:

論壇規定:
你不可以發表新主題
你不可以回覆文章
你不可以上傳附件
你不可以編輯自己的文章
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.  聯絡我們