(請教)想問一下這些濾嘴為什麼沒辦法正確過濾。
先附上小弟我的程式碼IIf( MA(C,75) > Ref(MA(C,75),-5), a_1= 1,a_1 = 0);
IIf (MA(C,75) > MA (C,150) > MA(C,300),a_2 =1 ,a_2 = 0);
IIf( MA(V,5)>MA(V,10)>MA(V,15),a_3 =1,a_3 = 0);
IIf( HHV(RSI(30),5) == RSI(30), a_4 =1,a_4 =0);
IIf(RSI(30) >80 AND RSI(60) >50 AND MACD(12,26) >0,a_5 =1,a_5=0);
IIf(ADX(5)>20,a_6 =1 ,a_6 =0);
IIf(C>Ref(C,-1)>Ref(C,-2)>Ref(C,-3),a_7 =1,a_7 =0);
Buy = (a_1 =1AND a_2 =1 AND a_3 =1 AND a_4 =1 AND a_5=1 AND a_6=1 AND a_7=1);
Sell =C< MA(C,10) ;
上面總共有七個濾嘴,然後 a_1 ~ a_7 分別是濾嘴通過與否的開關。
如果滿足這七個濾嘴則下單買進。
我的問題在於 這段程式碼好像跟我上述想要表達的意思有出入耶,因為當我改變濾嘴裡面的條件後,總交易次數並沒有改變,也就是說電腦買進的條件好像不適根據那些濾嘴做決策的,為什麼會這樣子呢 ? 謝謝 ^^
{:4_90:}肯定您的研究精神 本帖最後由 lchardie 於 12-7-25 17:38 編輯
IIf( MA(C,75) > Ref(MA(C,75),-5), a_1= 1,a_1 = 0);
這種寫法看得我都要哭笑不得了
a_1 = MA(C,75) > Ref(MA(C,75),-5) 這才是正確的
請問一下
a_1 = MA(C,75) > Ref(MA(C,75),-5) 表示說 今天的75日MA 如果大於 五天前的75日MA的話那麼 a_1就等於一的意思囉 ?
那麼我寫 IIf( MA(C,75) > Ref(MA(C,75),-5), a_1= 1,a_1 = 0); 這樣應該也是這個意思吧@@? 喔喔 ,我了解了= ="好丟臉。
我都看不懂{:4_120:} 要丟什麼? 一夜輸 發表於 12-7-25 18:23 static/image/common/back.gif
我都看不懂 要丟什麼?
恩~ 不介意的話,丟點打賞的COCO錢好了~上面兩位熱心的大大值得您的鼓勵.
因為你的濾嘴是山寨版的 裡面沒有放棉花...{:4_122:}
裡面沒放棉花的意思是= = ?
我已經把程式碼改成
a_1 = IIf( MA(C,75) > Ref(MA(C,75),-5), 1,0);
a_2 = IIf (MA(C,75) > MA (C,150) > MA(C,300),1 ,0);
a_3 = IIf( MA(V,5)>MA(V,10)>MA(V,15),1,0);
a_4 = IIf( HHV(RSI(30),5) == RSI(30), 1,0);
a_5 = IIf(RSI(30) >80 AND RSI(60) >50 AND MACD(12,26) >0,1,0);
a_6 = IIf(ADX(5)>20,1 ,0);
a_7 = IIf(C>Ref(C,-1)>Ref(C,-2)>Ref(C,-3),1, 0);
a_8 = IIf( a_1 =1AND a_2 =1 AND a_3 =1 AND a_4 =1 AND a_5=1 AND a_6=1 AND a_7=1,1,0);
Buy = a_8 ;
Sell =C< MA(C,10) ;
但是結果好像還是沒變耶,為什麼呢 @@? hulk10425 發表於 12-7-27 12:10 static/image/common/back.gif
裡面沒放棉花的意思是= = ?
我已經把程式碼改成
大大 濾嘴應該是指抽菸的東西,我是沒有抽菸啦
---
在AB裡
Condition = 條件;
如果有符合條件時,就會回傳 true 了
所以不用再用 iif( 某條件, 1,0); 來傳了
ex.
a_1 = MA(C,75) > Ref(MA(C,75),-5);
a_2 = MA(C,75) > MA (C,150) > MA(C,300);
a_3 = MA(V,5)>MA(V,10) AND MA(V,10)>MA(V,15);
a_4 = HHV(RSI(30),5) == RSI(30);
a_5 = RSI(30) >80 AND RSI(60) >50 AND MACD(12,26) >0;
a_6 = ADX(5)>20;
a_7 = C>Ref(C,-1)>Ref(C,-2) AND Rec(C,-2)>Ref(C,-3);
buy = a_1 and a_2 and a_3 and a_4 and a_5 and a_6 and a_7;
short = C<MA(C,10);
---
再來就是如果要跑 AB 的 analysis
記得 buy, short, cover, sell 這四個條件都要寫入語法裡
才可以做 back test
ex.
Buy = 買進條件;
Short =賣出條件;
Sell = Short;
Cover = Buy;
Buy = ExRem(Buy,Short);
Short = ExRem(Short,Buy);
---
如果您的這些條件是要跑程式交易
既便是回測績效很好看,也不能用
有很多地方要注意
1. C > 某值,或是某 MA 大於 某 MA
這類的條件式,在盤中上述數值都是即時跳動的
可能上一秒符合,下一秒不符合
訊號就會跳來跳去,這樣必須再加一個當根K棒完成後才動作的判斷
2. iif( conditionA, conditionB, 1, 0);
這個於法只會在當根K達到條件時 為 1
下根K 時,會回傳為 0
這點 AB 和 您可能之前使用的 TS/MC/HTS 有很大差異
使用上要注意一下是否是自己想要的結果
---
參考看看了
hulk10425 發表於 12-7-27 12:10 static/image/common/back.gif
裡面沒放棉花的意思是= = ?
我已經把程式碼改成
我有點好奇, 您這個程式碼能通知語法檢查嗎? (AB 的 Formula Editor 的工具列, 按 "AFL 紅色打勾" 那個圖示)
kilroy 發表於 12-7-27 13:07 static/image/common/back.gif
大大 濾嘴應該是指抽菸的東西,我是沒有抽菸啦
---
感謝!!!獲益良多 ORZ
頁:
[1]