![]()  | 
	在這個頁面顯示本主題全部的 20 個文章  | 
奇狐社區論壇 (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=19103)
如何在同一操作周期當中,限縮買賣點次數
請教總版主
Bullmust:=AR1A>=10 ;
Bearmust:=AR1A<=-10 ;    
BullMC:=ref(Bullmust,1)=0 and Bullmust=1;
BearMC:=ref(Bearmust,1)=0 and Bearmust=1;
BullCD:=IF(Bullmust=1,Barslast(BullMC)+1,0);
BearCD:=IF(Bearmust=1,Barslast(BearMC)+1,0);
操作週期數A:IF(Bullmust=1 ,BullCD,-BearCD),color0099ff,precision0,linethick0; ##  正值作多,負值作空 ##
買訊1:=cross(R1A,20) ;
買訊2:=cross(R1A,40) ;
買訊3:=cross(R1A,60) ;
賣訊1:=cross(60,R2A);
賣訊2:=cross(30,R2A) ;
賣訊3:=cross(10,R2A) ; 
 
賣訊4:=cross(30,R1A) ;   
### 作空部分省略 ###
請教三個撰寫需求:
需求一:上面的<操作周期數>目前運作正常,但公式不夠簡潔,請問應該如何修改
需求二:上面的三個買訊與三個買訊,如何讓它們在同一個 <操作周期數> 中 (作多、與作空必須獨立成兩個不同週期),永遠只成立一次
舉例:  操作週期 從 1~20的過程中,曾經 在第三周期時cross(R1A,20) ,此時買訊1 成立,後來在第 五個週期R1A=10,然後在第8週期時再次 cross(R1A,20) 
希望 第8週期不要有買進動作,其餘類推
需求三: 兩個操作周期數取其一運用
Bullmust:=R1A>=30 ;
Bearmust:=R1A<=-30;    
BullMC:=ref(Bullmust,1)=0 and Bullmust=1;
BearMC:=ref(Bearmust,1)=0 and Bearmust=1;
BullCD:=IF(Bullmust=1,Barslast(BullMC)+1,0);
BearCD:=IF(Bearmust=1,Barslast(BearMC)+1,0);
操作週期數B:IF(Bullmust=1 ,BullCD,-BearCD),color0099ff,precision0,linethick0; ##  正值作多,負值作空 ##
希望達到:  這兩個操作周期同時比較,領先達到 轉多(操作週期>0) 或是 轉空(操作週期<0) 者,作為該週期的 起訖點
例如:  操作週期 A 比 操作週期 B 快了一天 cross(操作週期A,0),則本波段就以操作週期 A為該週期的 Start 以及 end
感謝您的協助
新春愉快!
回覆: 如何在同一操作周期當中,限縮買賣點次數
引用:
最初由 tycoon868 發表
請教總版主
Bullmust:=AR1A>=10 ;
Bearmust:=AR1A<=-10 ;
BullMC:=ref(Bullmust,1)=0 and Bullmust=1;
BearMC:=ref(Bearmust,1)=0 and Bearmust=1;
BullCD:=IF(Bullmust=1,Barslast(BullMC)+1,0);
BearCD:=IF(Bearmust=1,Barslast(BearMC)+1,0);
操作週期數A:IF(Bullmust=1 ,BullCD,-BearCD),color0099ff,precision0,linethick0; ## 正值作多,負值作空 ##
買訊1:=cross(R1A,20) ;
買訊2:=cross(R1A,40) ;
買訊3:=cross(R1A,60) ;
賣訊1:=cross(60,R2A);
賣訊2:=cross(30,R2A) ;
賣訊3:=cross(10,R2A) ;
賣訊4:=cross(30,R1A) ;
### 作空部分省略 ###
請教三個撰寫需求:
需求一:上面的<操作周期數>目前運作正常,但公式不夠簡潔,請問應該如何修改
回覆: 如何在同一操作周期當中,限縮買賣點次數
引用:
最初由 tycoon868 發表
請教總版主
..............
需求二:上面的三個買訊與三個買訊,如何讓它們在同一個 <操作周期數> 中 (作多、與作空必須獨立成兩個不同週期),永遠只成立一次
舉例: 操作週期 從 1~20的過程中,曾經 在第三周期時cross(R1A,20) ,此時買訊1 成立,後來在第 五個週期R1A=10,然後在第8週期時再次 cross(R1A,20)
希望 第8週期不要有買進動作,其餘類推
回覆: 如何在同一操作周期當中,限縮買賣點次數
引用:
最初由 tycoon868 發表
請教總版主
需求三: 兩個操作周期數取其一運用
Bullmust:=R1A>=30 ;
Bearmust:=R1A<=-30;
BullMC:=ref(Bullmust,1)=0 and Bullmust=1;
BearMC:=ref(Bearmust,1)=0 and Bearmust=1;
BullCD:=IF(Bullmust=1,Barslast(BullMC)+1,0);
BearCD:=IF(Bearmust=1,Barslast(BearMC)+1,0);
操作週期數B:IF(Bullmust=1 ,BullCD,-BearCD),color0099ff,precision0,linethick0; ## 正值作多,負值作空 ##
希望達到: 這兩個操作周期同時比較,領先達到 轉多(操作週期>0) 或是 轉空(操作週期<0) 者,作為該週期的 起訖點
例如: 操作週期 A 比 操作週期 B 快了一天 cross(操作週期A,0),則本波段就以操作週期 A為該週期的 Start 以及 end
感謝總版主
只會像是以下
前一周期 操作週期數A=0 and 操作週期數B=0
當前周期 操作週期數A=1 and 操作週期數B=0
或者是
前一周期 操作週期數A=0 and 操作週期數B=0
當前周期 操作週期數A=0 and 操作週期數B=1
真的不會有反向互斥,只會有快慢1~2天的情況,
但是常常會有同步的時候
最主要是要爭取這1~2天的時間差
麻煩您了
引用:
最初由 tycoon868 發表
感謝總版主
只會像是以下
前一周期 操作週期數A=0 and 操作週期數B=0
當前周期 操作週期數A=1 and 操作週期數B=0
或者是
前一周期 操作週期數A=0 and 操作週期數B=0
當前周期 操作週期數A=0 and 操作週期數B=1
真的不會有反向互斥,只會有快慢1~2天的情況,
但是常常會有同步的時候
最主要是要爭取這1~2天的時間差
麻煩您了
感謝
AA:=(AR1A>=10)-(AR1A<=-10);
BB:=(R1A>=30)-(R1A<=-30);
SS:=SGN(AA+BB);
操作週期數:sum(SS,barslast(SS<>ref(SS,1) or barpos=1)+1);
上面原碼套入結果如下:
1. 目前起點是正確的,
舉例說明:  (R1A>=30) 第一天成立,第二天才成立 (AR1A>=10)
此時的操作周期數正確無誤
2. 但是 結束點還需要調整成以下的方式:
延續上例: 第八天  R1A首次跌破30,第十天 AR1A 才跌破10
我的需求是:  第八天 應該是 操作周期數=0 ,而不是等到第十天才歸零
也就是說:  該波段操作周期的起點 如果是 AA  啟動,也應該由AA 結束 (BB亦然)
反向作空的部分也是比照處理
感謝您的支援,真的是第一次知道有 SGN 這個函數,所以看不太懂,謝謝您
引用:
最初由 tycoon868 發表
感謝
AA:=(AR1A>=10)-(AR1A<=-10);
BB:=(R1A>=30)-(R1A<=-30);
SS:=SGN(AA+BB);
操作週期數:sum(SS,barslast(SS<>ref(SS,1) or barpos=1)+1);
上面原碼套入結果如下:
1. 目前起點是正確的,
舉例說明: (R1A>=30) 第一天成立,第二天才成立 (AR1A>=10)
此時的操作周期數正確無誤
2. 但是 結束點還需要調整成以下的方式:
延續上例: 第八天 R1A首次跌破30,第十天 AR1A 才跌破10
我的需求是: 第八天 應該是 操作周期數=0 ,而不是等到第十天才歸零
也就是說: 該波段操作周期的起點 如果是 AA 啟動,也應該由AA 結束 (BB亦然)
反向作空的部分也是比照處理
感謝您的支援,真的是第一次知道有 SGN 這個函數,所以看不太懂,謝謝您
您所提到的:
<你要去看 第八天 R1A首次跌破30 時
是否為直接由多轉為空?
若是如此
不會是零,轉空的那根操作周期數為-1>
因為漲跌幅限制的關係,真的一定會先歸零,絕對不會直接從 +31 滑落到 -31,這部分我很確定
其實AA跟BB 這兩個條件很接近,只是因應個股不同的情況,偶而會產生1~2天的落差,我只是想要做成複合式的轉折天數,來避免掉這個落後性  (有時是 AA 領先,有時又是 BB 領先)  
請您先教我怎麼處理這部分:    <該波段操作周期的起點 如果是 AA 啟動,也應該由AA 結束 (BB亦然)
反向作空的部分也是比照處理>
套入成功後,如果真的出現衝突,我會自行調校 AA 與 BB 的條件式
謝謝~
引用:
最初由 tycoon868 發表
您所提到的:
<你要去看 第八天 R1A首次跌破30 時
是否為直接由多轉為空?
若是如此
不會是零,轉空的那根操作周期數為-1>
因為漲跌幅限制的關係,真的一定會先歸零,絕對不會直接從 +31 滑落到 -31,這部分我很確定
其實AA跟BB 這兩個條件很接近,只是因應個股不同的情況,偶而會產生1~2天的落差,我只是想要做成複合式的轉折天數,來避免掉這個落後性 (有時是 AA 領先,有時又是 BB 領先)
請您先教我怎麼處理這部分: <該波段操作周期的起點 如果是 AA 啟動,也應該由AA 結束 (BB亦然)
反向作空的部分也是比照處理>
套入成功後,如果真的出現衝突,我會自行調校 AA 與 BB 的條件式
謝謝~
<<<<第八天 R1A首次跌破30
此時這式子
BB:=(R1A>=30)-(R1A<=-30);
相等於 BB:= 0 - 1;
BB 值得到為 -1
故得到的操作週期數為 -1>>>>
R1A 介於  正負 29.9 時,BB:=0-0=0 才對啊,版主似乎沒看仔細 - 30
而且這個歸零的數值絕對會成立在某一根K棒上
<<<<<何來的零呢?
僅只有 AA 和 BB 都為零時
操作周期數才會是零值
何時歸零請明確定義清楚!!>>>>>>>
AA 與 BB 歸零的機率都很高的
希望可以由  AA啟動,就由 AA 歸零(忽略BB歸零)
拜託了
引用:
最初由 tycoon868 發表
<<<<第八天 R1A首次跌破30
此時這式子
BB:=(R1A>=30)-(R1A<=-30);
相等於 BB:= 0 - 1;
BB 值得到為 -1
故得到的操作週期數為 -1>>>>
R1A 介於 正負 29.9 時,BB:=0-0=0 才對啊,版主似乎沒看仔細 - 30
而且這個歸零的數值絕對會成立在某一根K棒上
<<<<<何來的零呢?
僅只有 AA 和 BB 都為零時
操作周期數才會是零值
何時歸零請明確定義清楚!!>>>>>>>
AA 與 BB 歸零的機率都很高的
希望可以由 AA啟動,就由 AA 歸零(忽略BB歸零)
拜託了
原碼:
AA:=(AR1A>=10 or barpos=0)-(AR1A<=-10 or barpos=0); BB:=(R1A>=30 or barpos=0)-(R1A<=-30 or barpos=0); NowAB:=0; 操作週期數:C*0; for i=1 to datacount do begin if NowAB=0 then begin NowAB:=AA[i]+BB[i]*2; 操作週期數[i]:=SGN(NowAB); end else if NowAB<>0 then begin 操作週期數[i]:=操作週期數[i-1]+SGN(NowAB); if ABS(NowAB)=(AA[i]=0)+(BB[i]=0)*2 then begin NowAB:=0; 操作週期數[i]:=0; end; end; end;
感謝版主
上面的原碼套入測試以後,BB 領先了 AA 一天,卻還是由 AA 當 <啟動點>
我的需求是:  BB 應該是該波段的  啟動點,直到 BB 的 R1A 跌破 30  (做為結束點)
我覺得這樣的條件式太複雜,已經決定暫時擱下
**********  下面這一個已經很接近我所預期的結果 ,但是需要針對下方四個定義作修改 ************
AA:=(AR1A>=10)-(AR1A<=-10);
BB:=(R1A>=30)-(R1A<=-30);
SS:=SGN(AA+BB);
操作週期數:sum(SS,barslast(SS<>ref(SS,1) or barpos=1)+1);
********************  重新定義需求如下 ********************
1. R1A 突破 30 的當根K棒(不管AR1A了),當成 <作多啟動點> 的開始,此時操作周期數= 1
2. 此操作周期數進行的過程中,AR1A 跌破 10  的當根K棒,當成 <作多結束點> 的開始,此時操作周期數= 0 (直到 下一個啟動點)
3. R1A 跌破 - 30 的當根K棒(不管AR1A了),當成 <作空啟動點> 的開始,此時操作周期數= - 1
4. 此操作周期數進行的過程中,AR1A 突破 -10  的當根K棒,當成 <作多結束點> 的開始,此時操作周期數=0 (直到 下一個啟動點)
#####   請總版主 協助修改 ,指標內涵的部分如果有衝突, 我會自行調校參數   ######
謝謝您
引用:
最初由 tycoon868 發表
感謝版主
上面的原碼套入測試以後,BB 領先了 AA 一天,卻還是由 AA 當 <啟動點>
我的需求是: BB 應該是該波段的 啟動點,直到 BB 的 R1A 跌破 30 (做為結束點)
我覺得這樣的條件式太複雜,已經決定暫時擱下
********** 下面這一個已經很接近我所預期的結果 ,但是需要針對下方四個定義作修改 ************
AA:=(AR1A>=10)-(AR1A<=-10);
BB:=(R1A>=30)-(R1A<=-30);
SS:=SGN(AA+BB);
操作週期數:sum(SS,barslast(SS<>ref(SS,1) or barpos=1)+1);
******************** 重新定義需求如下 ********************
1. R1A 突破 30 的當根K棒(不管AR1A了),當成 <作多啟動點> 的開始,此時操作周期數= 1
2. 此操作周期數進行的過程中,AR1A 跌破 10 的當根K棒,當成 <作多結束點> 的開始,此時操作周期數= 0 (直到 下一個啟動點)
3. R1A 跌破 - 30 的當根K棒(不管AR1A了),當成 <作空啟動點> 的開始,此時操作周期數= - 1
4. 此操作周期數進行的過程中,AR1A 突破 -10 的當根K棒,當成 <作多結束點> 的開始,此時操作周期數=0 (直到 下一個啟動點)
##### 請總版主 協助修改 ,指標內涵的部分如果有衝突, 我會自行調校參數 ######
謝謝您
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
除非 BB 和 AA 同時由零轉為不為零,才可能發生
要先釐清你的訊號特性,否則難以精確處理...
請檢驗
是否有 " BB 和 AA 同時由零轉為不為零" 的情況
若有如何處置?
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
抱歉哦,仔細套入驗證才知道
這個情況確實會常常發生,導致處理方式太複雜
所以真的決定簡化處理了
################  我的目的其實就是只有下面兩個  ################
1. 利用 R1A 比較敏感的特性,爭取< 啟動點> 的時效
2. 利用 AR1A 比較穩定的特性,來決定  <結束點>
********************所以就簡化成下方的需求 ********************
1. R1A 突破 30 的當根K棒(不管AR1A了),當成 <作多啟動點> 的開始,此時操作周期數= 1
2. 此操作周期數進行的過程中,AR1A 跌破 10 的當根K棒,當成 <作多結束點> 的開始,此時操作周期數= 0 (直到 下一個啟動點)
3. R1A 跌破 - 30 的當根K棒(不管AR1A了),當成 <作空啟動點> 的開始,此時操作周期數= - 1
4. 此操作周期數進行的過程中,AR1A 突破 -10 的當根K棒,當成 <作多結束點> 的開始,此時操作周期數=0 (直到 下一個啟動點)
##### 請總版主 協助修改 ,指標內涵的部分如果有衝突, 我會自行調校參數 ######
謝謝您
引用:
最初由 tycoon868 發表
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
除非 BB 和 AA 同時由零轉為不為零,才可能發生
要先釐清你的訊號特性,否則難以精確處理...
請檢驗
是否有 " BB 和 AA 同時由零轉為不為零" 的情況
若有如何處置?
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
抱歉哦,仔細套入驗證才知道
這個情況確實會常常發生,導致處理方式太複雜
所以真的決定簡化處理了
################ 我的目的其實就是只有下面兩個 ################
1. 利用 R1A 比較敏感的特性,爭取< 啟動點> 的時效
2. 利用 AR1A 比較穩定的特性,來決定 <結束點>
********************所以就簡化成下方的需求 ********************
1. R1A 突破 30 的當根K棒(不管AR1A了),當成 <作多啟動點> 的開始,此時操作周期數= 1
2. 此操作周期數進行的過程中,AR1A 跌破 10 的當根K棒,當成 <作多結束點> 的開始,此時操作周期數= 0 (直到 下一個啟動點)
3. R1A 跌破 - 30 的當根K棒(不管AR1A了),當成 <作空啟動點> 的開始,此時操作周期數= - 1
4. 此操作周期數進行的過程中,AR1A 突破 -10 的當根K棒,當成 <作多結束點> 的開始,此時操作周期數=0 (直到 下一個啟動點)
##### 請總版主 協助修改 ,指標內涵的部分如果有衝突, 我會自行調校參數 ######
謝謝您
原碼:
進:=(R1A>30 or barpos=0)-(R1A<-30 or barpos=0); 出:=(AR1A<10 or barpos=0)-(AR1A>-10 or barpos=0); NowBS:=0; 操作週期數:C*0; for i=1 to datacount do begin if NowBS=0 and 進[i]<>0 then begin NowBS:=進[i]; 操作週期數[i]:=NowBS; end else if NowBS<>0 then begin if 出[i]=NowBS then NowBS:=0; if NowBS<>0 then 操作週期數[i]:=操作週期數[i-1]+NowBS; end; end;
總版主午安~
以下是我目前的原碼:
___________________________________________________________________________
Bullmust:=MBB>=5 ;
Bearmust:=MBB<=-5 ;    
BullMC:=ref(Bullmust,1)=0 and Bullmust=1;
BearMC:=ref(Bearmust,1)=0 and Bearmust=1;
BullCD:=IF(Bullmust=1,Barslast(BullMC)+1,0);
BearCD:=IF(Bearmust=1,Barslast(BearMC)+1,0);
操作週期數:=IF(Bullmust=1 ,BullCD,- BearCD),color0099ff,precision0,linethick0;
SP:=barslast(操作週期數=0);
買訊1:=cross(MBB,5) and AR1Arate>0 ;
買訊1:=買訊1 and sum(買訊1,SP)=1;
買訊2:=cross(R1A,25) and Between(操作週期數,0,9);
買訊2:=買訊2 and sum(買訊2,SP)=1;
買訊3:=cross(R1A,50) and Between(操作週期數,0,9) ;
買訊3:=買訊3 and sum(買訊3,SP)=1;
賣訊1:=cross(360,R1A) ;
賣訊1:=賣訊1 and sum(賣訊1,SP)=1;
賣訊2:=cross(240,R1A) ;
賣訊2:=賣訊2 and sum(賣訊2,SP)=1;
賣訊3:=cross(120,R1A) ;
賣訊3:=賣訊3 and sum(賣訊3,SP)=1;
賣訊4:=cross(60,R1A) and HHV(R1A,Barslast(SP))>=90;
賣訊4:=賣訊4 and sum(賣訊4,SP)=2;
賣訊5:=cross(0,AR2ARate) and 操作週期數>0 and HHV(R1A,Barslast(SP))<90;
賣訊5=賣訊5 and sum(賣訊5,SP)=2;
__________________________________________________________________
需求一:  三個買訊都必須在 操作週期數 介於 +1 ~+8 才能成立,而且同一個操作週期之內,只能各自成立一次
需求二: 賣訊1~3 也是在同一操作週期數只能各自成立一次為限
需求三: 當該次操作週期進行期間,如果出現 cross(60,R1A),此時必須比對該操作週期 的 R1A 最高值曾經>=90 ,
             此時賣訊4 才算是成立(允許同一操作週期發生兩次),若cross(60,R1A)發生時,R1A 最高只來到 89,
             則此賣訊4不成立
需求四: 當該次操作週期進行期間,如果出現 cross(0,AR2ARate) and 操作週期數>0,此時比對該操作週期 的 R1A 最高值
             曾經>=90,則賣訊5不成立
            如果出現 cross(0,AR2ARate) and 操作週期數>0 時,此時比對該操作週期 的 R1A 最高值<90,則賣訊5成立,同一操作週期內,允許成立兩次為限
***********    以上原碼有點問題,請總版主根據上面四個需求陳述,幫忙修改   **************
感謝
引用:
最初由 tycoon868 發表
總版主午安~
以下是我目前的原碼:
___________________________________________________________________________
Bullmust:=MBB>=5 ;
Bearmust:=MBB<=-5 ;
BullMC:=ref(Bullmust,1)=0 and Bullmust=1;
BearMC:=ref(Bearmust,1)=0 and Bearmust=1;
BullCD:=IF(Bullmust=1,Barslast(BullMC)+1,0);
BearCD:=IF(Bearmust=1,Barslast(BearMC)+1,0);
操作週期數:=IF(Bullmust=1 ,BullCD,- BearCD),color0099ff,precision0,linethick0;
SP:=barslast(操作週期數=0);
買訊1:=cross(MBB,5) and AR1Arate>0 ;
買訊1:=買訊1 and sum(買訊1,SP)=1;
買訊2:=cross(R1A,25) and Between(操作週期數,0,9);
買訊2:=買訊2 and sum(買訊2,SP)=1;
買訊3:=cross(R1A,50) and Between(操作週期數,0,9) ;
買訊3:=買訊3 and sum(買訊3,SP)=1;
賣訊1:=cross(360,R1A) ;
賣訊1:=賣訊1 and sum(賣訊1,SP)=1;
賣訊2:=cross(240,R1A) ;
賣訊2:=賣訊2 and sum(賣訊2,SP)=1;
賣訊3:=cross(120,R1A) ;
賣訊3:=賣訊3 and sum(賣訊3,SP)=1;
賣訊4:=cross(60,R1A) and HHV(R1A,Barslast(SP))>=90;
賣訊4:=賣訊4 and sum(賣訊4,SP)=2;
賣訊5:=cross(0,AR2ARate) and 操作週期數>0 and HHV(R1A,Barslast(SP))<90;
賣訊5=賣訊5 and sum(賣訊5,SP)=2;
__________________________________________________________________
需求一: 三個買訊都必須在 操作週期數 介於 +1 ~+8 才能成立,而且同一個操作週期之內,只能各自成立一次
需求二: 賣訊1~3 也是在同一操作週期數只能各自成立一次為限
需求三: 當該次操作週期進行期間,如果出現 cross(60,R1A),此時必須比對該操作週期 的 R1A 最高值曾經>=90 ,
此時賣訊4 才算是成立(允許同一操作週期發生兩次),若cross(60,R1A)發生時,R1A 最高只來到 89,
則此賣訊4不成立
需求四: 當該次操作週期進行期間,如果出現 cross(0,AR2ARate) and 操作週期數>0,此時比對該操作週期 的 R1A 最高值
曾經>=90,則賣訊5不成立
如果出現 cross(0,AR2ARate) and 操作週期數>0 時,此時比對該操作週期 的 R1A 最高值<90,則賣訊5成立,同一操作週期內,允許成立兩次為限
*********** 以上原碼有點問題,請總版主根據上面四個需求陳述,幫忙修改 **************
感謝
解決了,謝謝
引用:
最初由 tycoon868 發表
解決了,謝謝
| 全部時間均為台灣時間, 現在時間為22:27 | 在這個頁面顯示本主題全部的 20 個文章  | 
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved.