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

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


由 king220.shih 在 2009-10-23 02:45 發表:

[求救]有主圖均線與副圖指標依據的程式要怎麼寫?

我已經改好DMI的指標了,可是因為要主副圖一起參照,所以,
我就只能乾瞪眼了!有人可以幫忙嗎?感激不盡!!




附圖檔如上和DMI指標程式碼---非當沖單
指標:15分鐘K線,ma20,DMI指標(14天,正DI與負DI即可)
名稱:DMI均線指標

策略說明:

1.買進時機:(當 正DI>負DI 且 (成交價-MA20)/MA20<0.015 ),市價買進,並開始執行a b c d e

====>此時賣出時機(平倉)
a. 正DI<負DI ----------->回到買進時機和賣出時機
b. 正DI>48 ----------->停單並於後第七根K棒後,回到買進時機和賣出時機
c. 負DI<11 ----------->停單並於後第七根K棒後,回到買進時機和賣出時機
d. 15分K連續六根紅K ----------->停單並於後第七根K棒後,回到買進時機和賣出時機
e. (成交價-MA20)/MA20 >0.015 ----------->停單並於後第七根K棒後,回到買進時機和賣出時機


2.賣出時機:(當 正DI<負DI 且 (MA20-成交價)/MA20<0.015 ),市價賣出,並開始執行a b c d e

======>此時買進時機(平倉)

a. 正DI>負DI ----------->回到買進時機和賣出時機
b. 負DI>48 ----------->停單並於後第七根K棒後,回到買進時機和賣出時機
c. 正DI<11 ----------->停單並於後第七根K棒後,回到買進時機和賣出時機
d. 15分K連續六根黑K ----------->停單並於後第七根K棒後,回到買進時機和賣出時機
e. (MA20-成交價)/MA20 >0.015 ----------->停單並於後第七根K棒後,回到買進時機和賣出時機

---------------------------------------------------------------------
PS:附上DMI的公式程式碼:

//DMI公式
{Directional Movement Indicator , DMI , 動向指標 修正算法}
TR:=SMA(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),N,1);
HD:=HIGH-REF(HIGH,1);
LD:=REF(LOW,1)-LOW;
DMP:=SMA(IF(HD>0 AND HD>LD,HD,0),N,1);
DMM:=SMA(IF(LD>0 AND LD>HD,LD,0),N,1);
正DI:DMP*100/TR,coloryellow;
負DI:DMM*100/TR,color8470FF;

//均線20
MA20:MA(C,20);

-------------------------------------------------------------------------


由 cgjj 在 2009-10-23 18:29 發表:

回覆: [求救]有主圖均線與副圖指標依據的程式要怎麼寫?

引用:
最初由 king220.shih 發表
我已經改好DMI的指標了,可是因為要主副圖一起參照,所以,
我就只能乾瞪眼了!有人可以幫忙嗎?感激不盡!!




附圖檔如上和DMI指標程式碼---非當沖單
指標:15分鐘K線,ma20,DMI指標(14天,正DI與負DI即可)
名稱:DMI均線指標

策略說明:

1.買進時機:(當 正DI>負DI 且 (成交價-MA20)/MA20<0.015 ),市價買進,並開始執行a b c d e

====>此時賣出時機(平倉)
a. 正DI<負DI ----------->回到買進時機和賣出時機
b. 正DI>48 ----------->停單並於後第七根K棒後,回到買進時機和賣出時機
c. 負DI<11 ----------->停單並於後第七根K棒後,回到買進時機和賣出時機
d. 15分K連續六根紅K ----------->停單並於後第七根K棒後,回到買進時機和賣出時機
e. (成交價-MA20)/MA20 >0.015 ----------->停單並於後第七根K棒後,回到買進時機和賣出時機


2.賣出時機:(當 正DI<負DI 且 (MA20-成交價)/MA20<0.015 ),市價賣出,並開始執行a b c d e

======>此時買進時機(平倉)

a. 正DI>負DI ----------->回到買進時機和賣出時機
b. 負DI>48 ----------->停單並於後第七根K棒後,回到買進時機和賣出時機
c. 正DI<11 ----------->停單並於後第七根K棒後,回到買進時機和賣出時機
d. 15分K連續六根黑K ----------->停單並於後第七根K棒後,回到買進時機和賣出時機
e. (MA20-成交價)/MA20 >0.015 ----------->停單並於後第七根K棒後,回到買進時機和賣出時機

---------------------------------------------------------------------
PS:附上DMI的公式程式碼:

//DMI公式
{Directional Movement Indicator , DMI , 動向指標 修正算法}
TR:=SMA(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),N,1);
HD:=HIGH-REF(HIGH,1);
LD:=REF(LOW,1)-LOW;
DMP:=SMA(IF(HD>0 AND HD>LD,HD,0),N,1);
DMM:=SMA(IF(LD>0 AND LD>HD,LD,0),N,1);
正DI:DMP*100/TR,coloryellow;
負DI:DMM*100/TR,color8470FF;

//均線20
MA20:MA(C,20);

-------------------------------------------------------------------------



做出來的結果非常奇怪, 常有這根進隔根就出的狀況:
請再確認條件或再詳述一下規則


由 king220.shih 在 2009-10-23 21:29 發表:

cgjj總版主 安安

結果奇怪沒有關係,我只是想要知道這樣的條件要如何敘述,
並且有沒有邏輯上的問題,尤其是停單並於後第七根K棒後,回
到買進時機和賣出時機,這樣的邏輯要如何用程式語言表達?

寫程式本身是種樂趣,比做單快樂很多,所以會有許多的邏輯
想法想知道要如何表達,這支程式的重點,只是想要了解主副
圖同時引用參照的寫作語法,與要如何在出場後讓程式觀望七
根後,再回到買進與賣出時機。

如果邏輯有誤可以修改,如果只是結果奇怪,那沒有關係,寫
出來後再慢慢修改即可。我有買技術指標通論,但是書中沒有
詳述這類的狀況,所以只好上來求助總版主,我也有去問過程
式設計的老師,但是老師說,他沒有證券期貨的專業,所以也
愛莫能助。

最後,我想還是只能求助總版主再個寫範例來讓我研究研究了
!感激不盡!甘溫啦!


由 cgjj 在 2009-10-23 22:03 發表:

引用:
最初由 king220.shih 發表
cgjj總版主 安安

結果奇怪沒有關係,我只是想要知道這樣的條件要如何敘述,
並且有沒有邏輯上的問題,尤其是停單並於後第七根K棒後,回
到買進時機和賣出時機,這樣的邏輯要如何用程式語言表達?

寫程式本身是種樂趣,比做單快樂很多,所以會有許多的邏輯
想法想知道要如何表達,這支程式的重點,只是想要了解主副
圖同時引用參照的寫作語法,與要如何在出場後讓程式觀望七
根後,再回到買進與賣出時機。

如果邏輯有誤可以修改,如果只是結果奇怪,那沒有關係,寫
出來後再慢慢修改即可。我有買技術指標通論,但是書中沒有
詳述這類的狀況,所以只好上來求助總版主,我也有去問過程
式設計的老師,但是老師說,他沒有證券期貨的專業,所以也
愛莫能助。

最後,我想還是只能求助總版主再個寫範例來讓我研究研究了
!感激不盡!甘溫啦!




原碼:

TRR
:=SMA(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),N,1);
HD:=HIGH-REF(HIGH,1);
LD:=REF(LOW,1)-LOW;
DMP:=SMA(IF(HD>AND HD>LD,HD,0),N,1);
DMM:=SMA(IF(LD>AND LD>HD,LD,0),N,1);
正DI:=DMP*100/TRR,coloryellow;
負DI:=DMM*100/TRR,color8470FF;
MA20:=MA(C,20);

多s:=正DI>負DI and (C-MA20)/MA20<0.015 or barpos=0;
空s:=正DI<負DI and (MA20-C)/MA20<0.015 or barpos=0;
多a:=正DI<負DI or barpos=0;
多b:=正DI>48;
多c:=負DI<11;
多d:=sum(C>O,6)=6;
多e:=(C-MA20)/MA20>0.015;
多z:=多b or 多c or 多d or 多e or barpos=0;
空a:=正DI>負DI or barpos=0;
空b:=負DI>48;
空c:=正DI<11;
空d:=sum(C<O,6)=6;
空e:=(MA20-C)/MA20>0.015;
空z:=空b or 空c or 空d or 空e or barpos=0;
進向:多s-空s linethick0
出向a:多a-空a linethick0
出向z:多z-空z linethick0;

多空:=0//1.多, -1.空, 0.無
進出:c*0//1.為多單進場, 2.為多單平倉, -1.為空單賣出, -2.為空單回補, 0.無
LockN:=0;
for 
i1 to datacount do begin
  
if 多空=and LockN=0 then begin
    多空
:=進向[i]; 進出[i]:=多空;
  
end else if 多空<>0 then begin
    
if 多空=出向a[ithen begin
      進出
[i]:=多空*2多空:=0;
    
end else if 多空=出向z[ithen begin
      進出
[i]:=多空*2多空:=0LockN:=7;
    
end;
  
end;
  if 
LockN>0 then LockN:=LockN-1;
end;


由 king220.shih 在 2009-10-23 22:44 發表:

哇!感謝,又有功課可以做了。感激不盡。
週休二日就來研究這些原碼,希望可以再增
加功力。原來寫程式是會上癮的。甘溫啦!


由 king220.shih 在 2009-10-23 23:54 發表:

原來時間控制可以用這種語法
if LockN>0 then LockN:=LockN-1;
果然沒有寫不出來的程式,感謝囉!


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


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

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