到奇狐勝券首頁 奇狐社區論壇 購買奇狐勝券 試用奇狐勝券
 
論壇首頁 你可以在這裡編輯你的資料,查看短訊,訂閱主題和論壇參數等等 免費會員註冊 會員列表 論壇幫助 論壇日曆 論壇搜索 加入我的最愛 登出論壇  
奇狐社區論壇 : Powered by vBulletin version 2.3.0 奇狐社區論壇 > 指標公式 > 問題交流 > [求救]我想在5分鐘K線中,先判斷是今天才計算公式, 請問哪裡錯了, 應該如何寫?
  上一主題   下一主題
作者
主題 發表新主題    回覆主題
P2372
中級會員

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

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

本主您好:

我的公式如下:

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


END;
END;


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

__________________
win365

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

註冊日期: Sep 2004
來  自: 台中
文章數量: 332

回覆: [求救]我想在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

__________________

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

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


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

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

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

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

我的公式如下:

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


END;
END;


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



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

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

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

問題 補充說

感謝板主迅速的回覆, 好感動...
附上我的公式原碼:
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;


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

謝謝..

P2372 附帶上了此圖片:

__________________
win365

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

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

回覆: 補充說

引用:
最初由 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根後. 才續跑下一行公式
觀念要先調整過來, 程式才能得到預期效果

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

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

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

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

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

P2372 附帶上了此圖片:

__________________
win365

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

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

補充說明:

回復版主:
您提到:奇狐是首行跑完那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

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

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

回覆: 補充說明:

引用:
最初由 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特性), 再進行處理

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

論壇跳轉:
主題評分:

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