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

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


由 yetl 在 2007-12-16 12:44 發表:

請教寫法?

我想請教如何將兩種指標公式例如:KD及MACD合併後
有什麼方法 , 只出現一次的買進和賣出訊號?

RSV:= (CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);

DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:=EMA(DIFF,9);
MACD:=2*(DIFF-DEA),COLORSTICK;

ENTERLONG:CROSS(K,D) or CROSS(MACD,0);
EXITLONG:CROSS(D,K) or CROSS(0,MACD);


由 cgjj 在 2007-12-17 10:55 發表:

回覆: 請教寫法?

引用:
最初由 yetl 發表
我想請教如何將兩種指標公式例如:KD及MACD合併後
有什麼方法 , 只出現一次的買進和賣出訊號?

RSV:= (CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);

DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:=EMA(DIFF,9);
MACD:=2*(DIFF-DEA),COLORSTICK;

ENTERLONG:CROSS(K,D) or CROSS(MACD,0);
EXITLONG:CROSS(D,K) or CROSS(0,MACD);




緊接著後面加入

CK:=ENTERLONG-EXITLONG;
CK:=ref(CK,barslast(CK<>0));
CK:=if(CK<>ref(CK,1) or barpos=lbound(CK),CK,0);
ENTERLONG:=CK=1;
EXITLONG:=CK=-1;


關鍵字:過濾訊號過濾信號過濾


由 hgt08161 在 2009-08-07 20:54 發表:

謝謝版主
但是第1個
ENTERLONG 不會出來


由 cgjj 在 2009-08-08 14:25 發表:

引用:
最初由 hgt08161 發表
謝謝版主
但是第1個
ENTERLONG 不會出來



這段訊號過濾程式是不會造成此結果的

除非
該根 K棒 ENTERLONG 本來就不存在
或者
ENTERLONG 和 EXITLONG 在同根K棒
過濾後會被視為無訊號

設計者應該避免後者的情形發生


由 entercat 在 2009-08-17 13:55 發表:

回覆: 回覆: 請教寫法?

引用:
最初由 cgjj 發表
緊接著後面加入

CK:=ENTERLONG-EXITLONG;
CK:=ref(CK,barslast(CK<>0));
CK:=if(CK<>ref(CK,1) or barpos=lbound(CK),CK,0);
ENTERLONG:=CK=1;
EXITLONG:=CK=-1;


關鍵字:過濾訊號過濾信號過濾



請問如果我想每十分鐘,輸出 ck 信號,要如何作?
謝謝!


由 cgjj 在 2009-08-17 14:29 發表:

回覆: 回覆: 回覆: 請教寫法?

引用:
最初由 entercat 發表
請問如果我想每十分鐘,輸出 ck 信號,要如何作?
謝謝!



什麼都不用做
指標有套用的情況下
Ck信號會隨時依據行情反應在K線的畫面上


由 entercat 在 2009-08-18 09:23 發表:

回覆: 回覆: 回覆: 回覆: 請教寫法?

引用:
最初由 cgjj 發表
什麼都不用做
指標有套用的情況下
Ck信號會隨時依據行情反應在K線的畫面上



非常謝謝版主。
因為其間信號會時有時無跳動,
我想知道的是否能夠「每第十分鐘」才觸發一信號,以確定
ck 是1 或是 -1?


由 cgjj 在 2009-08-18 09:48 發表:

回覆: 回覆: 回覆: 回覆: 回覆: 請教寫法?

引用:
最初由 entercat 發表
非常謝謝版主。
因為其間信號會時有時無跳動,
我想知道的是否能夠「每第十分鐘」才觸發一信號,以確定
ck 是1 或是 -1?



行情時時在變, 一根K棒可能歷經多次變化
[每第十分鐘] 這樣的處理方式並不可靠
新行情進來, 程式就會立即表達最新結果
看畫面不就立即知道 CK 狀態了
何必多此一舉呢?


由 entercat 在 2009-08-18 09:52 發表:

回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 請教寫法?

引用:
最初由 cgjj 發表
行情時時在變, 一根K棒可能歷經多次變化
[每第十分鐘] 這樣的處理方式並不可靠
新行情進來, 程式就會立即表達最新結果
看畫面不就立即知道 CK 狀態了
何必多此一舉呢?



非常謝謝版主,
因為我想觸發下單機,作下單動作,
所以每十分鐘確定有無信號,
不然就得用眼睛人工看盤。


由 cgjj 在 2009-08-18 09:58 發表:

回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 請教寫法?

引用:
最初由 entercat 發表
非常謝謝版主,
因為我想觸發下單機,作下單動作,
所以每十分鐘確定有無信號,
不然就得用眼睛人工看盤。



還是要提醒您
不要陷入迷思當中 ....
[每十分鐘確定有無信號] 這個想法的出發點就錯嚕
要認知和認清
否則將會大大提升您所面對的風險


由 entercat 在 2009-08-18 09:59 發表:

回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 回覆: 請教寫法?

引用:
最初由 cgjj 發表
不要陷入迷思當中 ....
[每十分鐘確定有無信號] 這個想法的出發點就錯嚕
要認知和認清
否則將會大大提升您所面對的風險



非常謝謝版主提醒,我會改變思考方向的。


由 JIL 在 2009-08-31 16:53 發表:

引用:
最初由 cgjj 發表
這段訊號過濾程式是不會造成此結果的

除非
該根 K棒 ENTERLONG 本來就不存在
或者
ENTERLONG 和 EXITLONG 在同根K棒
過濾後會被視為無訊號

設計者應該避免後者的情形發生



請教總版主:
我在此段後面加了您所寫的過濾訊號
但只出現ENTERSHORT及EXITSHORT
EXITLONG及EXITLONG完全沒出現
我的訊號是同根K棒往上觸壓力作空、往下觸支撐作多
並且在壓力+20點停損,往下觸支撐-20點停損
如同下所述,用在期指
請教有辦法解決訊號不見的方式嗎? 感謝~

EnterLong:L<=WW;
ExitLong:L<=WW-20;
EnterShort:H>=SS;
ExitShort:H>=SS+20;


由 cgjj 在 2009-08-31 16:56 發表:

引用:
最初由 JIL 發表
請教總版主:
我在此段後面加了您所寫的過濾訊號
但只出現ENTERSHORT及EXITSHORT
EXITLONG及EXITLONG完全沒出現
我的訊號是同根K棒往上觸壓力作空、往下觸支撐作多
並且在壓力+20點停損,往下觸支撐-20點停損
如同下所述,用在期指
請教有辦法解決訊號不見的方式嗎? 感謝~

EnterLong:L<=WW;
ExitLong:L<=WW-20;
EnterShort:H>=SS;
ExitShort:H>=SS+20;



請附上完整公式原碼, 否則難以協助


由 JIL 在 2009-08-31 17:07 發表:

因為小弟剛學習奇狐平台的交易系統撰寫
所以目前只先練習寫一小段,測試看看,了解奇狐的寫法
目前所寫的就只有這些,謝謝幫忙~

每一根K會有計算出來的壓力及支撐價,壓力價在上,支撐價在下

SS:="關鍵價.今壓力#MIN60";
WW:="關鍵價.今支撐#MIN60";

SK:=date<>ref(date,1);
SP:=barslast(SK)+1;
EnterLong:L<=WW;
ExitLong:L<=WW-20;
EnterShort:H>=SS;
ExitShort:H>=SS+20;

CK:=ENTERLONG-EXITLONG;
CK:=ref(CK,barslast(CK<>0));
CK:=if(CK<>ref(CK,1) or barpos=lbound(CK),CK,0);
ENTERLONG:=CK=1;
EXITLONG:=CK=-1;


由 cgjj 在 2009-08-31 17:16 發表:

引用:
最初由 JIL 發表
因為小弟剛學習奇狐平台的交易系統撰寫
所以目前只先練習寫一小段,測試看看,了解奇狐的寫法
目前所寫的就只有這些,謝謝幫忙~

每一根K會有計算出來的壓力及支撐價,壓力價在上,支撐價在下

SS:="關鍵價.今壓力#MIN60";
WW:="關鍵價.今支撐#MIN60";

SK:=date<>ref(date,1);
SP:=barslast(SK)+1;
EnterLong:L<=WW;
ExitLong:L<=WW-20;
EnterShort:H>=SS;
ExitShort:H>=SS+20;

CK:=ENTERLONG-EXITLONG;
CK:=ref(CK,barslast(CK<>0));
CK:=if(CK<>ref(CK,1) or barpos=lbound(CK),CK,0);
ENTERLONG:=CK=1;
EXITLONG:=CK=-1;



問題不在訊號過濾, 而是在於邏輯規則

EnterLong:L<=WW;
ExitLong:L<=WW-20

按這規則
ExitLong 成立時, EnterLong 必定成立
這就是問題所在


由 JIL 在 2009-08-31 17:19 發表:

引用:
最初由 cgjj 發表
問題不在訊號過濾, 而是在於邏輯規則

EnterLong:L<=WW;
ExitLong:L<=WW-20

按這規則
ExitLong 成立時, EnterLong 必定成立
這就是問題所在



請教有什麼辦法可以達到我希望的動作嗎?
觸到WW作多,但如果繼續往下跌20點就停損
還有同時反手作空,停損WW這個價
雙巴就停止發出訊號,都是在同一根K
不好意思新手發問,問題比較笨~


由 JIL 在 2009-08-31 18:02 發表:

兩組的中間加了Exit中斷點,EnterLong、ExitLong就可以正常運作
兩組一起跑就不行,真奇怪~

EnterLong:L<=WW;
ExitLong:L<=WW-20;
Exit;
EnterShort:H>=SS;
ExitShort:H>=SS+20;

另外發現還有個問題,EnetrLong已經進場了,而ExitLong還沒出現平倉訊號,
下一K遇到條件符合時,EnterLong又出現1,等於又作了第二筆,
請教有什麼方法可以讓ExitLong還沒出現1(平倉訊號)之前EnterLong不要出現?

請問有解嗎? 還是真的無解?
請總版主或其他先進給新手指導一下
真的感謝!


由 cgjj 在 2009-09-01 11:36 發表:

看看這結果是否為您要的



EnterLong:L<=WW;
ExitLong:L<=WW-20

改為

ExitLong:L<=WW-20
EnterLong:L<=WW and ExitLong=0;

Short 的作法亦同


Re:請教有什麼方法可以讓ExitLong還沒出現1(平倉訊號)之前EnterLong不要出現?
答案就在本主題文章第二篇


由 JIL 在 2009-09-01 11:53 發表:

引用:
最初由 cgjj 發表
看看這結果是否為您要的



EnterLong:L<=WW;
ExitLong:L<=WW-20

改為

ExitLong:L<=WW-20
EnterLong:L<=WW and ExitLong=0;

Short 的作法亦同


Re:請教有什麼方法可以讓ExitLong還沒出現1(平倉訊號)之前EnterLong不要出現?
答案就在本主題文章第二篇



謝謝總版主,但改了還是一樣沒訊號出來,EXIT中斷就可以。


由 cgjj 在 2009-09-01 11:57 發表:

引用:
最初由 JIL 發表
謝謝總版主,但改了還是一樣沒訊號出來,EXIT中斷就可以。


Short 有跟著改嗎?

若仍會
那麼代表你 Exit 之後的程式會影響前面的計算結果
後續應該還有其他程式碼吧?

不然就是訊號疊在一起了


由 JIL 在 2009-09-01 12:05 發表:

引用:
最初由 cgjj 發表
Short 有跟著改嗎?

若仍會
那麼代表你 Exit 之後的程式會影響前面的計算結果
後續應該還有其他程式碼吧?

不然就是訊號疊在一起了



後面只加了您寫的過濾訊號那段:
CK:=ENTERLONG-EXITLONG;
CK:=ref(CK,barslast(CK<>0));
CK:=if(CK<>ref(CK,1) or barpos=lbound(CK),CK,0);
ENTERLONG:=CK=1;
EXITLONG:=CK=-1;

但是拿掉這段就可以跑了,怪~


由 cgjj 在 2009-09-01 12:11 發表:

引用:
最初由 JIL 發表
後面只加了您寫的過濾訊號那段:
CK:=ENTERLONG-EXITLONG;
CK:=ref(CK,barslast(CK<>0));
CK:=if(CK<>ref(CK,1) or barpos=lbound(CK),CK,0);
ENTERLONG:=CK=1;
EXITLONG:=CK=-1;

但是拿掉這段就可以跑了,怪~



您把K線圖縮到最小看看, 應該就可看到嚕

這樣
把K線圖縮到最小
貼張沒加過濾的訊號圖
再一貼張有加過濾的訊號圖
來看看吧


由 JIL 在 2009-09-01 12:14 發表:

引用:
最初由 cgjj 發表
您把K線圖縮到最小看看, 應該就可看到嚕

這樣
把K線圖縮到最小
貼張沒加過濾的訊號圖
再一貼張有加過濾的訊號圖
來看看吧



沒用過貼圖,還不會貼圖
我想到一個方法,我先試試看
不行再貼出來請您幫我檢查
感謝!


由 JIL 在 2009-09-01 17:31 發表:

我用新的邏輯把公式重寫,寫到這裡卡住,
奇狐好像沒有提供流程控制的If或Select Case,寫不出來...

我想寫的其實不複雜,往上觸轉強作空,停損20點,
觸停損反手作多,停損設轉強,
雙巴當天就不再進場,若有獲利也不再進場;
反之往下觸轉弱作多亦然。

用在日K上,因為日K不好測試,所以我寫60分K來測試。

作多:O>轉弱60 and C<=O;
作空:O<轉強60 and C>=O;
多進:IF(L<=轉弱60,1,0);
多出:IF(L<=轉弱60-20,1,0);
空進:IF(H>=轉強60,1,0);
空出:IF(H>=轉強60+20,1,0);
多進倉:IF(作多,多進,0);
多平倉:IF(多出,多出,0);
多損反手空:IF(多進倉+多平倉>=2,3,0);
停手:IF(多損反手空>=3,4,0);

接下來不知道該如何讓奇狐中止公式判斷...
希望有人可以幫忙新手,先說謝謝!


由 cgjj 在 2009-09-02 10:09 發表:

引用:
最初由 JIL 發表
我用新的邏輯把公式重寫,寫到這裡卡住,
奇狐好像沒有提供流程控制的If或Select Case,寫不出來...

我想寫的其實不複雜,往上觸轉強作空,停損20點,
觸停損反手作多,停損設轉強,
雙巴當天就不再進場,若有獲利也不再進場;
反之往下觸轉弱作多亦然。

用在日K上,因為日K不好測試,所以我寫60分K來測試。

作多:O>轉弱60 and C<=O;
作空:O<轉強60 and C>=O;
多進:IF(L<=轉弱60,1,0);
多出:IF(L<=轉弱60-20,1,0);
空進:IF(H>=轉強60,1,0);
空出:IF(H>=轉強60+20,1,0);
多進倉:IF(作多,多進,0);
多平倉:IF(多出,多出,0);
多損反手空:IF(多進倉+多平倉>=2,3,0);
停手:IF(多損反手空>=3,4,0);

接下來不知道該如何讓奇狐中止公式判斷...
希望有人可以幫忙新手,先說謝謝!



有提供流程控制的If, 請見:
http://www.chiefox.com.tw/bbs/showt...=&threadid=2646

看看這範例, 可能對您有幫助
http://www.chiefox.com.tw/bbs/showt...&threadid=11818

邏輯定義詳細解說清楚, 公式提供完整
這樣才好讓協助您的人容易處理唷


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


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

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