 |
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;
謝謝幫忙
感恩
|
|
向版主報告此篇 |  |
|
2015-10-28 15:04 |
|
|
|  |
 |
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;
|
|
向版主報告此篇 |  |
|
2015-10-28 16:53 |
|
|
|  |
 |
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的負擔!
可行嗎?
謝謝幫忙
感恩
|
|
向版主報告此篇 |  |
|
2015-10-29 11:50 |
|
|
|  |
 |
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
了解 謝謝總版主
來改改看
感恩
|
|
向版主報告此篇 |  |
|
2015-10-29 14:33 |
|
|
|  |
本站所有內容未經作者授權禁止轉貼節錄, 發表言論僅供參考勿作為投資決策依據。瀏覽本站請使用 IE 5.5 以上版本, 最佳瀏覽解析度 1024 x 768 全彩。
|
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved. 聯絡我們
|