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

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- [求救]我想在5分鐘K線中,先判斷是今天才計算公式, 請問哪裡錯了, 應該如何寫? (http://www.chiefox.com.tw/bbs/showthread.php?threadid=17395)


由 P2372 在 2013-01-04 07:46 發表:

問題 [求救]我想在5分鐘K線中,先判斷是今天才計算公式, 請問哪裡錯了, 應該如何寫?

本主您好:

我的公式如下:

IF DATATYPE=2 THEN BEGIN
WHILE DATE>1130101 DO //這裡產生了語法錯誤???
BEGIN
...以下是公式內容, 略過


END;
END;


我看過板主的其他說明, 錯誤的原因應該是DATE是數組, 不能拿來當作WHILE 或是IF語句的判斷, 但是如果我需要這種判斷條件時, 應該如何寫?
請協助下
謝謝

__________________
win365


由 hwyhon 在 2013-01-04 10:23 發表:

回覆: [求救]我想在5分鐘K線中,先判斷是今天才計算公式, 請問哪裡錯了, 應該如何寫?

引用:
最初由 P2372 發表
本主您好:

我的公式如下:

IF DATATYPE=2 THEN BEGIN
WHILE DATE>1130101 DO //這裡產生了語法錯誤???
BEGIN
...以下是公式內容, 略過


END;
END;


我看過板主的其他說明, 錯誤的原因應該是DATE是數組, 不能拿來當作WHILE 或是IF語句的判斷, 但是如果我需要這種判斷條件時, 應該如何寫?
請協助下
謝謝


改這樣試試看
bb:=if( DATE>1130101,1,0),LINETHICK0;
IF numtostr(bb,0)='1' THEN BEGIN

__________________

就是發蓊梨(ㄛㄥˇ ㄌㄞˊ) 程式交易網站
[教學]指標公式及程式交易系統撰寫 [代工]

學會指標策略程式化的撰寫,將可讓你不再盲目投下辛苦賺來的血汗錢
要知道交易的策略或交易的模式長期執行下確實可獲利
交易才有意義的.否則寧可不交易



由 cgjj 在 2013-01-04 10:39 發表:

回覆: [求救]我想在5分鐘K線中,先判斷是今天才計算公式, 請問哪裡錯了, 應該如何寫?

引用:
最初由 P2372 發表
本主您好:

我的公式如下:

IF DATATYPE=2 THEN BEGIN
WHILE DATE>1130101 DO //這裡產生了語法錯誤???
BEGIN
...以下是公式內容, 略過


END;
END;


我看過板主的其他說明, 錯誤的原因應該是DATE是數組, 不能拿來當作WHILE 或是IF語句的判斷, 但是如果我需要這種判斷條件時, 應該如何寫?
請協助下
謝謝



看看您 BEGIN ... END 中間算什麼
處理方式可能會不同


由 P2372 在 2013-01-05 01:23 發表:

問題 補充說

感謝板主迅速的回覆, 好感動...
附上我的公式原碼:
IF DATATYPE=2 THEN BEGIN
DDD:=if( DATE>1121201,1,0);
IF numtostr(DDD,0)='1' THEN BEGIN
MH10:EMA(H+10,10);
ML10:EMA(L-10,10);
A:=IF(ML10<REF(ML10,1),(L<ML10-30)AND C>O,CROSS(C,MH10));//買進多單
DRAWICON(A,L-1,'B0');
X:=((C>MH10+30) OR (H>MH10 AND C<MH10)) AND COUNT(A,10)=0;//收盤>M30+30時多單平倉
DRAWICON(X,H+3,'S1');
S:=IF(MH10>REF(MH10,1),(H>MH10+30)AND C<O,CROSS(ML10,C));//買進空單(放空)
DRAWICON(S,H+5,'S0');
Z:=((C<ML10-30) OR (L<ML10 AND C>ML10)) AND COUNT(S,10)=0;//收盤<M30-30時空單平倉
DRAWICON(Z,L-2,'B1');


多進:=A or barpos=0;
多出:=X or barpos=0;
空進:=S or barpos=0;
空出:=Z or barpos=0;
強出:=(TIME=134000) OR (C>REF(C,BARSLAST(S))+20) OR (C<REF(C,BARSLAST(A))-20);
進出:C*0;
CC:=C;
多空:=0; //1.多 -1.空 0.無
盈虧:c*0 ;
for i = 1 to datacount do begin
if 多空=0 and 強出[i]=0 then
begin
多空:=多進[i]-空進[i];
進出[i]:=多空;
if 多空<>0 then 進價:=CC[i-1];
end
else if 多空<>0 then begin
盈虧[i]:=(CC[i]-進價)*多空;
if 強出[i] then begin
進出[i]:=多空*4; 多空:=0;
end else begin
if 多空=多出[i] or 多空=-空出[i] then begin
進出[i]:=多空*2; 多空:=0;
end else if 多空=空進[i] or 多空=-多進[i] then begin
進出[i]:=多空*3; 多空:=-多空;
end;
end;
end;
end;
END;END;


(公式還有不懂得部分, 還在研究, 請板主先聚焦在如何讓公式只在當天的即時盤生效, 因為我希望每天都能獨立計算盈虧並且顯示)
如附圖顯示, 顯然的, 公式是每天都出現指標, 不是只在當天出現???
為什麼?

謝謝..

__________________
win365


由 cgjj 在 2013-01-06 19:37 發表:

回覆: 補充說

引用:
最初由 P2372 發表
感謝板主迅速的回覆, 好感動...
附上我的公式原碼:
IF DATATYPE=2 THEN BEGIN
DDD:=if( DATE>1121201,1,0);
IF numtostr(DDD,0)='1' THEN BEGIN
MH10:EMA(H+10,10);
ML10:EMA(L-10,10);
A:=IF(ML10<REF(ML10,1),(L<ML10-30)AND C>O,CROSS(C,MH10));//買進多單
DRAWICON(A,L-1,'B0');
X:=((C>MH10+30) OR (H>MH10 AND C<MH10)) AND COUNT(A,10)=0;//收盤>M30+30時多單平倉
DRAWICON(X,H+3,'S1');
S:=IF(MH10>REF(MH10,1),(H>MH10+30)AND C<O,CROSS(ML10,C));//買進空單(放空)
DRAWICON(S,H+5,'S0');
Z:=((C<ML10-30) OR (L<ML10 AND C>ML10)) AND COUNT(S,10)=0;//收盤<M30-30時空單平倉
DRAWICON(Z,L-2,'B1');


多進:=A or barpos=0;
多出:=X or barpos=0;
空進:=S or barpos=0;
空出:=Z or barpos=0;
強出:=(TIME=134000) OR (C>REF(C,BARSLAST(S))+20) OR (C<REF(C,BARSLAST(A))-20);
進出:C*0;
CC:=C;
多空:=0; //1.多 -1.空 0.無
盈虧:c*0 ;
for i = 1 to datacount do begin
if 多空=0 and 強出[i]=0 then
begin
多空:=多進[i]-空進[i];
進出[i]:=多空;
if 多空<>0 then 進價:=CC[i-1];
end
else if 多空<>0 then begin
盈虧[i]:=(CC[i]-進價)*多空;
if 強出[i] then begin
進出[i]:=多空*4; 多空:=0;
end else begin
if 多空=多出[i] or 多空=-空出[i] then begin
進出[i]:=多空*2; 多空:=0;
end else if 多空=空進[i] or 多空=-多進[i] then begin
進出[i]:=多空*3; 多空:=-多空;
end;
end;
end;
end;
END;END;


(公式還有不懂得部分, 還在研究, 請板主先聚焦在如何讓公式只在當天的即時盤生效, 因為我希望每天都能獨立計算盈虧並且顯示)
如附圖顯示, 顯然的, 公式是每天都出現指標, 不是只在當天出現???
為什麼?

謝謝..



您講的 "每天獨立計算盈虧?"
很抱歉, 不懂您的意思
這程式算的盈虧與 "天" 無任何關係唷

Re: 公式是每天都出現指標, 不是只在當天出現??? 為什麼?
假設數據有100根K棒, 公式有 16 行程式碼
奇狐並非是第一根算完那 16 行程式碼後, 才接下一根計算
奇狐是首行跑完那100根後. 才續跑下一行公式
觀念要先調整過來, 程式才能得到預期效果


由 P2372 在 2013-01-06 22:28 發表:

補充說明: 每天獨立計算盈虧的意思

經過幾天的研究, 看了很多版主的回覆, 我已經會從第1根k線開始計算, 並且紀錄多空方向, 買賣的虧損,
但是只能計算從第1根k線算起到第70000根(最後1根)k線的總盈虧???這不是我要的, 我只想知道我今天的早上8:45到13:45到底賺還是賠!

因為我必須計算5日移動平均線及10日平均線, 所以我盤中最少需要開放10*60=600根k線
附上我的圖形說明:

__________________
win365


由 P2372 在 2013-01-06 22:45 發表:

補充說明:

回復版主:
您提到:奇狐是首行跑完那100根後. 才續跑下一行公式,觀念要先調整過來, 程式才能得到預期效果

(回)這點我了解,
不會寫的部分是:
總共100根K線約=1~2天的時間寬度,
假設公式總共16行,
第10行計算出每天的早上10點01那根K線出現買訊條件成立,
每天的11點01出現賣訊, 現在時間是2013年1/4的早上10點,盤中即時盤,

如何寫IF DATE>1130103 THEN BEGIN
DRAWICON(賣訊條件成立,H+5,'S1');
DRAWICON(賣訊條件成立,H+5,'S1');
END;

也就是畫ICON只畫在1/4當天, 1/4以前都不畫?

(省略多空方向及計算盈虧及盈虧結果顯示的部分)
請指點迷津, 若有不清楚的, 我再詳細說明.謝謝!

__________________
win365


由 cgjj 在 2013-01-07 09:54 發表:

回覆: 補充說明:

引用:
最初由 P2372 發表
回復版主:
您提到:奇狐是首行跑完那100根後. 才續跑下一行公式,觀念要先調整過來, 程式才能得到預期效果

(回)這點我了解,
不會寫的部分是:
總共100根K線約=1~2天的時間寬度,
假設公式總共16行,
第10行計算出每天的早上10點01那根K線出現買訊條件成立,
每天的11點01出現賣訊, 現在時間是2013年1/4的早上10點,盤中即時盤,

如何寫IF DATE>1130103 THEN BEGIN
DRAWICON(賣訊條件成立,H+5,'S1');
DRAWICON(賣訊條件成立,H+5,'S1');
END;

也就是畫ICON只畫在1/4當天, 1/4以前都不畫?

(省略多空方向及計算盈虧及盈虧結果顯示的部分)
請指點迷津, 若有不清楚的, 我再詳細說明.謝謝!



這要分兩個部份來探討
一個是結果僅顯示當天(計算仍然歷史全算) <== 當做甲
另一個是結果僅算當天(計算起點自當天首根起算) <== 當做乙

為何要分兩個部份來探討?
因為您用到了 EMA
該函數原理, 本身有 "累算" 的成份在其中
數據起算點, 會影響 EMA 計算的值

若以甲來處理, 您僅需改為像這樣的判斷
DRAWICON(賣訊條件成立 and DATE>1130103, H+5, 'S1');

若要以乙來處理
建議您先評估是否適用後(針對EMA特性), 再進行處理


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


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

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